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