模板模板参数中的参数无效

Invalid argument in template template parameter

本文关键字:参数 无效      更新时间:2023-10-16

我正在尝试这个简单的template template parameter示例:

template <typename T, template <typename> class Cont>
class Stack {
    //...
  private:
    Cont<T> s_;
};

int main(){
    Stack<int,std::vector> aStack1;
}

当我尝试编译编译器时,抱怨:error type mismatch at argument 2 in template parameter list...

我是否有错误,或者问题出在我的编译器版本中?我在Windows上使用g++和Mingw

这是因为

,尽管有默认参数,std::vector 有 2 个模板参数 ( template < class T, class Alloc = allocator<T> > )。以下代码工作正常:

#include <vector>
template <typename T, template <typename> class Cont>
class Stack {
    //...
  private:
    Cont<T> s_;
};
template <typename T>
using my_vector = std::vector<T>;

int main(){
    Stack<int,my_vector> aStack1;
}