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.