我想创建一个具有两个模板参数的模板类。首先 - N 是一类变量,默认设置为 int
第二个容器是来自 stl
的容器默认设置为 std::vector
。
#include <iostream>
#include <vector>
template <class N=int,
template <class T=N, class Allocator=std::allocator<N>>
class container=std::vector>
class foo{
container<N> cont;
};
int main()
{
foo f;
}
当我创建对象时f
如果上面的类没有模板参数,那么编译器会写出以下错误:
In function 'int main()':
15:9: error: missing template arguments before 'f'
我想要foo
相当于 foo<int, std::vector>
声明。
我的类定义问题出在哪里?
最佳答案
使用 C++14 或之前版本,您需要编写 foo<>
为了实例化模板。
从 C++17 开始,由于类模板参数推导,它实际上就像您编写的那样工作。您可以考虑使用 -std=c++17
更新您的 C++ 语言版本如果您的编译器支持它。
关于c++ - 如何将 std::vector 设置为模板的默认参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53831271/