// https://issues.dlang.org/show_bug.cgi?id=751 // Compiler segfault on template expansion extern(C) int printf(const char*, ...); template TypeTuple( TList... ) { alias TList TypeTuple; } template IndexOf( T, TList... ) { static if( TList.length == 0 ) const size_t IndexOf = 1; else static if( is( T == typeof( TList[0] ) ) ) const size_t IndexOf = 0; else const size_t IndexOf = 1 + IndexOf!( T, (TList[1 .. $]) ); } void main() { TypeTuple!(int, long) T; printf( "%u\n", cast(uint)IndexOf!(long, T) ); }