Стандартный заголовок <algorithm>
обеспечивает стандартную функцию std::max
. Одна из перегрузок для этой функции сравнивает два объекта и возвращает ссылку на самый большой из двух. В вашем случае выражение будет выглядеть следующим образом:
auto greatest = std::max(x, y)
Если есть «самый эффективный» способ получить наибольшее из двух значений, вы должны полагаться на базовую реализацию, чтобы использовать ее для себя. std::max
должен реализовать лучший способ сделать это. Но даже если вы используете слабую реализацию стандартной библиотеки, которая этого не делает, компилятор все равно должен это отловить и оптимизировать.
Помните, что в c ++ ваш код описывает поведение. Это не список инструкций, которые компилятор будет выполнять дословно. Ваш код будет преобразован компилятором для реализации этих микрооптимизаций для вас там, где они, как известно, существуют.