digitalmars.D.learn - struct opEquals does not work with parameter of same type - bug or feature?
- Sean Eskapp (26/26) Aug 29 2011 I am trying to build a struct with equality testing, using this code:
- Jonathan M Davis (4/38) Aug 29 2011 http://d.puremagic.com/issues/show_bug.cgi?id=3659
- Sean Eskapp (2/40) Aug 29 2011 Ah, thanks!
I am trying to build a struct with equality testing, using this code: struct Foo { const bool opEquals(Foo f) { return true; } } This gives me the error that the parameter should be of type "ref const Foo". Fine. struct Foo { const bool opEquals(ref const Foo f) { return true; } } This, however, does not work with code like: Foo bar() { return Foo(); } assert(Foo() == bar()); "function Foo.opEquals(ref const const(Foo) f) const is not callable using argument types (Foo)" and "bar() is not an lvalue". How can I do this?
Aug 29 2011
On Monday, August 29, 2011 22:41:26 Sean Eskapp wrote:I am trying to build a struct with equality testing, using this code: struct Foo { const bool opEquals(Foo f) { return true; } } This gives me the error that the parameter should be of type "ref const Foo". Fine. struct Foo { const bool opEquals(ref const Foo f) { return true; } } This, however, does not work with code like: Foo bar() { return Foo(); } assert(Foo() == bar()); "function Foo.opEquals(ref const const(Foo) f) const is not callable using argument types (Foo)" and "bar() is not an lvalue". How can I do this?http://d.puremagic.com/issues/show_bug.cgi?id=3659 http://stackoverflow.com/questions/6986175/const-ref-and-rvalue-in-d - Jonathan M Davis
Aug 29 2011
== Quote from Jonathan M Davis (jmdavisProg gmx.com)'s articleOn Monday, August 29, 2011 22:41:26 Sean Eskapp wrote:Ah, thanks!I am trying to build a struct with equality testing, using this code: struct Foo { const bool opEquals(Foo f) { return true; } } This gives me the error that the parameter should be of type "ref const Foo". Fine. struct Foo { const bool opEquals(ref const Foo f) { return true; } } This, however, does not work with code like: Foo bar() { return Foo(); } assert(Foo() == bar()); "function Foo.opEquals(ref const const(Foo) f) const is not callable using argument types (Foo)" and "bar() is not an lvalue". How can I do this?http://d.puremagic.com/issues/show_bug.cgi?id=3659 http://stackoverflow.com/questions/6986175/const-ref-and-rvalue-in-d - Jonathan M Davis
Aug 29 2011