gpt4 book ai didi

c++ - 为什么这两个代码片段的效果是一样的呢?

转载 作者:行者123 更新时间:2023-12-02 06:00:10 25 4
gpt4 key购买 nike

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);

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

干杯。

最佳答案

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

您可以使用以下代码验证这一点

#include <type_traits>

int main ()
{
auto x = true ? 1 : 2l;

static_assert( std::is_same<decltype(x), long>::value, "!" );
}

true 不重要吗? 1 : 2l 返回1;三元运算符返回 1 (int) 和 2l (long) 之间的通用类型。那是

换句话说:(目前)不存在 constexpr 三元运算符。

关于c++ - 为什么这两个代码片段的效果是一样的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58093341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com