Как написать шаблон C ++, который дает максимум двух аргументов? - PullRequest
4 голосов
/ 28 января 2010

Оба аргумента гарантированно являются целыми числами.

Как мне написать myMax так, чтобы:

myMax<1, 2>; // 2
myMax<3, 2>; // 3  ?

Я хочу, чтобы это оценивалось во время компиляции, а не во время выполнения. (Затем необходимо использовать это с sizeof для списка типов, чтобы выделить место для варианта.)

Спасибо!

1 Ответ

7 голосов
/ 28 января 2010
template <int x, int y>
struct myMax
{
    static const int value = (x > y) ? x : y;
};

Если вы собираетесь использовать его только с размерами, вы можете использовать std::size_t вместо int.

...