What's wrong in this templatized operator overload ?

MobPassenger via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Oct 22 02:33:32 PDT 2015


On Thursday, 22 October 2015 at 05:17:29 UTC, Cauterite wrote:
> On Thursday, 22 October 2015 at 04:25:01 UTC, MobPassenger 
> wrote:
>> On Thursday, 22 October 2015 at 04:01:16 UTC, Mike Parker 
>> wrote:
>>> On Thursday, 22 October 2015 at 03:19:49 UTC, MobPassenger 
>>> wrote:
>>>> code:
>>>> ---
>>>> struct Foo
>>>> {
>>>>     bool opIn_r(T)(T t){return false;}
>>>> }
>>>>
>>>
>>> This needs to be marked with const:
>>>
>>> struct Foo
>>> {
>>>     bool opIn_r(T)(T t) const {return false;}
>>> }
>>
>> what's the rationale ? what's guaranteed by the qualifier 
>> that's not already true without const ?
>
> `const` just means the function won't mutate the object. 
> `const` functions can be safely called on mutable, const and 
> immutable objects. Non-`const` functions can only be called on 
> mutable objects.

Thx for the explanations. By the way I knew that when const is 
applied to the return type it has to be surrounded between parens 
but so far I've never encountered the other case...And now I also 
remember why this attribte should rather be put at the right of 
the function declaration.


More information about the Digitalmars-d-learn mailing list