Why are structured bindings defined through a uniquely named variable and all the vague "name is bound to" language?
I personally thought structured bindings worked as follows. Given a struct:
struct Bla
{
int i;
short& s;
double* d;
} bla;
The following:
cv-auto ref-operator [a, b, c] = bla;
is (roughly) equivalent to
cv-auto ref-operator a = bla.i;
cv-auto ref-operator b = bla.s;
cv-auto ref-operator c = bla.d;
And the equivalent expansions for arrays and tuples. But apparently, that would be too simple and there's all this vague special language used to describe what needs to happen.
So I'm clearly missing something, but what is the exact case where a well-defined expansion in the sense of, let's say, fold expressions, which a lot simpler to read up on in standardese?
It seems all the other behaviour of the variables defined by a structured binding actually follow the as-if simple expansion "rule" I'd think would be used to define the concept.