Namespaces
Variants
Views
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.

Contents

[edit] Syntax

noexcept( expression )

Returns a prvalue 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:

In all other cases the result is true.

[edit] Keywords

noexcept

[edit] Example

#include <iostream>
#include <utility>
 
void may_throw();
void no_throw() noexcept;
auto lmay_throw = []{};
auto lno_throw = []() noexcept {};
class T{
public:
  ~T(){}
};
int main()
{
 
 
  std::cout << std::boolalpha
            << "Is may_throw() noexcept? " << noexcept(may_throw()) << '\n'
            << "Is no_throw() noexcept? " << noexcept(no_throw()) << '\n'
            << "Is lmay_throw() noexcept? " << noexcept(lmay_throw()) << '\n'
            << "Is lno_throw() noexcept? " << noexcept(lno_throw()) << '\n'
            << "Is ~T() noexcept? " << noexcept(std::declval<T>().~T()) << '\n';
 
 
 
 
}


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