Индекс кортежа выходит за пределы - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь использовать рекурсивные шаблоны для расчета суммы элементов в кортеже. Но я продолжаю сталкиваться с ошибкой для индекса кортежа за пределами. ошибка 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;


}

Как я могу go исправить ошибку индекса кортежей вне границ? Я подумал, что достаточно иметь конечное условие для частично специализированного шаблона Calculator с size_t, равным 1, но рекурсивный кортеж продолжает выходить за пределы фактического числа элементов в кортеже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...