Quando devo realmente usar noexcept?

onoexcept Uma palavra-chave pode ser apropriadamente aplicada a muitas assinaturas de função, mas não tenho certeza de quando devo considerar usá-la na prática. Com base no que li até agora, a adição de última hora denoexcept parece abordar algumas questões importantes que surgem quando os construtores movem. No entanto, ainda não consegui fornecer respostas satisfatórias para algumas questões práticas que me levaram a ler mais sobrenoexcept em primeiro lugar.

Existem muitos exemplos de funções que eu sei que nunca serão lançadas, mas para as quais o compilador não pode determinar isso sozinho. Devo acrescentarnoexcept para a declaração de função emtodos esses casos?

Ter que pensar se devo ou não anexarnoexcept depois decada declaração de função reduziria muito a produtividade do programador (e, francamente, seria uma dor no rabo). Para quais situações devo ter mais cuidado com o uso denoexcept, e para quais situações eu posso me safar com o implícitonoexcept(false)?

Quando posso esperar realisticamente observar uma melhoria no desempenho depois de usarnoexcept? Em particular, dê um exemplo de código para o qual um compilador C ++ é capaz de gerar um código de máquina melhor após a adição denoexcept.

Pessoalmente, eu me preocupo comnoexcept devido à maior liberdade oferecida ao compilador para aplicar com segurança certos tipos de otimizações. Os compiladores modernos aproveitamnoexcept nesse caminho? Se não, posso esperar que alguns deles o façam no futuro próximo?

questionAnswers(8)

yourAnswerToTheQuestion