std::tie
returns a tuple of references, so you can do the following:
int foo, bar, baz;
std::tie(foo, bar, baz) = std::make_tuple(1, 2, 3);
This is similar to foo, bar, baz = (1, 2, 3)
in Python.
What is supposed to happen if one of the assignments throws, as in the following example?
int foo = 1337;
struct Bar {
Bar& operator=(Bar) { throw std::exception{}; }
} bar;
try {
std::tie(foo, bar) = std::make_tuple(42, Bar{});
} catch (std::exception const&) {
std::cout << foo << '\n';
}
Will it print 1337 or 42, or is this unspecified?
tuple
is unspecified, I imagine the answer here is also "unspecified". – Lilongwe