/* TEST_OUTPUT: ---- fail_compilation/ice12727.d(16): Error: template instance `IndexTuple!(1, 0)` recursive template expansion fail_compilation/ice12727.d(16): Error: alias `ice12727.IndexTuple!(1, 0).IndexTuple` recursive alias declaration fail_compilation/ice12727.d(23): Error: template instance `ice12727.IndexTuple!(1, 0)` error instantiating fail_compilation/ice12727.d(27): instantiated from here: `Matrix!(float, 3)` fail_compilation/ice12727.d(28): instantiated from here: `Vector!(float, 3)` ---- */ template IndexTuple(int e, int s = 0, T...) { static if (s == e) alias IndexTuple = T; else alias IndexTuple = IndexTuple!(e); } struct Matrix(T, int N = M) { pure decomposeLUP() { foreach (j; IndexTuple!(1)) {} } } alias Vector(T, int M) = Matrix!(T, M); alias Vector3 = Vector!(float, 3);