Шаблоны C++ - полное руководство, второе издание представляет шаблон max:
template<typename T>
T max (T a, T b)
{
// if b < a then yield a else yield b
return b < a ? a : b;
}
И это объясняет использование "b < a? a: b"
вместо "a < b? b: a"
:
Обратите внимание, что шаблон max() в соответствии с [StepanovNotes] намеренно возвращает "b <a? A: b" вместо "a <b? B: a", чтобы гарантировать, что функция ведет себя корректно, даже если эти два значения эквивалентны, но не равны.
Как понимать " even if the two values are equivalent but not equal.
"? "a < b? b: a"
похоже, имеет для меня тот же результат.