C++ 可变模板求和类

C++ 可变模板求和类,c++,metaprogramming,variadic-templates,C++,Metaprogramming,Variadic Templates,试着玩可变模板,但由于某种原因,我的大脑已经麻木了 我正在尝试创建一个类来汇总编译时的变量,但无法正确创建停止条件。。我试着这样做:。。但它不编译,快速帮助任何人 #include <iostream> #include <type_traits> using namespace std; template<size_t Head, size_t ...Rest> struct Sum { static const size_t value = H

试着玩可变模板,但由于某种原因,我的大脑已经麻木了

我正在尝试创建一个类来汇总编译时的变量,但无法正确创建停止条件。。我试着这样做:。。但它不编译,快速帮助任何人

#include <iostream>
#include <type_traits>
using namespace std;


template<size_t Head, size_t ...Rest>
struct Sum
{
    static const size_t value = Head + Sum<Rest...>::value;
    static void Print() {       
        cout << value;
    }
};

template<>
struct Sum
{
    static const size_t value = 0;
};

int _tmain(int argc, _TCHAR* argv[])
{
    Sum<5,5,5>::Print();
    return 0;
}
#包括
#包括
使用名称空间std;
模板
结构和
{
静态常量大小\u t值=头+总和::值;
静态无效打印(){

cout您需要首先声明一个基本模板。您只声明了将要使用的两个专门化

template<size_t...> struct Sum;

template<size_t Head, size_t ...Rest>
struct Sum<Head, Rest...>
{
    static const size_t value = Head + Sum<Rest...>::value;
    static void Print() {       
        cout << value;
    }
};

template<>
struct Sum<>
{
    static const size_t value = 0;
};
模板结构和;
模板
结构和
{
静态常量大小\u t值=头+总和::值;
静态无效打印(){
库特