12 template Tuple(T...) { alias Tuple = T; }
16 static assert( __traits(isTemplate, Foo));
17 static assert(!__traits(isTemplate, Foo!int));
18 static assert(!__traits(isTemplate, main));
20 static assert( __traits(isTemplate, Bar));
21 static assert(!__traits(isTemplate, Bar!int));
22 static assert( __traits(isTemplate, Bar!(int).Doo));
23 static assert(!__traits(isTemplate, Bar!(int).Doo!int));
25 alias Tup = Tuple!(Foo, Foo!int, Bar, Bar!int, Bar!(int).Doo, Bar!(int).Doo!int);
27 static assert( __traits(isTemplate, Tup[0]));
28 static assert(!__traits(isTemplate, Tup[1]));
29 static assert( __traits(isTemplate, Tup[2]));
30 static assert(!__traits(isTemplate, Tup[3]));
31 static assert( __traits(isTemplate, Tup[4]));
32 static assert(!__traits(isTemplate, Tup[5]));
37 void foo_over(T : int)(T) { }
38 void foo_over(T : float)(T) { }
39 static assert(__traits(isTemplate, foo_over));
43 void bar_over(int) { }
44 static assert(!__traits(isTemplate, bar_over));
46 /// alias to overloads
47 alias a_foo_over = foo_over;
48 static assert(__traits(isTemplate, a_foo_over));
51 alias a_bar_over = bar_over;
52 static assert(!__traits(isTemplate, a_bar_over));