2010-04-14 54 views
0

这里是我的代码。只是试图围绕你可以用TMP做的一些基本事情。我试图提供两个数字,编译器会将这些数字加起来。我只是不确定如何编写“约束”模板的语法。如何比较两个未知数字以查看它们在特例模板中是否相等?

template < int b, int e > 
struct add { 
    enum { sum = add< b + 1, e >::sum + b }; 
}; 

template <> 
struct add< e, e > { 
    enum { sum = 0 }; 
}; 

int main() { 
    cout << add< 4, 8 >::sum << endl; //30 
    return 0; 
} 

回答

4
template <int e> 
struct add< e, e > { ... 

,结果是4 + 5 + 6 + 7 + 0 == 22,不4 + 5 + 6 + 7 + 8 == 30。一旦​​在add<...>add<...>::sum==0,而不是e

+0

谢谢。在迄今为止我所见过的所有内容中,没有一个像这种特殊情况下的模板限制那样。甚至没有发生在我身上,bleh – Justen 2010-04-14 18:48:37

+0

哦,我注意到了,我把sum = 0改为sum = e。 – Justen 2010-04-14 18:50:11

相关问题