template <typename T1, typename T2>
auto max (T1 a, T2 b) -> decltype(b<a?a:b);
template <typename T1, typename T2>
auto max (T1 a, T2 b) -> decltype(true?a:b);
我不明白为什么这两个代码段可以具有相同的效果。请给我一些提示和基本解释。
欢呼声。
因为三元运算符返回的类型是根据第二个和第三个参数的类型而不是第一个参数的值决定的。
条件表达式的类型不取决于条件是否为真。