diff options
Diffstat (limited to 'libcxx/include/memory')
| -rw-r--r-- | libcxx/include/memory | 98 |
1 files changed, 62 insertions, 36 deletions
diff --git a/libcxx/include/memory b/libcxx/include/memory index 04d57d5d7f0..a162eafe678 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -3874,7 +3874,9 @@ private: struct __nat {int __for_bool_;}; public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR shared_ptr() _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR shared_ptr(nullptr_t) _NOEXCEPT; template<class _Yp> explicit shared_ptr(_Yp* __p, @@ -3887,15 +3889,18 @@ public: typename enable_if<is_convertible<_Yp*, element_type*>::value, __nat>::type = __nat()); template <class _Dp> shared_ptr(nullptr_t __p, _Dp __d); template <class _Dp, class _Alloc> shared_ptr(nullptr_t __p, _Dp __d, _Alloc __a); - template<class _Yp> shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) _NOEXCEPT; + template<class _Yp> _LIBCPP_INLINE_VISIBILITY shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY shared_ptr(const shared_ptr& __r) _NOEXCEPT; template<class _Yp> + _LIBCPP_INLINE_VISIBILITY shared_ptr(const shared_ptr<_Yp>& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type = __nat()) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY shared_ptr(shared_ptr&& __r) _NOEXCEPT; - template<class _Yp> shared_ptr(shared_ptr<_Yp>&& __r, + template<class _Yp> _LIBCPP_INLINE_VISIBILITY shared_ptr(shared_ptr<_Yp>&& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type = __nat()) _NOEXCEPT; #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES @@ -3952,6 +3957,7 @@ public: ~shared_ptr(); + _LIBCPP_INLINE_VISIBILITY shared_ptr& operator=(const shared_ptr& __r) _NOEXCEPT; template<class _Yp> typename enable_if @@ -3959,8 +3965,10 @@ public: is_convertible<_Yp*, element_type*>::value, shared_ptr& >::type + _LIBCPP_INLINE_VISIBILITY operator=(const shared_ptr<_Yp>& __r) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY shared_ptr& operator=(shared_ptr&& __r) _NOEXCEPT; template<class _Yp> typename enable_if @@ -3968,6 +3976,7 @@ public: is_convertible<_Yp*, element_type*>::value, shared_ptr<_Tp>& >::type + _LIBCPP_INLINE_VISIBILITY operator=(shared_ptr<_Yp>&& __r); template<class _Yp> typename enable_if @@ -3976,6 +3985,7 @@ public: is_convertible<_Yp*, element_type*>::value, shared_ptr >::type& + _LIBCPP_INLINE_VISIBILITY operator=(auto_ptr<_Yp>&& __r); #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES template<class _Yp> @@ -3995,12 +4005,15 @@ public: shared_ptr& >::type #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY operator=(unique_ptr<_Yp, _Dp>&& __r); #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES operator=(unique_ptr<_Yp, _Dp> __r); #endif + _LIBCPP_INLINE_VISIBILITY void swap(shared_ptr& __r) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY void reset() _NOEXCEPT; template<class _Yp> typename enable_if @@ -4008,6 +4021,7 @@ public: is_convertible<_Yp*, element_type*>::value, void >::type + _LIBCPP_INLINE_VISIBILITY reset(_Yp* __p); template<class _Yp, class _Dp> typename enable_if @@ -4015,6 +4029,7 @@ public: is_convertible<_Yp*, element_type*>::value, void >::type + _LIBCPP_INLINE_VISIBILITY reset(_Yp* __p, _Dp __d); template<class _Yp, class _Dp, class _Alloc> typename enable_if @@ -4022,6 +4037,7 @@ public: is_convertible<_Yp*, element_type*>::value, void >::type + _LIBCPP_INLINE_VISIBILITY reset(_Yp* __p, _Dp __d, _Alloc __a); _LIBCPP_INLINE_VISIBILITY @@ -4123,7 +4139,7 @@ private: }; template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_CONSTEXPR shared_ptr<_Tp>::shared_ptr() _NOEXCEPT : __ptr_(0), @@ -4132,7 +4148,7 @@ shared_ptr<_Tp>::shared_ptr() _NOEXCEPT } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_CONSTEXPR shared_ptr<_Tp>::shared_ptr(nullptr_t) _NOEXCEPT : __ptr_(0), @@ -4255,7 +4271,7 @@ shared_ptr<_Tp>::shared_ptr(nullptr_t __p, _Dp __d, _Alloc __a) template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r, element_type *__p) _NOEXCEPT : __ptr_(__p), __cntrl_(__r.__cntrl_) @@ -4265,7 +4281,7 @@ shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r, element_type *__p) _NOEX } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline shared_ptr<_Tp>::shared_ptr(const shared_ptr& __r) _NOEXCEPT : __ptr_(__r.__ptr_), __cntrl_(__r.__cntrl_) @@ -4276,7 +4292,7 @@ shared_ptr<_Tp>::shared_ptr(const shared_ptr& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type) _NOEXCEPT @@ -4290,7 +4306,7 @@ shared_ptr<_Tp>::shared_ptr(const shared_ptr<_Yp>& __r, #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline shared_ptr<_Tp>::shared_ptr(shared_ptr&& __r) _NOEXCEPT : __ptr_(__r.__ptr_), __cntrl_(__r.__cntrl_) @@ -4301,7 +4317,7 @@ shared_ptr<_Tp>::shared_ptr(shared_ptr&& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline shared_ptr<_Tp>::shared_ptr(shared_ptr<_Yp>&& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat>::type) _NOEXCEPT @@ -4588,7 +4604,7 @@ shared_ptr<_Tp>::~shared_ptr() } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline shared_ptr<_Tp>& shared_ptr<_Tp>::operator=(const shared_ptr& __r) _NOEXCEPT { @@ -4598,7 +4614,7 @@ shared_ptr<_Tp>::operator=(const shared_ptr& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -4613,7 +4629,7 @@ shared_ptr<_Tp>::operator=(const shared_ptr<_Yp>& __r) _NOEXCEPT #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline shared_ptr<_Tp>& shared_ptr<_Tp>::operator=(shared_ptr&& __r) _NOEXCEPT { @@ -4623,7 +4639,7 @@ shared_ptr<_Tp>::operator=(shared_ptr&& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -4637,7 +4653,7 @@ shared_ptr<_Tp>::operator=(shared_ptr<_Yp>&& __r) template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < !is_array<_Yp>::value && @@ -4652,7 +4668,7 @@ shared_ptr<_Tp>::operator=(auto_ptr<_Yp>&& __r) template<class _Tp> template <class _Yp, class _Dp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < !is_array<_Yp>::value && @@ -4700,7 +4716,7 @@ shared_ptr<_Tp>::operator=(unique_ptr<_Yp, _Dp> __r) #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline void shared_ptr<_Tp>::swap(shared_ptr& __r) _NOEXCEPT { @@ -4709,7 +4725,7 @@ shared_ptr<_Tp>::swap(shared_ptr& __r) _NOEXCEPT } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline void shared_ptr<_Tp>::reset() _NOEXCEPT { @@ -4718,7 +4734,7 @@ shared_ptr<_Tp>::reset() _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -4731,7 +4747,7 @@ shared_ptr<_Tp>::reset(_Yp* __p) template<class _Tp> template<class _Yp, class _Dp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -4744,7 +4760,7 @@ shared_ptr<_Tp>::reset(_Yp* __p, _Dp __d) template<class _Tp> template<class _Yp, class _Dp, class _Alloc> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -5061,23 +5077,27 @@ private: __shared_weak_count* __cntrl_; public: + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR weak_ptr() _NOEXCEPT; - template<class _Yp> weak_ptr(shared_ptr<_Yp> const& __r, + template<class _Yp> _LIBCPP_INLINE_VISIBILITY weak_ptr(shared_ptr<_Yp> const& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY weak_ptr(weak_ptr const& __r) _NOEXCEPT; - template<class _Yp> weak_ptr(weak_ptr<_Yp> const& __r, + template<class _Yp> _LIBCPP_INLINE_VISIBILITY weak_ptr(weak_ptr<_Yp> const& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY weak_ptr(weak_ptr&& __r) _NOEXCEPT; - template<class _Yp> weak_ptr(weak_ptr<_Yp>&& __r, + template<class _Yp> _LIBCPP_INLINE_VISIBILITY weak_ptr(weak_ptr<_Yp>&& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type = 0) _NOEXCEPT; #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES ~weak_ptr(); + _LIBCPP_INLINE_VISIBILITY weak_ptr& operator=(weak_ptr const& __r) _NOEXCEPT; template<class _Yp> typename enable_if @@ -5085,10 +5105,12 @@ public: is_convertible<_Yp*, element_type*>::value, weak_ptr& >::type + _LIBCPP_INLINE_VISIBILITY operator=(weak_ptr<_Yp> const& __r) _NOEXCEPT; #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES + _LIBCPP_INLINE_VISIBILITY weak_ptr& operator=(weak_ptr&& __r) _NOEXCEPT; template<class _Yp> typename enable_if @@ -5096,6 +5118,7 @@ public: is_convertible<_Yp*, element_type*>::value, weak_ptr& >::type + _LIBCPP_INLINE_VISIBILITY operator=(weak_ptr<_Yp>&& __r) _NOEXCEPT; #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES @@ -5106,9 +5129,12 @@ public: is_convertible<_Yp*, element_type*>::value, weak_ptr& >::type + _LIBCPP_INLINE_VISIBILITY operator=(shared_ptr<_Yp> const& __r) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY void swap(weak_ptr& __r) _NOEXCEPT; + _LIBCPP_INLINE_VISIBILITY void reset() _NOEXCEPT; _LIBCPP_INLINE_VISIBILITY @@ -5132,7 +5158,7 @@ public: }; template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline _LIBCPP_CONSTEXPR weak_ptr<_Tp>::weak_ptr() _NOEXCEPT : __ptr_(0), @@ -5141,7 +5167,7 @@ weak_ptr<_Tp>::weak_ptr() _NOEXCEPT } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline weak_ptr<_Tp>::weak_ptr(weak_ptr const& __r) _NOEXCEPT : __ptr_(__r.__ptr_), __cntrl_(__r.__cntrl_) @@ -5152,7 +5178,7 @@ weak_ptr<_Tp>::weak_ptr(weak_ptr const& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline weak_ptr<_Tp>::weak_ptr(shared_ptr<_Yp> const& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type) _NOEXCEPT @@ -5165,7 +5191,7 @@ weak_ptr<_Tp>::weak_ptr(shared_ptr<_Yp> const& __r, template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline weak_ptr<_Tp>::weak_ptr(weak_ptr<_Yp> const& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type) _NOEXCEPT @@ -5179,7 +5205,7 @@ weak_ptr<_Tp>::weak_ptr(weak_ptr<_Yp> const& __r, #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline weak_ptr<_Tp>::weak_ptr(weak_ptr&& __r) _NOEXCEPT : __ptr_(__r.__ptr_), __cntrl_(__r.__cntrl_) @@ -5190,7 +5216,7 @@ weak_ptr<_Tp>::weak_ptr(weak_ptr&& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline weak_ptr<_Tp>::weak_ptr(weak_ptr<_Yp>&& __r, typename enable_if<is_convertible<_Yp*, _Tp*>::value, __nat*>::type) _NOEXCEPT @@ -5211,7 +5237,7 @@ weak_ptr<_Tp>::~weak_ptr() } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline weak_ptr<_Tp>& weak_ptr<_Tp>::operator=(weak_ptr const& __r) _NOEXCEPT { @@ -5221,7 +5247,7 @@ weak_ptr<_Tp>::operator=(weak_ptr const& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -5236,7 +5262,7 @@ weak_ptr<_Tp>::operator=(weak_ptr<_Yp> const& __r) _NOEXCEPT #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline weak_ptr<_Tp>& weak_ptr<_Tp>::operator=(weak_ptr&& __r) _NOEXCEPT { @@ -5246,7 +5272,7 @@ weak_ptr<_Tp>::operator=(weak_ptr&& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -5262,7 +5288,7 @@ weak_ptr<_Tp>::operator=(weak_ptr<_Yp>&& __r) _NOEXCEPT template<class _Tp> template<class _Yp> -inline _LIBCPP_INLINE_VISIBILITY +inline typename enable_if < is_convertible<_Yp*, _Tp*>::value, @@ -5275,7 +5301,7 @@ weak_ptr<_Tp>::operator=(shared_ptr<_Yp> const& __r) _NOEXCEPT } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline void weak_ptr<_Tp>::swap(weak_ptr& __r) _NOEXCEPT { @@ -5292,7 +5318,7 @@ swap(weak_ptr<_Tp>& __x, weak_ptr<_Tp>& __y) _NOEXCEPT } template<class _Tp> -inline _LIBCPP_INLINE_VISIBILITY +inline void weak_ptr<_Tp>::reset() _NOEXCEPT { |

