Подтвердить что ты не робот

Почему бросается выражение?

В следующем сообщении рассматривается тип выражения throw: В С++, если throw - это выражение, каков его тип?. Я хотел бы прояснить более основную вещь: почему throw должно быть выражением, а не выражением (не-выражение), как, например, return в первую очередь? Я хочу сказать, хотел ли кто-нибудь написать что-то вроде auto x = throw std::runtime_error("Error message")?

4b9b3361

Ответ 1

Если throw было выражением, вы не могли использовать его с условным оператором.

return success()
    ? computation()
    : throw std::runtime_error("oops");

Примечание: это может иметь или не иметь использование внешней обфускации кода.

Изменить: один полезный случай находится внутри С++ 11 strict constexpr функции, которые могут содержать только одну команду. Спасибо @dyp за понимание!