--- struct S { int* p, p2; } int f() { assert(S().p == null); // passes assert(!S().p); // passes assert(S().p == S().p2); // passes auto s = S(); assert(!s.p); // passes, note: `s.p` also passes assert(s.p == null); // fails assert(s.p == s.p2); // fails return 0; } int g() { auto s = S(); assert(s.p); // passes but should fail return 0; } void t()() { enum e = g(); } // const for D1 static assert(f() == 0); // static assert is in a function because of @@@BUG3448@@@ aka @@@BUG965@@@ void f3448() { static assert(!__traits(compiles, t!()())); } // is(typeof()) for D1 ---
https://github.com/D-Programming-Language/dmd/commit/51bc588d2e834650e5278247cd06b5da36569feb https://github.com/D-Programming-Language/dmd/pull/602