9

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
}
Klaus
  • 24,205
  • 7
  • 58
  • 113

1 Answers1

14

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.

StoryTeller - Unslander Monica
  • 165,132
  • 21
  • 377
  • 458