Ary Borenszweig Wrote: > > You can do this: > > template TFoo() { > // Never use this variable directly :-P > SomeObject _s_o; > > SomeObject s_o() { > if (_s_o is null) > _s_o = new SomeObject(); > return _s_o; > } > > // And if you want to make it assignable too > SomeObject s_o(SomeObject x) { > _s_o = x; > } > > void bar() { > s_o.x = 10; > // code > // ... > } > }
Well I ended up converting my object to a struct, which solved the issue. Your solution would probably work, but for what I'm doing, I'd rather not incur the overhead of a branch and (possible) function call for every access of the object. It seems like object initialization outside of a method should be magically moved to the top of the constructor. But ah well. Thank you.