Entenda a ligação estruturada no C ++ 17 por analogia

Estou tentando entender a ligação estruturada introduzida no C ++ 17. A explicação sobrecppreference não é óbvio para mim, mas parece

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

é aproximadamente equivalente a (para não considerar caso de 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

O ponto chave aqui é quex y z não são variáveis definidas de forma independente, mas apenas aliases dos membros do valor de retorno. Ecv-auto ref-operator aplica-se ao valor de retorno, não aos aliases (a sintaxe pode ser enganosa aqui). Por exemplo, veja o exemplo 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

E sea b c são variáveis definidas independentemente, comconst auto& aplicando a eles,c não pode ser do tipoconst int.

Do ponto de vista prático, quais são os pontos principais que essa analogia não conseguiu captar?

questionAnswers(1)

yourAnswerToTheQuestion