在结构化绑定定义中引入了中间变量?

Mas*_*uue 8 c++ language-lawyer c++17 structured-bindings

[dcl.struct.bind] 9.6.4中,当初始化器是正确定义的类类型时,有结构化绑定的定义std\xe2\x80\x8b::\xe2\x80\x8btuple_\xc2\xadsize<E>\xe2\x80\x8b::\xe2\x80\x8bvalue

\n
\n

...变量以唯一名称ri引入,如下所示:
\n S Ui ri = 初始值设定项 ;
\n每个vi都是Ti类型的左值的名称,该左值引用绑定到ri的对象;\n引用的类型是Ti

\n
\n

我的问题是为什么需要引入ri,我们不能直接定义标识符vi作为对结果的引用吗get<i>(e)

\n

cpp*_*ner 5

目的是禁止将结构化绑定重新声明为引用。请参阅CWG 2313

  • @Masquee 标准来源可在 https://github.com/cplusplus/draft 获取。你可以直接使用“gitblame”。 (2认同)