##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# noexcept operator (since C++11)

From cppreference.com
< cpp‎ | language

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.

### [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

`noexcept`

### [edit] Example

Run this code

    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) [edit]
exception specification | specifies what exceptions are thrown by a function (deprecated) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/language/noexcept&oldid=66859"