On 2009-12-30 17:44:16 -0500, "Steven E. Harris" <[email protected]> said:

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.

The thing is that const is transitive in D. That and you can't make a variable mutable in a const object; you can in C++ with the mutable keyword. So you want to use const only when you know you won't change anything through that reference.

--
Michel Fortin
[email protected]
http://michelf.com/

Reply via email to