Si une fonction déclarée a une noexcept
specificator (noexcept
, noexcept(true)
, noexcept(false)
, ou tout autre noexcept(expr)
qui évalue à true
ou false
), mais il est défini dans un autre endroit, dois-je spécifier le spécificateur noexcept
dans la définition, ou seulement dans sa déclaration forward?C++ 11, `spécificateur noexcept`, définition par rapport à la déclaration
11
A
Répondre
12
[except.spec]/p4:
Si une déclaration d'une fonction a une exception spécification que n'est pas un noexcept spécification permettant toutes les exceptions, toutes les déclarations, y compris la définition et toute spécialisation explicite de cette fonction doivent avoir une spécification d'exception compatible.
noexcept(some-constant-expression-that-evaluates-to-false)
peut être omis. Tout le reste doit être présent dans toutes les déclarations.