Почему структурированные привязки определяются через переменную с уникальным именем и все расплывчатое «имя привязано к» языку?
Я лично думал, что структурированные привязки работают следующим образом. Учитывая структуру:
struct Bla
{
int i;
short& s;
double* d;
} bla;
Следующее:
cv-auto ref-operator [a, b, c] = bla;
(примерно) эквивалентно
cv-auto ref-operator a = bla.i;
cv-auto ref-operator b = bla.s;
cv-auto ref-operator c = bla.d;
И эквивалентные расширения для массивов и кортежей. Но, по-видимому, это было бы слишком просто, и для описания того, что должно произойти, используется весь этот расплывчатый специальный язык.
Итак, я явно что-то упускаю, но каков конкретный случай, когда четко определенное расширение в смысле, скажем, выражений сгиба, которые намного проще читать на стандартном языке?
Кажется, что все остальное поведение переменных, определенных структурированной привязкой, на самом деле следует как бы простому «правилу» расширения, которое, как я думаю, будет использоваться для определения концепции.
bla
потенциально сложное выражение с побочными эффектами. Его не следует выполнять несколько раз, если он записан только один раз в исходном коде. - person Quentin   schedule 12.04.2018