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