Я пытаюсь написать мета-функцию с рекурсией. Входные данные представляют собой переменные целых чисел c, а выходные данные должны быть суммой входных данных.
Мой код выглядит следующим образом:
template <size_t curInput, size_t...Inputs>
constexpr size_t Accumulate = curInput + Accumulate<Inputs...>;
// template specialization
template <size_t...Inputs>
constexpr size_t Accumulate<Inputs> = 0;
int main(int argc, char *argv[]) {
constexpr size_t res1 = Accumulate<1>;
constexpr size_t res2 = Accumulate<1, 2, 3, 4, 5>;
return 0;
}
При проверке в main()
, res1
равно 0, а res2
равно 10. Похоже, обрабатывать последнее целое число как 0, я не понимаю, почему это произошло. И я хочу знать, как его изменить.
Любой ответ будет оценен по достоинству!