gpt4 book ai didi

c++ - 以下两个涉及自动返回类型的声明是否相同?如果是这样,为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:26 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);

在第一个声明中,max(a, b)的返回类型可以是a的类型,也可以是b的类型>。在第二个声明中,返回类型是 a 的类型。怎么两个声明的效果一样呢?

这是我读过的文章:

enter image description here

enter image description here

最佳答案

In the second declaration, the return type is the type of a.

您的假设基于什么?我认为这是困惑的根源。三元表达式(或任何表达式)的评估静态类型不依赖于操作数的任何语义分析,仅依赖于操作数的类型。两个表达式中所有三个三元操作数的类型相同,因此推导的类型相同。

换句话说,条件操作数是 true 的事实,在运行时,将导致表达式计算为 a,与静态类型分析和推导完全无关。

关于c++ - 以下两个涉及自动返回类型的声明是否相同?如果是这样,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53862282/

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