default '==' on structs
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Wed Feb 2 07:20:53 PST 2011
On Wed, 02 Feb 2011 15:55:53 +0100, spir wrote:
> Hello,
>
> What are the default semantics for '==' on structs?
>
> I ask this because I was forced to write opEquals on a struct to get
> expected behaviour. This struct is basically:
>
> struct Lexeme {
> string tag;
> string slice;
> Ordinal index;
> }
>
> Equal Lexeme's compare unequal using default '=='. When I add:
>
> const bool opEquals (ref const(Lexeme) l) {
> return (
> this.tag == l.tag
> && this.slice == l.slice
> && this.index == l.index
> );
> }
>
> then all works fine. What do I miss?
I think the compiler does a bitwise comparison in this case, meaning that
it compares the arrays' pointers instead of their data. Related bug
report:
http://d.puremagic.com/issues/show_bug.cgi?id=3433
-Lars
More information about the Digitalmars-d-learn
mailing list