Although the usage is a bit dubious, name lookup of the identifier after a nested-name-specifier should not find a template parameter name. But it does, seemingly only for a template template parameter. template< typename > struct b {}; template< template< typename > class b > struct d : b< int > { using d::b< int >::b; }; template struct d< b >;
Never mind; I was missing a template keyword after the nested-name-specifier. NEEDS MOAR TEMPLATE!