What's the correct opEquals signature for structs?

Alex Rønne Petersen xtzgzorex at gmail.com
Tue Mar 13 11:31:45 PDT 2012


On 13-03-2012 19:28, Johannes Pfau wrote:
> My std.uuid module doesn't compile with the latest dmd. I guess it's
> because of a wrong opEquals signature, this is what I have now:
>
> ----------
> @safe pure nothrow bool opEquals(ref const UUID s) const
> {
>      return s.data == this.data;
> }
> ----------
>
> and
>
> ----------
> assert(UUID("00000000-0000-0000-0000-000000000000") == nilUUID);
> ----------
> The complete code is here:
> https://github.com/jpf91/phobos/blob/std.uuid/std/uuid.d
>
> What's the best way to solve this issue?

Welcome to opEquals/opCmp/toHash hell. ;)

Try removing the ref on the parameter.

(Stylistic note: use equals_t instead of bool.)

-- 
- Alex


More information about the Digitalmars-d-learn mailing list