diff options
Diffstat (limited to 'libcxx/include/__exception')
| -rw-r--r-- | libcxx/include/__exception/exception_ptr.h | 23 | 
1 files changed, 23 insertions, 0 deletions
diff --git a/libcxx/include/__exception/exception_ptr.h b/libcxx/include/__exception/exception_ptr.h index 796fa92..e78126e 100644 --- a/libcxx/include/__exception/exception_ptr.h +++ b/libcxx/include/__exception/exception_ptr.h @@ -16,6 +16,8 @@  #include <__memory/construct_at.h>  #include <__type_traits/decay.h>  #include <__type_traits/is_pointer.h> +#include <__utility/move.h> +#include <__utility/swap.h>  #include <cstdlib>  #include <typeinfo> @@ -23,6 +25,9 @@  #  pragma GCC system_header  #endif +_LIBCPP_PUSH_MACROS +#include <__undef_macros> +  #ifndef _LIBCPP_ABI_MICROSOFT  #  if _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION @@ -57,6 +62,8 @@ _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD  #ifndef _LIBCPP_ABI_MICROSOFT +inline _LIBCPP_HIDE_FROM_ABI void swap(exception_ptr& __x, exception_ptr& __y) _NOEXCEPT; +  class _LIBCPP_EXPORTED_FROM_ABI exception_ptr {    void* __ptr_; @@ -75,7 +82,15 @@ public:    _LIBCPP_HIDE_FROM_ABI exception_ptr(nullptr_t) _NOEXCEPT : __ptr_() {}    exception_ptr(const exception_ptr&) _NOEXCEPT; +  _LIBCPP_HIDE_FROM_ABI exception_ptr(exception_ptr&& __other) _NOEXCEPT : __ptr_(__other.__ptr_) { +    __other.__ptr_ = nullptr; +  }    exception_ptr& operator=(const exception_ptr&) _NOEXCEPT; +  _LIBCPP_HIDE_FROM_ABI exception_ptr& operator=(exception_ptr&& __other) _NOEXCEPT { +    exception_ptr __tmp(std::move(__other)); +    std::swap(__tmp, *this); +    return *this; +  }    ~exception_ptr() _NOEXCEPT;    _LIBCPP_HIDE_FROM_ABI explicit operator bool() const _NOEXCEPT { return __ptr_ != nullptr; } @@ -88,10 +103,16 @@ public:      return !(__x == __y);    } +  friend _LIBCPP_HIDE_FROM_ABI void swap(exception_ptr& __x, exception_ptr& __y) _NOEXCEPT; +    friend _LIBCPP_EXPORTED_FROM_ABI exception_ptr current_exception() _NOEXCEPT;    friend _LIBCPP_EXPORTED_FROM_ABI void rethrow_exception(exception_ptr);  }; +inline _LIBCPP_HIDE_FROM_ABI void swap(exception_ptr& __x, exception_ptr& __y) _NOEXCEPT { +  std::swap(__x.__ptr_, __y.__ptr_); +} +  #  if _LIBCPP_HAS_EXCEPTIONS  #    if _LIBCPP_AVAILABILITY_HAS_INIT_PRIMARY_EXCEPTION  template <class _Ep> @@ -201,4 +222,6 @@ _LIBCPP_HIDE_FROM_ABI exception_ptr make_exception_ptr(_Ep __e) _NOEXCEPT {  #endif // _LIBCPP_ABI_MICROSOFT  _LIBCPP_END_UNVERSIONED_NAMESPACE_STD +_LIBCPP_POP_MACROS +  #endif // _LIBCPP___EXCEPTION_EXCEPTION_PTR_H  | 
