Ho sentito dire che la parola chiave noexcept
è più simile a "non dovrebbe mai generare un'eccezione" anziché "non".Esiste uno specificatore noexcept automatico?
Non penso sia opportuno utilizzare la parola chiave noexcept
se non sono sicuro che generi un'eccezione o meno, ma la parola chiave noexcept
è talvolta correlata alla prestazione come in un costruttore di movimento.
Così ho provato a usare i qualificatori noexcept
, ma diventa più difficile se ha più istruzioni nella definizione e diventa una specie di copia e incolla.
template <class T>
void f(T&& t)
noexcept(noexcept(statement_1) &&
noexcept(statement_2) &&
noexcept(statement_3) &&
noexcept(statement_4) &&
noexcept(statement_5))
{
statement_1;
statement_2;
statement_3;
statement_4;
statement_5;
}
ritengo il compilatore può capire se la definizione di una funzione consiste di istruzioni non gettare, quindi sarà più facile da utilizzare noexcept
se c'è un'espressione come noexcept(auto)
, ma sembra che non esiste cosa nello standard.
Esiste un modo per semplificare l'espressione noexcept?
http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4473.html (l'idea è molto più vecchia, ad esempio http://www.open-std.org/ jtc1/sc22/wg21/docs/papers/2010/n3207.htm) – dyp
@dyp Grazie !! Perché non lo metti in una risposta in modo che io possa accettarlo? – kukyakya
Perché non ho idea di quale sia lo stato di tale proposta :( – dyp