This compiles but it should give a CT error since x[4] is out of bounds: import std.typetuple; void main() { alias TypeTuple!(int) x; static if (is(x[4] == int)) { } } This correctly gives the error message, 'int' and 'x[4]' just swapped places: import std.typetuple; void main() { alias TypeTuple!(int) x; static if (is(int == x[4])) { } } test.d(17): Error: tuple index 4 exceeds 1
Timon Gehr: Actually it is according to the specification: "3. is ( Type == TypeSpecialization ) The condition is satisfied if Type is semantically correct and is the same type as TypeSpecialization." => TypeSpecialization is compiled without suppressing errors.