Can't assign to static array in ctor?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Apr 10 06:57:45 PDT 2012


On 4/10/12 4:04 AM, bearophile wrote:
> Andrei Alexandrescu:
>
>> I'll note that fixing this bug is more difficult than it might seem,
>> particularly when immutable members and immutable constructors come into
>> play.
>>
>> Some flow control is needed. At start each member variable of the object
>> starts in a "raw" state. The constructor code progressively assigns to
>> members, putting them in a "cooked" state.
>>
>> Although the syntax looks like assignment, the constructors should be
>> called for struct members.
>>
>> A "cooked" member cannot be assigned to again.
>>
>> No function call that takes this (including members) is allowed until
>> all members have become "cooked".
>>
>> If the constructor was const or immutable, the object effectively
>> becomes const or immutable exactly at the point all members are
>> "cooked". At that point in the constructor, the object or its members
>> can be passed to functions.
>
> That reminds me of this approach to implement non-nullables:
> http://research.microsoft.com/pubs/67461/non-null.pdf

Yes, that's our source of inspiration for cooked/raw.

Andrei


More information about the Digitalmars-d mailing list