On 2009-12-13 04:29:28 -0800, Steven Schveighoffer <[email protected]> said:
Richard Webb Wrote:
Hi,
I mentioned this problem in the thread @
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=18405
I
ran into the rvalue problem while trying to get Juno to compile, and
found that it builds ok if you declare both
bool opEquals(const ref Foo rhs) const
and
bool opEquals(Foo rhs) const
Note the resulting bug: http://d.puremagic.com/issues/show_bug.cgi?id=3607
I also don't believe Richard's workaround is a "solution". The
compiler should not force you to create a const ref version if the
argument can be implicitly cast from const to mutable.
-Steve
I don't know if I buy that the opEquals thing is a bug. However,
that const destructor thing in the other thread needs to be fixed.
////////////////////////////////
struct Foo
{
~this()
{
}
}
void Bar()
{
const Foo f;
}
////////////////////////////////
Definitely produces incorrect behavior.