#include <iostream>
#include <cstdarg>
using std::cout, std::endl;
int sum(int count...) {
int result = 0;
va_list args;
va_start(args, count);
for (int i = 0; i < count; i++) {
result += va_arg(args, int);
}
va_end(args);
return result;
}
int main() {
cout << sum(4, 10, 20, 30, 40) << endl;
}
#include <iostream>
#include <cstdarg>
using std::cout, std::endl;
template <typename T>
T sum(T value) {
return value;
}
template<typename T, typename... Args>
T sum(T value, Args... args) {
return value + sum(args...);
}
// sum(args...)에서 위의 sum 함수를 호출하여 값을 더해준다.
int main() {
cout << sum(10, 20, 30, 40) << endl;
}
100
위 결과를 보았을 때 sum 함수가 return 하는 값이 for문이 실행 될 때 마다 바뀌는 것을 알 수 있다.
int main() {
cout << sum(10, 20.6, 30, 40) << endl;
}
int main() {
cout << sum(10.3, 20.6, 30, 40) << endl;
}
처음 받는 인자의 타입에 따라 반환 type T가 달라져 반환하는 타입이 달라진다.