30 #ifndef _GLIBCXX_NESTED_EXCEPTION_H    31 #define _GLIBCXX_NESTED_EXCEPTION_H 1    33 #pragma GCC visibility push(default)    35 #if __cplusplus < 201103L    67     rethrow_nested()
 const    75     nested_ptr() 
const noexcept
    79   template<
typename _Except>
    82       explicit _Nested_exception(
const _Except& __ex)
    86       explicit _Nested_exception(_Except&& __ex)
    87       : _Except(static_cast<_Except&&>(__ex))
    94   template<
typename _Tp>
    97     __throw_with_nested_impl(_Tp&& __t, 
true_type)
    99       using _Up = 
typename remove_reference<_Tp>::type;
   100       throw _Nested_exception<_Up>{std::forward<_Tp>(__t)};
   103   template<
typename _Tp>
   106     __throw_with_nested_impl(_Tp&& __t, 
false_type)
   107     { 
throw std::forward<_Tp>(__t); }
   111   template<
typename _Tp>
   116       using _Up = 
typename decay<_Tp>::type;
   117       using _CopyConstructible
   119       static_assert(_CopyConstructible::value,
   120           "throw_with_nested argument must be CopyConstructible");
   121       using __nest = __and_<is_class<_Up>, 
__bool_constant<!__is_final(_Up)>,
   122                             __not_<is_base_of<nested_exception, _Up>>>;
   123       std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{});
   127   template<
typename _Tp>
   128     using __rethrow_if_nested_cond = 
typename enable_if<
   129       __and_<is_polymorphic<_Tp>,
   130              __or_<__not_<is_base_of<nested_exception, _Tp>>,
   131                    is_convertible<_Tp*, nested_exception*>>>::value
   135   template<
typename _Ex>
   136     inline __rethrow_if_nested_cond<_Ex>
   137     __rethrow_if_nested_impl(
const _Ex* __ptr)
   139       if (
auto __ne_ptr = dynamic_cast<const nested_exception*>(__ptr))
   140         __ne_ptr->rethrow_nested();
   145   __rethrow_if_nested_impl(
const void*)
   149   template<
typename _Ex>
   161 #pragma GCC visibility pop   163 #endif // _GLIBCXX_NESTED_EXCEPTION_H 
integral_constant< bool, true > true_type
The type used as a compile-time boolean with true value.
 
void terminate() noexcept __attribute__((__noreturn__))
 
void throw_with_nested(_Tp &&__t)
If __t is derived from nested_exception, throws __t. Else, throws an implementation-defined object de...
 
constexpr _Tp * __addressof(_Tp &__r) noexcept
Same as C++11 std::addressof.
 
Exception class with exception_ptr data member.
 
ISO C++ entities toplevel namespace is std.
 
An opaque pointer to an arbitrary exception.
 
integral_constant< bool, false > false_type
The type used as a compile-time boolean with false value.
 
void rethrow_if_nested(const _Ex &__ex)
If __ex is derived from nested_exception, __ex.rethrow_nested().
 
void rethrow_exception(exception_ptr) __attribute__((__noreturn__))
Throw the object pointed to by the exception_ptr.
 
exception_ptr current_exception() noexcept