https://issues.dlang.org/show_bug.cgi?id=16107
--- Comment #1 from b2.t...@gmx.com --- definition of Foo can be reduced to class Foo { alias TreeItemType = typeof(this); TreeItemSiblings!TreeItemType _siblings; // remove this decl TreeItemChildren!TreeItemType _children; // or this one : OK } The content was initially a mixin template, which explains why it was incoherant...anyway still the ICE. --