Otherwise,
all of
E's non-static data members
shall be direct members of
E or
of the same base class of
E,
well-formed when named as
e.name
in the context of the structured binding,
E shall not have an anonymous union member, and
the structured binding size of
E is
equal to the number of non-static data members of
E. Designating the non-static data members of
E as
m0,
m1,
m2,…
(in declaration order),
each
SBi is the
name of an lvalue that refers to the member
mi of
e and
whose type is
that of
e.mi (
[expr.ref]);
the referenced type is
the declared type of
mi if that type is a reference type, or
the type of
e.mi otherwise
.