inline void my_assert(bool cond, const std::exception &e = my_assert_failed())
{
if (!cond)
throw e;
}
Lo standard assicura che:gettare un argomento temporanea passato per riferimento
Un temporaneo legato a un parametro di riferimento in una chiamata di funzione (5.2.2) persiste fino al completamento della piena espressione contenente la chiamata.
E per un oggetto temporaneo gettato:
La temporanea persiste fino a quando v'è un gestore di essere giustiziato per tale eccezione.
Posso dedurre che un temporaneo passato a my_assert
sopravvive fino al termine del blocco di cattura?
Il throw' [espressione] '(http://en.cppreference.com/w/cpp/language/throw) esegui una copia della sua argomentazione in modo da non gettare il temporaneo. – user657267
@ user657267 Questa è una risposta. – Angew