如何在编译时确定此返回类型
How can this return type be determined at compile-time?
可能重复:
为什么这是“min”cpp的模板下一个出错了吗?
从另一个问题中,我得到了这个函数模板:
template <class T, class U>
auto min(T x, U y) -> decltype(x < y ? x : y) {
return x < y ? x : y;
}
它可以编译,看起来工作得很好,但我不确定它为什么工作。如何在编译时推导返回类型—我认为它可以是T
或U
,这取决于哪个参数较小,并且只能在运行时确定。
无论a
是否为真值,形式为a ? b : c
的表达式总是返回相同的类型。如果b
和c
的类型不同,则会发生类型提升,就像3 + 4.2
评估为7.2
(通过double(3) + 4.2
(一样。
相关文章:
- 如何获取std::result_of函数的返回类型
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- C++:返回类型为 T 的模板函数不带 T 类型参数,将无法编译
- C 函数在编译时间返回类型
- 没有返回类型的静态函数可以通过Windows上的编译,但不能传递Linux上的编译
- 如何在编译时决定'auto'返回类型?
- 是否可以声明指向未知(编译时)返回类型的函数的指针
- Clang无法在模板类专业化中编译模板功能,该模板类专业化与模板声明具有 *不同的返回类型 *
- 构造函数没有返回类型,但为什么此部分可以正常编译
- 返回仅移动类型编译,即使复制构造函数不可用
- 如何有条件地编译返回类型的模板化函数
- 在模板函数返回类型上使用std::enable_if来利用SFINAE编译错误
- 为什么编译没有错误?(返回不对所述返回类型进行子类化的类型)
- 为什么VC++2013拒绝编译嵌套类型,当用作模板函数返回类型时,用using关键字使其可见
- 如何在编译时确定此返回类型
- 为什么不在尾部返回类型中使用此运算符进行编译
- C++编译错误,构造函数没有返回类型...但我没有指定一个