On Friday, 14 March 2014 at 16:25:59 UTC, Etienne wrote:
Struct.init is unreliable now in my books. Thanks!

Interestingly:

struct A{
        int a;
        double b;
}

void main() {
        A a;
        assert(a is A.init); // passes
        assert(a == A.init); // fails

        double test;
        assert(test is double.nan); // fails
}


I struct == other_struct works basically by checking the equality operator on each member inside.

So that is like saying assert(a.a == A.init.a && b.a ==B.init.b) which fails cuz of the nan rule.


Whereas struct is other_struct works by just comparing the memory bytes, regardless of the types of the contents. If they match, it is considered a pass, which will always be the case for comparing against init.

Reply via email to