数组非类型模板?

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)

编译器错误是:非类型模板参数的模板参数必须是表达式

Jar*_*d42 6

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)