如何在编译时确定此返回类型

How can this return type be determined at compile-time?

本文关键字:返回类型 编译      更新时间:2023-10-16

可能重复:
为什么这是“min”cpp的模板下一个出错了吗?

从另一个问题中,我得到了这个函数模板:

template <class T, class U>
auto min(T x, U y) -> decltype(x < y ? x : y) {
    return x < y ? x : y;
}

它可以编译,看起来工作得很好,但我不确定它为什么工作。如何在编译时推导返回类型—我认为它可以是TU,这取决于哪个参数较小,并且只能在运行时确定。

无论a是否为真值,形式为a ? b : c的表达式总是返回相同的类型。如果bc的类型不同,则会发生类型提升,就像3 + 4.2评估为7.2(通过double(3) + 4.2(一样。

相关文章: