Quand dois-je vraiment utiliser noexcept?

La noexcept mot-clé peut être appliquée à de nombreuses signatures de fonction, mais je ne sais pas quand je devrais envisager de l'utiliser dans la pratique. Basé sur ce que j'ai lu jusqu'à présent, à la dernière minute, plus de noexcept semble répondre à certaines questions importantes qui se posent lorsque les constructeurs de déplacement jeter. Cependant, je suis toujours incapable de fournir des réponses satisfaisantes à certaines questions pratiques qui m'a conduit à lire plus à propos de noexcept en premier lieu.

  1. Il existe de nombreux exemples de fonctions que je connais ne sera jamais jeter, mais pour lesquels le compilateur ne peut pas déterminer si sur son propre. Dois-je ajouter noexcept à la déclaration de la fonction dans tous ces cas?

    Avoir à vous soucier de savoir si ou non j'ai besoin d'ajouter noexcept après chaque déclaration de fonction permettrait de réduire considérablement la productivité du programmeur (et franchement, ce serait une douleur dans le cul). Pour les situations qui devrais-je être plus prudent sur l'utilisation de noexcept, et pour quelles situations puis-je obtenir loin avec l'implicite noexcept(false)?

  2. Quand peut-on raisonnablement s'attendre à observer une amélioration de la performance après l'utilisation de noexcept? En particulier, donner un exemple de code pour un compilateur C++ est capable de produire la meilleure machine de code après l'ajout de noexcept.

    Personnellement, je me soucie de noexcept en raison de l'augmentation de la liberté à condition de le compilateur d'appliquer en toute sécurité certains types d'optimisations. Ne les compilateurs modernes profiter de noexcept de cette façon? Si non, puis-je attendre de certains d'entre eux de le faire dans un avenir proche?

Le Code qui utilise move_if_nothrow (ou whatchamacallit) va voir une amélioration de la performance si il y a un noexcept déplacer ctor.
Connexes: github.com/isocpp/CppCoreGuidelines/blob/master/...
C'est move_if_noexcept.

OriginalL'auteur void-pointer | 2012-05-28