On Wed, 30 Dec 2009 23:44:16 +0100, Steven E. Harris <[email protected]> wrote:

Andrei Alexandrescu <[email protected]> writes:

I think opEquals for classes is at fault for requiring const.

Something seems different from C++'s const here. One can always call a
const member function on a class instance in C++, regardless of whether
the instance is referred to through a const or non-const reference. Is
this bug saying that you can't call a const member function through a
non-const reference to an instance?

Or maybe it's complaining that your opEquals() declaration isn't const?
If it's declared non-const, can one then not call it through a const
reference to an instance? That would be bad.


Anything is implicitly castable to const in D, so it's the latter. This
is correct D:

struct foo {
  bool opEquals( const ref foo rhs ) const {
    return true;
  }
}

As long as that function is defined though, one may add as many other
opEquals signatures as one fancies.

--
Simen

Reply via email to