问问题
79 次
2 回答
3
变量的类型确实是. 但是,这里称为, 是不同的东西,是结构化绑定的名称,在技术上根本不是一个变量,只是一种不同的名称。r0
int&
v0
a
所以我们需要查看[dcl.type.decltype]decltype
中,的描述:
对于表达式
e
,由 表示的类型decltype(e)
定义如下:
- if
e
是命名结构化绑定的无括号id 表达式decltype(e)
,是结构化绑定声明规范中给出的引用类型;
所以这里的“引用类型”只是int
.
当然,decltype((a))
正如int&
我们所期望的那样。decltype
没有双括号的名称用于找出名称是如何“声明”的,而不是名称的行为方式,因此decltype(a)
“应该”是一回事并不明显,因为a
没有正常的声明。尽管 given 可能有点有用,但std::tuple<int, int&> t{0, n}; auto& [a, b] = t;
我们有decltype(a)
isint
但是decltype(b)
is int&
。
于 2018-12-31T11:46:59.700 回答
1
笔记
引用的类型是 Ti。
对于结构化绑定,decltype
产生引用的类型([dcl.type.decltype]):
if
e
是命名结构化绑定的无括号 id 表达式,decltype(e)
是结构化绑定声明规范中给出的引用类型;
于 2018-12-31T11:27:38.393 回答