How do I create a module-local immutable class object?

Timon Gehr timon.gehr at gmx.ch
Fri Sep 9 14:44:10 PDT 2011


On 09/09/2011 11:42 PM, Jonathan M Davis wrote:
> On Friday, September 09, 2011 17:37:26 bearophile wrote:
>> Andrej Mitrovic:
>>> I need to have an object which is initialized only once, so I thought
>>> I could use immutable for that. But I can't do this:
>>>
>>> private class Foo {}
>>> immutable Foo foo;
>>>
>>> static this()
>>> {
>>>
>>>      foo = new Foo;
>>>
>>> }
>>>
>>> void main() {}
>>
>> private class Foo {}
>> immutable Foo foo1;
>>
>> static this() {
>>      foo1 = new immutable(Foo);
>> }
>>
>> void main() {
>>      auto foo2 = new immutable(Foo);
>> }
>
> But make the constructor shared. Otherwise, it gets initialized once per
> thread in spite of the fact that immutable is implicitly shared.

Shouldn't the compiler catch this?





More information about the Digitalmars-d-learn mailing list