noexcept operator (since C++11)
From cppreference.com
The noexcept
operator performs a compile-time check that returns true if an expression is declared to not throw any exceptions.
It can be used within a function template's noexcept specifier to declare that the function will throw exceptions for some types but not others.
Contents |
[edit] Syntax
noexcept( expression )
|
|||||||||
Returns an object of type bool.
[edit] Explanation
The noexcept
operator does not evaluate expression. The result is false
if the expression contains at least one of the following potentially evaluated constructs:
-
- call to any type of function that does not have non-throwing exception specification, unless it is a constant expression.
-
throw
expression -
dynamic_cast
expression when the target type is a reference type, and conversion needs a run time check -
typeid
expression when argument type is polymorphic class type
In all other cases the result is true
.
[edit] Keywords
[edit] Example
template <class T> void self_assign(T& t) noexcept(noexcept(t = t)) { // self_assign is noexcept if and only if T::operator= is noexcept t = t; }
[edit] See also
noexcept specifier | requires a function to not throw any exceptions (C++11) |
exception specification | specifies what exceptions are thrown by a function (deprecated) |