Tro*_*bao 5 c++ conditional-operator decltype auto c++11
当阅读有关 auto 和 decltype (C++11) 的内容时,我看到以下函数
auto findMin(A a, B b) -> decltype(a < b ? a : b)
{
return (a < b) ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
这部分 -> decltype(a < b ? a : b) 对我来说很奇怪。什么样的函数声明或者它只适用于 auto 和 decltype ?
这部分 -> decltype(a < b ? a : b) 对我来说很奇怪。什么样的函数声明或者它只适用于 auto 和 decltype ?
->后面的箭头auto和括号表示尾随返回类型,它允许您在了解函数参数后指定返回类型 - 如果您愿意的话,可以更自由。
decltype给我们声明的类型,这允许我们检查表达式的类型。
在三元表达式中a < b ? a : b,表达式的类型是和之间的公共类型。也就是说, for和常见类型是as提升到。abintdoubledoubleintdouble
然后decltype使用上述表达式进行调用,为我们提供通用类型,该类型将是返回值的类型。该函数仍然需要返回一个值,因此我们也在那里看到了表达式。decltype(a < b ? a : b)findMin
Ps 三元表达式的常见类型行为由特征捕获std::common_type(自 c++11 起)
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |