Getting the const-correctness of Object sorted once and for all

deadalnix deadalnix at gmail.com
Mon May 14 12:45:30 PDT 2012


Le 14/05/2012 21:24, Steven Schveighoffer a écrit :
> On Mon, 14 May 2012 13:08:06 -0400, Tove <tove at fransson.se> wrote:
>
>> On Monday, 14 May 2012 at 16:53:24 UTC, Timon Gehr wrote:
>>> On 05/14/2012 06:10 AM, Chris Cain wrote:
>>>> On Monday, 14 May 2012 at 02:57:57 UTC, Mehrdad wrote:
>>>>> The problem is that it's unavoidable.
>>>>>
>>>>> i.e. you can't say "don't mark it as const if it isn't const",
>>>>> because, practically speaking, it's being forced onto the programmers
>>>>> by the language.
>>>>
>>>> You're really against const in this language, huh?
>>>>
>>>
>>> I guess this is not the most important point.
>>> He has been trying to use const like in OO-ish C++.
>>> This just does not work, because D const is detrimental to OO
>>> principles when used that way.
>>> The proposal is about _enforcing_ C++-like usage of const.
>>
>> but c++ has the 'mutable' keyword as an easy escape route... which
>> saved me a bunch of times... guess one can emulate it with a
>> library-solution using nested classes? But... what about structs?
>>
>> class Outer
>> {
>> int i = 6; // mutable
>>
>> class Inner {
>> int y=0;
>>
>> int foo() const
>> {
>> // ++y; // fail
>> return ++i; // look ma, mutable const
>> }
>> }
>> Inner inner;
>> this()
>> {
>> inner = new Inner;
>> }
>> alias inner this;
>> }
>
> I have never seen this suggested before. I would guess that it might be
> considered a bug, since you are accessing the outer instance via a pointer
> contained in the inner instance.
>
> But I like the approach (even if it is a bug)!
>
> -Steve

Yes, you have similar bugs with delegates. This is a problem.


More information about the Digitalmars-d mailing list