3
4

2 回答 2

3

变量的类型确实是. 但是,这里称为, 是不同的东西,是结构化绑定的名称,在技术上根本不是一个变量,只是一种不同的名称。r0int&v0a

所以我们需要查看[dcl.type.decltype]decltype中,的描述:

对于表达式e,由 表示的类型decltype(e)定义如下:

  • ife是命名结构化绑定的无括号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]):

ife是命名结构化绑定的无括号 id 表达式,decltype(e)是结构化绑定声明规范中给出的引用类型;

于 2018-12-31T11:27:38.393 回答