你如何比较两个未知数字,看看它们在特殊案例模板中是否相等?

时间:2010-04-14 18:43:46

标签: c++ templates metaprogramming

这是我的代码。试着用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;
}

1 个答案:

答案 0 :(得分:4)

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

结果是4 + 5 + 6 + 7 + 0 == 22,而不是4 + 5 + 6 + 7 + 8 == 30e==e add<...>add<...>::sum==0e而不是{{1}}。