This makes the compiler crash. Is it illegal code? struct List { private List* head; private List* tail; this(int x) { head = null; tail = &this; // <-- crasher } } List2 ls = 2;