[ Programing ]/C++
C++ 17 sum() 베리어딕 템플릿의 확장버전.
Mister_Q
2018. 4. 17. 13:28
template <typename... Args>
auto sum(Args&&... args) {
return (args + ... + 0);
}
-> sum( 1,2,3,4,5,6 );
원래 구현 할려면 아규먼트를 일일이 다 설정해줘야 하는데
저렇게 만들면 몇개가 되든 덧셈 가능.
14버전도 있음.
auto sum() { return 0; }
template <typename T>
auto sum(T&& t) { return t; }
template <typename T, typename... Rest>
auto sum(T&& t, Rest&&... r) {
return t + sum(std::forward<Rest>(r)...);
}
일종의 tuple 구현방식과 비슷하게 만듬.