假设,我有一些序列,例如斐波那契数,定义为模板:
template <unsigned int N> struct Fibonacci { unsigned int value = /*...*/; };
我需要的是获得具有该序列的前 N 个元素的 constexpr 数组。我可以做到,使用可变参数模板:
template <unsigned int ... Numbers>
struct FibArray
{
static constexpr array<unsigned int, sizeof...(Numbers)> value = { Fibonacci<Numbers>::value... };
};
// and then:
const auto fib_array = FibArray<1, 2, 3, 4, 5, 6, 7>::value;
是否有可能避免手动枚举索引,并获得具有多个所需值的相同数组?像这样的东西:
const array<unsigned, 7> fib_array = GetFirstNFibValues<7>::value;