模板中如何添加不定个数的常数

简单实现:

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;
}

在这里记下来,需要的时候,可以看一下。

posted on 2018-04-12 11:43  月落无影  阅读(215)  评论(0编辑  收藏  举报