Нет, но по другой причине.
Тип выражения является статической конструкцией.Это не зависит от значения его операндов.Если выражения верны, то b < a ? a : b
, true ? a : b
и false ? a : b
имеют одинаковый тип, определенный из типов a
и b
через сложный набор правил, который занимает в стандартном документе около 1,5 страниц..
Они имеют разные эффекты SFINAE.Если вы передадите пару аргументов, которые на самом деле не поддерживают сравнение <
, то первое объявление удалит себя из разрешения перегрузки, в то время как второе объявление с радостью примет аргументы, а затем вызовет серьезную ошибку при создании экземпляра тела функции.Это действительно имеет значение, только если у вас есть другая перегрузка max
, которая может принять эти аргументы, или если у вас есть код, проверяющий правильность выражения, вызывающего max
.