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

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