2015-04-21 5 views
11

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

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.