在结构化绑定定义中引入中间变量?
Introduced intermediate variable in structured binding definition?
在 [dcl.struct.bind] 9.6.4 中,当初始化程序是 class 类型并正确定义 std::tuple_size<E>::value
时,有结构化绑定的定义:
... variables are introduced with unique names ri as follows:
S Ui ri = initializer ;
Each vi is the name of an lvalue of type Ti that refers to the object bound to ri;
the referenced type is Ti.
我的问题是为什么要引入ri,我们不能直接定义标识符vi作为结果的引用get<i>(e)
?
目的是禁止将结构化绑定重新声明为引用。参见 CWG 2313。
在 [dcl.struct.bind] 9.6.4 中,当初始化程序是 class 类型并正确定义 std::tuple_size<E>::value
时,有结构化绑定的定义:
... variables are introduced with unique names ri as follows:
S Ui ri = initializer ;
Each vi is the name of an lvalue of type Ti that refers to the object bound to ri; the referenced type is Ti.
我的问题是为什么要引入ri,我们不能直接定义标识符vi作为结果的引用get<i>(e)
?
目的是禁止将结构化绑定重新声明为引用。参见 CWG 2313。