On Wed, 09 Mar 2011 12:15:26 -0500, SiegeLord <[email protected]> wrote:
Steven Schveighoffer Wrote:
It's a mis-designed feature of structs. There is a bug report on it:
http://d.puremagic.com/issues/show_bug.cgi?id=3659
It worked fine in D1. Or did you mean that the mis-designed feature is
the const system?
No, the mis-designed feature is the compiler requiring that specific
signature in D2. Const is not the mis-designed feature.
It works in D1 because D1 doesn't generate intelligent opEquals for
structs that do not have them, it just does a bit compare.
For example, if you did this in D1, it fails the assert:
struct S
{
string name;
}
void main()
{
S s1, s2;
s1.name = "hello".dup;
s2.name = "hello".dup;
assert(s1 == s2); // fails in D1, should pass on D2.
}
-Steve