http://dpaste.com/3FH3W13
Also, I would be wary of lazy initialization. We have bad experiences with it for AAs and standard containers. A typical example would be:
void foo(Wrapper w)
{
...
w.doTheThing();
...
}
void main()
{
Wrapper w;
foo();
w.inspect(); // `w` is still a null reference here
}
