Scroll to navigation

__gnu_cxx::recursive_init_error(3) Library Functions Manual __gnu_cxx::recursive_init_error(3)

NAME

__gnu_cxx::recursive_init_error - Exception thrown by __cxa_guard_acquire.

SYNOPSIS

Inherits std::exception.

Public Member Functions


virtual 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.

Member Function Documentation

virtual const char* std::exception::what () const [virtual], [noexcept], [inherited]

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

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

Author

Generated automatically by Doxygen for libstdc++ from the source code.

Mon Dec 18 2023 libstdc++