为什么这两个代码段具有相同的效果?

问题描述 投票:5回答:3
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);

我不明白为什么这两个代码段可以具有相同的效果。请给我一些提示和基本解释。

欢呼声。

c++ c++17 decltype ternary
3个回答
7
投票

因为三元运算符返回的类型是根据第二个和第三个参数的类型而不是第一个参数的值决定的。


4
投票

条件表达式的类型不取决于条件是否为真。


0
投票

确定条件表达式类型的规则在here中进行了描述。

正如其他人已经说过的那样,关键是要意识到这种表达方式>>

E1 ? E2 : E3
© www.soinside.com 2019 - 2024. All rights reserved.