template<typename... TArgs> struct List { }; template<template<typename...> class> struct ListHelper; template<typename T,typename... TArgs> struct ListHelper<List<T,TArgs...>> { }; ^ /*Error: Template argument for template template parameter must be a class template or type alias template*/
怎么了?我正在使用clang SVN.
解决方法
您有一个模板模板参数.您必须传递模板作为其参数.您将模板实例化作为其参数传递 – 这是一个具体的类,而不是模板(它的所有参数都被绑定).
考虑:
template <template<typename> typename X> class WantsTemplate {}; template <typename> class ATemplate {}; WantsTemplate<ATemplate> wt1; // OK WantsTemplate<ATemplate<int> > wt2; // not OK