Wenn ein erklärtes Funktion hat ein noexcept
specificator (noexcept
, noexcept(true)
, noexcept(false)
oder irgendein andere noexcept(expr)
welche true
oder false
auswertet), aber es an anderer Stelle definiert ist, Muss ich den Spezifizierer noexcept
in der Definition noch einmal oder nur in seiner Vorwärtsdeklaration angeben?C++ 11, `noexcept` Spezifizierer, definition gegen Erklärung
11
A
Antwort
12
[except.spec]/p4:
Wenn eine Deklaration einer Funktion eine Ausnahme-Spezifikation hat dass kein noexcept-Spezifikation ist es, alle Ausnahmen erlaubt, alle Erklärungen, einschließlich Die Definition und jede explizite Spezialisierung dieser Funktion muss eine kompatible Ausnahmespezifikation haben.
noexcept(some-constant-expression-that-evaluates-to-false)
kann weggelassen werden. Alles andere muss in allen Erklärungen vorhanden sein.