std::tie
参照のタプルを返すため、次のことができます。
int foo, bar, baz;
std::tie(foo, bar, baz) = std::make_tuple(1, 2, 3);
foo, bar, baz = (1, 2, 3)
これはPython の場合と似ています。
次の例のように、割り当ての 1 つがスローされた場合はどうなるでしょうか?
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';
}
1337 または 42 を出力しますか、それとも未指定ですか?