c++ - tirar - tengo los pies como fierros
¿Por qué lanzar una expresión? (1)
La siguiente publicación analiza el tipo de una expresión de throw
: En C ++, si throw es una expresión, ¿cuál es su tipo? . Me gustaría aclarar una cosa más básica: ¿por qué debería ser una expresión y no una declaración (sin expresión) como el return
en primer lugar? Quiero decir, ¿alguien querría escribir algo como auto x = throw std::runtime_error("Error message")
?
Si throw
fuera una declaración, no podría usarla con el operador condicional.
return success()
? computation()
: throw std::runtime_error("oops");
Nota: esto puede o no tener usos fuera de la ofuscación de código.
Edición: un caso útil está dentro de las estrictas funciones constexpr
C ++ 11 que solo pueden contener una instrucción. Gracias @dyp por la idea!