[Issue 3433] [tdpl] Comparing structs for equality is not member-by-member

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Nov 14 06:10:10 PST 2009


http://d.puremagic.com/issues/show_bug.cgi?id=3433



--- Comment #6 from Andrei Alexandrescu <andrei at metalanguage.com> 2009-11-14 06:10:08 PST ---
(In reply to comment #5)
> This has some tricky points. The first is that it's recursive. As well as
> structs, it also applies to fixed-length arrays: if either contains a struct
> with an opEquals, the entire struct must be compared member-by-member; and this
> check must be performed recursively.

Correct - more precisely, transitive for direct fields. I think the comparison
should simply call a template object.structCompare that we define as a library
function.

> Secondly, what happens with unions?
> 
> struct Rectangle {
>    union {
>       Point leftBottom;
>       int problematic;
>    }
> }
> I think this should probably be an error.

I think so too.

> The third difficult part relates to protection. Any of the struct members may
> be private and defined in a different module.
> 
> If a field in the struct is a class, it probably applies to it as well.

I'm not sure how to address this.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list