Рассмотрим этот код:
template <typename T1, typename T2>
auto max(T1 t1, T2 t2) -> decltype(true?t1:t2)
{
return t2 < t1 ? t1 : t2;
}
При вызове этой функции с помощью ::max(5, 7.2)
Я ожидаю, что возвращаемый тип будет int
, поскольку decltype(t1)
в этом случае int
.
Почему выводимый тип возврата double
в приведенном выше коде при использовании operator?:
внутри decltype?
Если я сделаю -> decltype(t1)
, я получу ожидаемый тип возврата int
.