Works --- mixin template foo(bool b) { int _impl() { writeln(b); return int.init; } int _ipml2 = _impl(); } void main() { mixin foo; } --- doesn't --- mixin template foo(bool b) { writeln(b); } void main() { mixin foo; } --- see https://forum.dlang.org/post/txcblywfkrhpxnsbfydk@forum.dlang.org for the discovery of this idiom