为什么条件表达式的结果类型是const引用?

问题描述 投票:0回答:1

有一段代码:

int x = 0;
const int y = 0;
decltype(auto) z = true ? x : y;
static_assert(std::is_same_v<const int&, decltype(z)>);

根据[expr.cond],第二个操作数

x
隐式转换为
const int&
,而第三个操作数
y
const int
类型,与
const int&
不同,所以程序应该是格式错误的。

显然我错了,但我不知道错在哪里?或者说,确定表达式类型为

const int&
的具体过程是什么?

c++ conditional-statements
1个回答
0
投票

当然

y
const int
类型,但是它不会出现在assert表达式中;这有什么不妥的地方?根据引用文档中的4.1,整个条件表达式是引用类型,因此
z
被声明为引用,满足断言。

© www.soinside.com 2019 - 2024. All rights reserved.