On Saturday, 12 September 2015 at 15:49:23 UTC, Atila Neves wrote:
On Saturday, 12 September 2015 at 15:13:27 UTC, Robert wrote:
Hi all,
I came across this example, and wondered what your thoughts on
it are:
```
void main(string[] args)
{
struct Foo(float f) {
alias VAL = f;
float getF() {
return f;
}
}
Foo!(float.nan) f;
Foo!(float.nan) f2;
// This will fail at compile time
static assert(f.VAL == f2.VAL);
// This will fail at run time
assert(f.getF() == f2.getF());
// But this is ok
f = f2;
}
```
It seems a little unusual to me.
Robert
What do think is unusual?
Atila
It's unusual, because `float.nan != float.nan`, so one might
expect that `typeof(Foo!(float.nan) != Foo!(float.nan))`, whereas
this is clearly not the case, even with both the static assert
and runtime assert failing. I'm just curious to understand the
reasoning behind this, whether it's intentional, and whether it
matters at all.