std::tie
restituisce una tupla di riferimenti, in modo da poter effettuare le seguenti operazioni:In che modo eccezionalmente sicura è std :: tie?
int foo, bar, baz;
std::tie(foo, bar, baz) = std::make_tuple(1, 2, 3);
Questo è simile a foo, bar, baz = (1, 2, 3)
in Python.
Cosa dovrebbe succedere se uno dei compiti viene lanciato, come nell'esempio seguente?
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';
}
Stampa 1337 o 42, o non è specificato?
Poiché il layout di 'tuple' non è specificato, immagino che la risposta qui sia anche" non specificata ". –