variadic templates sample code


template<typename Head, typename... Tail>
double calc(Head p, Tail... arg)
{
    return p + calc(arg...);
}


template<typename T>
double calc(T t)
{
    return t;
};



template<typename... T>
class sum
{
};


template<typename Head, typename... Tail>
class sum<Head, Tail...>
{
public:
    enum { d = sum<Tail...>::d + 1};
};


template<>
class sum<>
{
public:
    enum { d = 0};
};



int main()
{
    double ret = calc(1, 2, 3.0);
    int len = sum<int, int, double>::d;
    return 0;

}






猜你喜欢

转载自blog.csdn.net/zhaozhencn/article/details/51036383
今日推荐