简单实现:
template <typename T, T... Args> struct const_sum { static constexpr T num = [] { static_assert(false, "not implementation"); return 0; }(); }; template <typename T, size_t t> struct const_sum<T, t> { static constexpr T num = t; }; template <typename T, size_t t, size_t... Args> struct const_sum<T, t, Args...> { static constexpr T num = t + const_sum<T, Args...>::num; }; template <size_t... Args> using const_sum_size_t = const_sum<size_t, Args...>;
简单使用:
#include <iostream> int main() { std::cout << const_sum_size_t<2, 3>::num << std::endl; return 0; }
在这里记下来,需要的时候,可以看一下。