鉴于我拥有该类型
template<int ...Is>
struct A {};
我能否仅通过一个整数d来“生成”类型A<0, 1, 2, 3, 4, 5,..., d>
?
我考虑了一些方法,比如
template<int d>
struct B : A<std::index_sequence<d>...> {}
但它没有起作用。
另一种选择是手动进行专门化:
template<int d>
struct B;
template<>
struct B<0>: A<> {};
template<>
struct B<1>: A<0> {};
template<>
struct B<2>: A<0, 1> {};
template<>
struct B<3>: A<0, 1, 2> {};
但显然我不会写 B<3000> b;
[编辑] 我实际的用例比那个要"复杂"一些。我不想重新实现std::integer_sequence,而是想要更复杂的东西。
std::make_integer_sequence
。 - Evg