struct Container(T) { // T.sizeof/alignof causes circular reference! enum AllocAlignment = T.sizeof; T* ptr; } struct Test { Container!Test test; } error : struct `main.Test` no size because of forward reference error : template instance `main.Container!(Test)` error instantiating Checking T.sizeof causes a forward referencing error; but it doesn't need to evaluate that enum to determine the size of `Container!T` which has a know-able size with no T knowledge... evaluation should be deferred.