Logical const

Walter Bright newshound2 at digitalmars.com
Tue Nov 30 13:05:16 PST 2010


Steven Schveighoffer wrote:
> On Tue, 30 Nov 2010 15:16:04 -0500, Walter Bright 
> <newshound2 at digitalmars.com> wrote:
> 
>> Steven Schveighoffer wrote:
>>> The example that I gave does not seem to you like it would surprise 
>>> someone?  I passed in a const object and it got modified, even though 
>>> no casts were used.
>>
>> No, it doesn't surprise me. Const on one object does not apply to 
>> another object.
> 
> So this:
> 
> void myfn(const(C) n)
> {
>    assert(n.x == 1);
>    n.foo();
>    assert(n.x == 5);
> }
> 
> Wouldn't be surprising to you?

No. There are a lot of things a member "x" could be. The const only applies to 
the instance data.


More information about the Digitalmars-d mailing list