Как вы сравниваете два неизвестных числа, чтобы увидеть, равны ли они в шаблоне особого случая? - PullRequest
0 голосов
/ 14 апреля 2010

Вот мой код. Просто пытаюсь обернуть голову вокруг некоторых основных вещей, которые вы можете сделать с 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 Ответ

4 голосов
/ 14 апреля 2010
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.

...