I am allowed to create a type tuple of function templates, but then it seems I am not allowed to use a static foreach on that type tuple: template TypeTuple(TList...) { alias TList TypeTuple; } int foo(T)(T x) { return 0; } void main() { alias TypeTuple!(foo, foo) t2; static assert(t2[0](0) == 0); // OK static assert(t2[1](0) == 0); // OK foreach (t; t2) {} // Error } DMD 2.052 shows: test.d(11): Error: variable test.main.t voids have no value test.d(11): Error: template foo(T) has no value test.d(11): Error: variable test.main.t voids have no value test.d(11): Error: template foo(T) has no value See also bug 2411
https://github.com/D-Programming-Language/dmd/pull/405
https://github.com/D-Programming-Language/dmd/commit/fb3e7b117ea6b13ec45bcc80801ab6fed2fbdd4c https://github.com/D-Programming-Language/dmd/commit/ca4cb397a585dbcf03730cc909d7e57cae6e7bc2