http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59498
--- Comment #1 from Roy Crihfield <rscrihf at gmail dot com> --- Getting the same behavior on 4.9.0 as stable release. Rewriting the code to use a struct succeeds: template <typename T, typename ...> struct alias { using type = T; }; template <typename ...T> using variadic_alias = typename alias<T...>::type;