완결 코드
#include <iostream>
using namespace std;
#include <string>
#include <stack>
#include <list>
#include <vector>
#include <iterator>
template<typename T>
auto sum(T first, T last) -> typename iterator_traits<T>::value_type
{
//이터레이터가 가지고 있는 데이터를 가지고 와야함.
// 내부인자가 int형일 수 있고, double일수 있고.float일 수 있고...
// 배열로 할때 문제가 됨.
// typename T::value_type s = 0;
typename iterator_traits<T>::value_type s2 = 0;
while (first != last)
{
s2 += *first;
++first;
}
return s2;
}
int main()
{
//list<int> l{ 1,2,3,4,5,6,7,8,9,10 };
//int n = sum(begin(l), end(l));
vector<float> l{ 1.1f,2.2f,3.3f};
float n = sum(begin(l), end(l));
//int l[5]{ 1,2,3,4,5 };
//int n = sum(begin(l), end(l));
cout << n;
}