Namespaces
Variants
Views
Actions

noexcept operator (since C++11)

From cppreference.com
< cpp‎ | language
Revision as of 08:59, 10 May 2013 by P12 (Talk | contribs)

 
 
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function declaration
inline specifier
Exception specifications (deprecated)
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
decltype (C++11)
auto (C++11)
alignas (C++11)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Implicit conversions - Explicit conversions
static_cast - dynamic_cast
const_cast - reinterpret_cast
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous
 

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

Syntax

noexcept( Template:sparam )

Returns an object of type bool.

Explanation

The noexcept operator does not evaluate Template:sparam. The result is false if the Template:sparam 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.
  • Template:rlpt expression
  • Template:rlpt expression when the target type is a reference type, and conversion needs a run time check
  • Template:rlpt expression when argument type is polymorphic class type

In all other cases the result is true.

Keywords

noexcept

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;
}


See also

Template:cpp/language/dcl list noexcept specTemplate:cpp/language/dcl list except spec