If a declared function has a noexcept
specificator (noexcept
, noexcept(true)
, noexcept(false)
, or any other noexcept(expr)
which evaluates to true
or false
), but it's defined in another place, do I need to specify the noexcept
specifier in the definition again, or only in its forward declaration?
Asked
Active
Viewed 3,049 times
21

ABu
- 10,423
- 6
- 52
- 103
1 Answers
23
[except.spec]/p4:
If any declaration of a function has an exception-specification that is not a noexcept-specification allowing all exceptions, all declarations, including the definition and any explicit specialization, of that function shall have a compatible exception-specification.
noexcept(some-constant-expression-that-evaluates-to-false)
may be omitted. Anything else must be present in all declarations.

T.C.
- 133,968
- 17
- 288
- 421
-
to be sure, noexcept(false) in declaration doesn't have to be present in definition ? What about inheritance and virtual stuff ? – Gelldur Sep 02 '19 at 12:25