99 void* _M_exception_object;
101 explicit exception_ptr(
void* __e) _GLIBCXX_USE_NOEXCEPT;
103 void _M_addref() _GLIBCXX_USE_NOEXCEPT;
104 void _M_release() _GLIBCXX_USE_NOEXCEPT;
106 void *_M_get()
const _GLIBCXX_NOEXCEPT __attribute__ ((__pure__));
110 template<
typename _Ex>
114 exception_ptr() _GLIBCXX_USE_NOEXCEPT;
116 exception_ptr(
const exception_ptr&) _GLIBCXX_USE_NOEXCEPT;
118#if __cplusplus >= 201103L
119 exception_ptr(nullptr_t) noexcept
120 : _M_exception_object(
nullptr)
123 exception_ptr(exception_ptr&& __o) noexcept
124 : _M_exception_object(__o._M_exception_object)
125 { __o._M_exception_object =
nullptr; }
128#if (__cplusplus < 201103L) || defined (_GLIBCXX_EH_PTR_COMPAT)
129 typedef void (exception_ptr::*__safe_bool)();
132 exception_ptr(__safe_bool) _GLIBCXX_USE_NOEXCEPT;
136 operator=(
const exception_ptr&) _GLIBCXX_USE_NOEXCEPT;
138#if __cplusplus >= 201103L
140 operator=(exception_ptr&& __o)
noexcept
142 exception_ptr(
static_cast<exception_ptr&&
>(__o)).swap(*
this);
147 ~exception_ptr() _GLIBCXX_USE_NOEXCEPT;
150 swap(exception_ptr&) _GLIBCXX_USE_NOEXCEPT;
152#ifdef _GLIBCXX_EH_PTR_COMPAT
154 void _M_safe_bool_dummy() _GLIBCXX_USE_NOEXCEPT
155 __attribute__ ((__const__));
156 bool operator!()
const _GLIBCXX_USE_NOEXCEPT
157 __attribute__ ((__pure__));
158 operator __safe_bool()
const _GLIBCXX_USE_NOEXCEPT;
161#if __cplusplus >= 201103L
162 explicit operator bool()
const noexcept
163 {
return _M_exception_object; }
166#if __cpp_impl_three_way_comparison >= 201907L \
167 && ! defined _GLIBCXX_EH_PTR_RELOPS_COMPAT
169 operator==(
const exception_ptr&,
const exception_ptr&)
noexcept =
default;
171 friend _GLIBCXX_EH_PTR_USED
bool
172 operator==(
const exception_ptr& __x,
const exception_ptr& __y)
173 _GLIBCXX_USE_NOEXCEPT
174 {
return __x._M_exception_object == __y._M_exception_object; }
176 friend _GLIBCXX_EH_PTR_USED
bool
177 operator!=(
const exception_ptr& __x,
const exception_ptr& __y)
178 _GLIBCXX_USE_NOEXCEPT
179 {
return __x._M_exception_object != __y._M_exception_object; }
183 __cxa_exception_type()
const _GLIBCXX_USE_NOEXCEPT
184 __attribute__ ((__pure__));