jot*_*aen 1 c++ arrays templates
我有一个非类型模板类Foo:
template <int n>
class Foo {
public:
Foo(){}
};
Run Code Online (Sandbox Code Playgroud)
如何在一个数组中存储该类的多个实例?(当实例都具有不同的模板值时.)
但是,这不起作用:
Foo<int> myArray[] = {Foo<1>() , Foo<2>() , Foo<3>()};
Run Code Online (Sandbox Code Playgroud)
编译器错误是:非类型模板参数的模板参数必须是表达式
Foo<1>与Foo<2>(等等)类型不同,因此您不能将它们存储在数组中(如果它们派生自FooBase,则可能有一个数组FooBase*).
您可以将它们存储在std::tuple:
auto foos = std::make_tuple(Foo<1>() , Foo<2>() , Foo<3>());
Run Code Online (Sandbox Code Playgroud)