我正在尝试使用递归模板来计算元组中元素的总和。但是我一直遇到元组索引超出范围的错误。错误 C2338:元组索引超出范围
template <typename T, typename Tuple, std::size_t N>
struct Calculator
{
static T summation(const Tuple& pack)
{
T packValue = get<N>(pack);
return packValue + Calculator<T, Tuple, N - 1>::summation(pack);
}
};
template<typename T, typename Tuple>
struct Calculator<T, Tuple, 1>
{
static T summation(const Tuple& pack)
{
return get<0>(pack);
}
};
int main()
{
tuple<double, double> t1 = make_tuple(16565.256, 45.539);
Calculator<double, tuple<double, double>, 2>::summation(t1);
cout << "Total Sum is: " << Calculator<double, tuple<double, double>, 2>::summation << endl;
}
我该如何解决元组索引越界错误?我认为具有 size_t 为 1 的部分专用模板计算器的结束条件就足够了,但是递归元组不断超出元组中元素的实际数量。