Ответ 1
Если throw
было выражением, вы не могли использовать его с условным оператором.
return success()
? computation()
: throw std::runtime_error("oops");
Примечание: это может иметь или не иметь использование внешней обфускации кода.
Изменить: один полезный случай находится внутри С++ 11 strict constexpr
функции, которые могут содержать только одну команду. Спасибо @dyp за понимание!