On Tuesday, 5 August 2014 at 15:39:55 UTC, sigod wrote:
On Saturday, 2 August 2014 at 06:46:04 UTC, Jonathan M Davis via Digitalmars-d-learn wrote:
On Fri, 01 Aug 2014 23:09:37 +0000
sigod via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:

Code: http://dpaste.dzfl.pl/51bd62138854
(It was reduced by DustMite.)

Have I missed something about structs? Or this simply a bug?

Don't do this with a member variable:

private Node * _root = new Node();

Directly initializing it like that sets the init value for that struct, and that means that every struct of that type will have exactly the same value for _root, so they will all share the same root rather than having different
copies. You need to initialize _root in the constructor.

- Jonathan M Davis

So, it's a static initialization? Documentation didn't mention it. (In class' section only 2 sentences about it and none in struct's section.)

This is different from many languages (C#, Java... don't know about C and C++). What was the reason to make this initialization static?

It's a consequence of the fact that every type in D has a default initializer which is known at compile time.

Reply via email to