Код, о котором идет речь, такой:
struct something_bad_happened_exception : std::exception {};
void foo() {
something_bad_happened_exception e;
throw e;
}
Clang выдает предупреждение:
Выражение броска должно бросить анонимные временные значения вместо [Серт-err09-каст]
это означает, что foo()
следует изменить на:
void foo() {
throw something_bad_happened_exception();
}
Почему лучше бросать временную переменную вместо локальной переменной?