http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51593
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-12-16 22:48:40 UTC --- This works: using type = typename wrap<T>::template type<T>; Which seems correct as you need to say "wrap<T>::template type<T>" is a type.