To my knowledge, identifiers introduced by structured bindings in C++17 are in fact references to some \"hidden\" variable. Such that
auto [ a, b ] = std::ma
To my knowledge, identifiers introduced by structured bindings in C++17 are in fact references to some "hidden" variable.
If by "reference" you mean the language construct reference, this isn't quite correct. The specifiers in the declaration appertain to the "hidden variable" you speak of. The reference qualifier is optional. The code you presented would be more like this:
const auto& e = std::make_tuple(1, 2);
using E = remove_reference_t;
std::tuple_element<0, E>::type& a = get<0>(e);
std::tuple_element<1, E>::type& b = get<1>(e);