__gnu_cxx::recursive_init_error Class Reference
Diagnostics » Exceptions

`#include <cxxabi.h>`

Inheritance diagram for __gnu_cxx::recursive_init_error:
[legend]

## Public Member Functions

virtual constexpr const char * | what () const noexcept

## Detailed Description

Exception thrown by __cxa_guard_acquire.

C++ 2011 6.7 [stmt.dcl]/4: If control re-enters the declaration recursively while the variable is being initialized, the behavior is undefined.

Since we already have a library function to handle locking, we might as well check for this situation and throw an exception. We use the second byte of the guard variable to remember that we're in the middle of an initialization.

Definition at line 706 of file cxxabi.h.

## Member Function Documentation

## what()

virtual constexpr const char * std::exception::what | ( |  | ) | const

inline constexpr virtual noexcept inherited

Returns a C-style character string describing the general cause of the current error.

Reimplemented in std::bad_alloc, std::bad_cast, std::bad_exception, std::bad_function_call, std::bad_typeid, std::bad_weak_ptr, std::experimental::filesystem::v1::filesystem_error, std::experimental::fundamentals_v1::bad_any_cast, std::filesystem::filesystem_error, std::future_error, std::ios_base::failure, std::logic_error, and std::runtime_error.

Definition at line 83 of file exception.h.

The documentation for this class was generated from the following file:

- cxxabi.h