Comprender la unión estructurada en C ++ 17 por analogía

Estoy tratando de entender el enlace estructurado introducido en C ++ 17. La explicación sobrecppreference no es obvio para mí, pero parece

cv-auto ref-operator [x, y, z] = ...

es más o menos equivalente a (sin considerar el caso de la matriz)

cv-auto ref-operator unique_name = ...
#define x unique_name.member_a
#define y unique_name.member_b
#define z unique_name.member_c

El punto clave aquí es quex y z no son variables definidas independientemente, sino solo alias de los miembros del valor de retorno. Ycv-auto ref-operator se aplica al valor de retorno, no a los alias (la sintaxis puede ser engañosa aquí). Por ejemplo, vea el ejemplo de cppreference

float x{};
char  y{};
int   z{};

std::tuple<float&,char&&,int> tpl(x,std::move(y),z);
const auto& [a,b,c] = tpl;
// a names a structured binding of type float& that refers to x
// b names a structured binding of type char&& that refers to y
// c names a structured binding of type const int that refers to the 3rd element of tpl

Sia b c son variables definidas independientemente, conconst auto& aplicando a ellos,c no puede ser de tipoconst int.

Desde un punto de vista práctico, ¿cuáles son los puntos clave que esta analogía no pudo captar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta