C26440 DECLARE_NOEXCEPTC26440 DECLARE_NOEXCEPT

« Fonction peut être déclarée 'noexcept'. »"Function can be declared 'noexcept'."

Les instructions C++ Core:C++ Core Guidelines:
F.6 : Si votre fonction ne peut pas lever, déclarez-le noexceptF.6: If your function may not throw, declare it noexcept

Si le code n’est pas censé pour provoquer des exceptions, il doit être marqué en tant que tel en utilisant le spécificateur 'noexcept'.If code is not supposed to cause any exceptions, it should be marked as such by using the ‘noexcept’ specifier. Cela serait simplifient la gestion d’erreurs sur le côté du code client, ainsi qu’activer le compilateur effectuer des optimisations supplémentaires.This would help to simplify error handling on the client code side, as well as enable compiler to do additional optimizations.

NotesRemarks

  • Une fonction est considéré comme non lever si :A function is considered non-throwing if:
    • Il ne possède aucune instruction throw explicite ;it has no explicit throw statements;
    • appels de fonction dans son corps, si elle existe, appelez ne fonctionne que peu susceptibles de lever : constexpr ou des fonctions marquées avec une spécification d’exception qui provoque le comportement non lanceurs (Cela inclut certaines spécifications non standard).function calls in its body, if any, invoke only functions that unlikely to throw: constexpr or functions marked with any exception specification which entails non-throwing behavior (this includes some non-standard specifications).
    • Les spécificateurs non standard et obsolètes comme throw() ou declspec(nothrow) ne sont pas équivalents à 'noexcept'.Non-standard and outdated specifiers like throw() or declspec(nothrow) are not equivalent to ‘noexcept’.
    • Noexcept (true) et explicite spécificateurs noexcept (false) sont respectées de manière appropriée.Explicit specifiers noexcept(false) and noexcept(true) are respected appropriately.
    • Les fonctions marquées en tant que constexpr ne sont pas supposés pour provoquer des exceptions et ne sont pas analysées.Functions marked as constexpr are not supposed to cause exceptions and are not analyzed.
    • La règle s’applique également aux expressions lambda.The rule also applies to lambda expressions.
    • La logique ne considère pas les appels récursifs comme potentiellement non lanceurs.The logic doesn’t consider recursive calls as potentially non-throwing. Cela peut changer dans le futur.This may change in the future.