Inheritance of purity

Timon Gehr timon.gehr at gmx.ch
Sat Feb 18 13:18:49 PST 2012


On 02/18/2012 10:06 PM, deadalnix wrote:
> Le 18/02/2012 16:04, Timon Gehr a écrit :
>> For them, it is certainly safe. It is questionable how large the
>> effective benefit is for const, since the const qualifier would be
>> inherited for the method only, but not for its parameters.
>>
>
> The const qualifier does NEVER qualify a function. This is a
> misconception.

I don't care whether or not it is a misconception. It is how the 
language is defined. If you want to change this, file an enhancement 
request.

> In what we call const function, what is const is the
> hhidden parameter "this", not the function.

Both are const. Ask the compiler.

struct S{
     void foo()const{
         static assert(is(typeof(this)==const));
         static assert(is(typeof(foo)==const));
     }
}

In fact, the incident that the method is const is what enables 
contravariant overriding of mutable/immutable by const methods. (This is 
not supported for the explicit formal parameter types.)


More information about the Digitalmars-d mailing list