/* TEST_OUTPUT: --- fail_compilation/fail337.d(13): Error: static assert `0` is false fail_compilation/fail337.d(26): instantiated from here: bar!() fail_compilation/fail337.d(33): 100 recursive instantiations from here: foo!196 fail_compilation/fail337.d(41): 253 recursive instantiations from here: baz!300 --- */ template bar() { static assert(0); } template foo(int N) { static if (N > 0) { static if (N & 1) alias foo!(N - 3) foo; else alias foo!(N - 1) foo; } else alias bar!() foo; } template baz(int M) { static if (M < 50) { alias foo!(M * 4) baz; } else alias baz!(M - 1) baz; } void main() { int x = baz!(300); }