Reputation: 25593
Is it possible to use already existing vars as target for return values in connection with structured bindings
?
auto f()
{
return std::make_tuple(1,2.2);
}
int main()
{
int x;
double z;
[ x, z ] = f(); // Did not work in gcc 7.1
// structured bindings only work with "new" vars?
auto [a, b] = f(); // works fine
}
Upvotes: 11
Views: 2552
Reputation: 170044
If you want to use existing variables, you have std::tie
for that purpose.
std::tie(x, z) = f(); // only works with tuples however
Structured bindings introduce new identifiers. Unfortunately there is nothing equivalent to std::tie
for general aggregates.
Upvotes: 15