From: "Nick Sabalausky" <[email protected]>
From: "Nick Sabalausky" <[email protected]>
From: "Nick Sabalausky" <[email protected]>
Was something changed with struct opCmp, or its signature, or "const"
params? Because I'm getting some "wrong argument type" errors comparing
some structs that use opCmp. I'll try to dig further into it and get a
test case...
Regression(2.059 Beta): struct opEquals broken
http://d.puremagic.com/issues/show_bug.cgi?id=7833
Ok, a reply in there mentioned that's not actually a bug. But, the
changelog *really* should state prominently under "changed features" that:
1. Struct literals are no longer lvalues.
and
2. Things like opCmp/opEquals/etc in a struct now need an overload with
non-const non-ref params in order to continue working with struct
literals.
Maybe I'm biased since I ran head-first into it, but I'm betting that'll
confuse the crap out of many people if it's not clearly mentioned under
"changed features".
So I've renamed the issue:
[2.059 Beta] Changelog should clearly mention struct
literal/opCmp/opEquals changes
http://d.puremagic.com/issues/show_bug.cgi?id=7833
See, now here's a problem though:
I add a non-ref non-const overload to those functions to make them work with
struct literals on 2.059, and it works. But then 2.058 bitches it doesn't
know which overload to use. I could do a static if on the compiler version,
but that's DMD-specific - what about LDC and GDC?
I'm not necessarily saying that struct literals should be lvalues, but how
am I supposed to reasonably make a program work on both 2.058 and 2.059?
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta