Хорошая перспектива!

аюсь понять структурированные привязки, представленные в C ++ 17. Объяснение поcppreference для меня не очевидно, но похоже

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

примерно эквивалентно (не учитывать случай массива)

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

Ключевым моментом здесь является то, чтоx y z не являются независимо определенными переменными, а просто псевдонимами членов возвращаемого значения. А такжеcv-auto ref-operator применяется к возвращаемому значению, а не к псевдонимам (здесь синтаксис может вводить в заблуждение). Например, см. Пример 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

Еслиa b c независимо определенные переменные, сconst auto& обращаясь к ним,c не может быть типаconst int.

С практической точки зрения, какие ключевые моменты эта аналогия не уловила?

Ответы на вопрос(1)

Ваш ответ на вопрос