I wrote this yesterday:
decltype(x)
, where x
is a structured binding, names the referenced
type of that structured binding. In the tuple-like case, this is the
type returned by std::tuple_element
, which may not be a reference
even though the structured binding itself is in fact always a
reference in this case. This effectively emulates the behavior of
binding to a struct whose non-static data members have the types
returned by tuple_element
, with the referenceness of the binding
itself being a mere implementation detail.