¿Cuándo debo usar realmente noexcept?

losnoexcept La palabra clave se puede aplicar adecuadamente a muchas firmas de funciones, pero no estoy seguro de cuándo debería considerar usarla en la práctica. Sobre la base de lo que he leído hasta ahora, la adición de última hora denoexcept Parece abordar algunos problemas importantes que surgen cuando los constructores de movimiento lanzan. Sin embargo, todavía no puedo dar respuestas satisfactorias a algunas preguntas prácticas que me llevaron a leer más sobrenoexcept en primer lugar.

Hay muchos ejemplos de funciones que sé que nunca ejecutarán, pero que el compilador no puede determinar por sí solo. Debo adjuntarnoexcept a la declaración de función entodos esos casos?

Tener que pensar si debo o no añadirnoexcept despuéscada La declaración de funciones reduciría en gran medida la productividad del programador (y, francamente, sería un dolor de cabeza). ¿Para qué situaciones debo tener más cuidado con el uso denoexcept, y para que situaciones me salgo con la suya implícitanoexcept(false)?

¿Cuándo puedo realmente esperar observar una mejora en el rendimiento después de usarnoexcept? En particular, proporcione un ejemplo de código para el cual un compilador de C ++ pueda generar un mejor código de máquina después de agregarnoexcept.

Personalmente, me importanoexcept debido a la mayor libertad proporcionada al compilador para aplicar con seguridad ciertos tipos de optimizaciones. ¿Aprovechan los compiladores modernos?noexcept ¿De este modo? Si no, ¿puedo esperar que algunos de ellos lo hagan en un futuro cercano?

Respuestas a la pregunta(8)

Su respuesta a la pregunta