module baz; template Foo(alias T) { mixin T.Baz!(); } template Bar(U) { template Baz( ) { U n; } } void main( ) { mixin Foo!(Bar!int); } Yields the error messages: baz.d(9): Error: undefined identifier U, did you mean variable n? baz.d(4): Error: mixin baz.main.Foo!(__T3BarTiZ).Baz!() error instantiating baz.d(14): Error: mixin baz.main.Foo!(__T3BarTiZ) error instantiating
Simplified example showing template template parameters are unnecessary to trigger this bug: template Bar(T) { template Baz() { T n; } } unittest { // Works. Bar!int.Baz!().n = 3; // Fails: foo.d(3): Error: undefined identifier T mixin Bar!int.Baz!(); }
Fixed in 2.087.1.