On Saturday, June 09, 2012 09:34:51 Johannes Pfau wrote: > I think the changes to opEquals were rolled back, but what are the > correct signatures for opEquals and opCmp now?
For the moment, the correct way is to declare two overloads, both with const parameters, with one being ref: bool opEquals(const S rhs) @safe const pure nothrow {...} bool opEquals(const ref S rhs) @safe const pure nothrow {...} and int opCmp(const S rhs) @safe const pure nothrow {...} int opCmp(const ref S rhs) @safe const pure nothrow {...} You _might_ get away with not having the ref version, I don't know, but you need the non-ref version, and if you don't make it const but you do make the ref version const, then you're going to have problems (especially if you have the non-ref version call the ref version as is likely the case - you'd get infinite recursion). - jonathan M Davis