I run into a problem with unpacking variadic templates into a template alias.
The following code works with Clang 3.4 and GCC 4.8 but fails with GCC 4.9:
It was reported in gcc4.9 bugzilla:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59498
Minimal code to reproduce
template <typename T, typename ...>
using alias = T;
template <typename ...T>
using variadic_alias = alias<T...>;
using Fail = variadic_alias<int>;
int main() { }
From the explanation from gcc folks - it is not so obvious this is a real bug. This is still discussion held in gcc bugzilla and in DR 1430 (http://open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1430) - summary in now in the question above.