Я пытаюсь написать универсальную функцию, которая принимает инициализатор-список в качестве аргумента, добавляет элементы и возвращает это число. Если список пуст, он должен возвращать 0. Код выглядит корректно для меня, но всякий раз, когда я его запускаю, он возвращает 4 199 991 вместо 10 из ввода {1, 2, 3, 4} I. Я изменил функцию, чтобы распечатать элементы, а не добавлять их, и это отлично работает, оно выводит 1234, поэтому я понятия не имею, в чем проблема. Любая помощь приветствуется.Добавить элементы списка инициализаторов
#include <iostream>
#include <initializer_list>
template <typename T>
//add elements of initializer list
T total(initializer_list<T> & elements)
{
T tmp;
if(elements.size() != 0)
{
for(auto itr = elements.begin(); itr != elements.end(); ++itr)
{
tmp += *itr;
return tmp;
}
}else
return 0;
}
int main()
{
initializer_list<int> num({1, 2, 3, 4});
cout << total(num);
return 0;
}
'tmp' не инициализирован и' вернуть TMP; 'неуместна. –
Ого, это имеет большой смысл. Спасибо. Я понятия не имею, почему у меня было возвращение в цикл for. – Tango