invariant/const class storage class
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Wed Oct 1 18:54:02 PDT 2008
Simen Kjaeraas wrote:
> On Thu, 02 Oct 2008 03:46:00 +0200, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>
>> Simen Kjaeraas wrote:
>>> On Wed, 01 Oct 2008 16:23:32 +0200, Yigal Chripun
>>> <yigal100 at gmail.com> wrote:
>>>
>>>> Andrei Alexandrescu wrote:
>>>>> Yigal Chripun wrote:
>>>>>> Walter Bright wrote:
>>>>>>> Simen Kjaeraas wrote:
>>>>>>>> Is this really correct behavior? How then are we supposed to
>>>>>>>> initialize our
>>>>>>>> invariant objects?
>>>>>>> Currently, create them as mutable ones, then cast them to invariant.
>>>>>>
>>>>>> I understand casting as breaking the type system. shouldn't there
>>>>>> be a
>>>>>> way to create invariant objects without the cast?
>>>>>> an invariant constructor seems a good way to solve this. any plans on
>>>>>> adding such a feature to D2?
>>>>>
>>>>> There are plans.
>>>>>
>>>>>> I think it can work like this:
>>>>>>
>>>>>> class A {
>>>>>> this(params) {} // [1]
>>>>>> invariant this(params) {} // [2]
>>>>>> }
>>>>>>
>>>>>> // create a mutable object - will use type [1] c-tors.
>>>>>> auto a = new A(params);
>>>>>>
>>>>>> // create an invariant object - will use type [2] c-tors.
>>>>>> invariant a = new A(params);
>>>>>>
>>>>>> // create a const object - will use type [1] or [2] c-tors.
>>>>>> const a = new A(params);
>>>>>>
>>>>>> in the const case, if there are two c-tors which only differ by
>>>>>> invariant-ness of the c-tor using either will create ambiguity and
>>>>>> therefore should be a compile-time error.
>>>>>
>>>>> Way, way, way more complicated than this.
>>>>>
>>>>> Andrei
>>>>
>>>> May I ask what are the complications?
>>> "Mortis Portalis Tackulatum - and he's still breathing"...
>>
>> Tackulatum? Was that tacitum?
>>
>> Andrei
>>
>
> From Terry Pratchett's 'Pyramids'.
>
> Doctor: "Fairly straightforward. A case of mortis portalis tackulatum
> with complications."
> Chidder: "What's that mean?"
> Doctor: "In laymen's terms, he's as dead as a doornail."
> Chidder: "What are the complications?"
> Doctor: "He's still breathing."
Heh. Funny, but what's the link?
Andrei
More information about the Digitalmars-d
mailing list