constexpr shared_ptr(nullptr_t __p)
: _Base_type(__p) { }
- // C++14 §20.8.2.2
+ // C++14 20.8.2.2
~shared_ptr() = default;
- // C++14 §20.8.2.3
+ // C++14 20.8.2.3
shared_ptr& operator=(const shared_ptr&) noexcept = default;
template <typename _Tp1>
return *this;
}
- // C++14 §20.8.2.2.4
+ // C++14 20.8.2.2.4
// swap & reset
// 8.2.1.2 shared_ptr observers
// in __shared_ptr
{ }
};
- // C++14 §20.8.2.2.7 //DOING
+ // C++14 20.8.2.2.7
template<typename _Tp1, typename _Tp2>
bool operator==(const shared_ptr<_Tp1>& __a,
const shared_ptr<_Tp2>& __b) noexcept
operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept
{ return !(nullptr < __a); }
- // C++14 §20.8.2.2.8
+ // C++14 20.8.2.2.8
template<typename _Tp>
inline void
swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept
return shared_ptr<_Tp>(__r, reinterpret_cast<__elem_t*>(__r.get()));
}
- // C++14 §20.8.2.3
+ // C++14 20.8.2.3
template<typename _Tp>
class weak_ptr : public __weak_ptr<_Tp>
{
friend class enable_shared_from_this<_Tp>;
};
- // C++14 §20.8.2.3.6
+ // C++14 20.8.2.3.6
template<typename _Tp>
inline void
swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept
{ __a.swap(__b); }
- /// C++14 §20.8.2.2.10
+ /// C++14 20.8.2.2.10
template<typename _Del, typename _Tp>
inline _Del*
get_deleter(const shared_ptr<_Tp>& __p) noexcept
{ return std::get_deleter<_Del>(__p); }
- // C++14 §20.8.2.2.11
+ // C++14 20.8.2.2.11
template<typename _Ch, typename _Tr, typename _Tp>
inline std::basic_ostream<_Ch, _Tr>&
operator<<(std::basic_ostream<_Ch, _Tr>& __os, const shared_ptr<_Tp>& __p)
return __os;
}
- // C++14 §20.8.2.4
+ // C++14 20.8.2.4
template<typename _Tp = void> class owner_less;
/// Partial specialization of owner_less for shared_ptr.
typedef void is_transparent;
};
- // C++14 §20.8.2.6
+ // C++14 20.8.2.6
template<typename _Tp>
inline bool
atomic_is_lock_free(const shared_ptr<_Tp>* __p)