这是我的代码。试着用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;
}
答案 0 :(得分:4)
template <int e>
struct add< e, e > { ...
结果是4 + 5 + 6 + 7 + 0 == 22
,而不是4 + 5 + 6 + 7 + 8 == 30
。 e==e
add<...>
后add<...>::sum==0
,e
而不是{{1}}。