inline void my_assert( bool cond, const std::exception &e = my_assert_failed() )
{
if ( !cond )
throw e;
}
Стандарт гарантирует, что:
Временная привязка к эталонному параметру в вызове функции (5.2.2) сохраняется до завершения полного выражения, содержащего вызов.
И для брошенного временного объекта:
Временное сохранение сохраняется до тех пор, пока выполняется обработчик для этого исключения.
Могу ли я сделать вывод о том, что временное, которое передается в my_assert
, сохраняется до тех пор, пока блок catch не завершится?