[ 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 구현방식과 비슷하게 만듬.