// fwd decls
+template<typename _Tp>
+ class shared_ptr;
+
template<typename _Tp>
class weak_ptr;
__enable_shared_from_this(const shared_count&, ...)
{ }
+
+// get_deleter must be declared before friend declaration by shared_ptr.
+template<typename _Del, typename _Tp>
+ _Del* get_deleter(const shared_ptr<_Tp>&);
+
/**
* @class shared_ptr <tr1/memory>
*
* The object pointed to is deleted when the last shared_ptr pointing to it
* is destroyed or reset.
*/
-
template<typename _Tp>
class shared_ptr
{
_M_refcount.swap(__other._M_refcount);
}
+ private:
void*
_M_get_deleter(const std::type_info& __ti) const
{ return _M_refcount.get_deleter(__ti); }
- private:
template<typename _Tp1>
bool
_M_less(const shared_ptr<_Tp1>& __rhs) const
template<typename _Tp1> friend class shared_ptr;
template<typename _Tp1> friend class weak_ptr;
+ template<typename _Del, typename _Tp1>
+ friend _Del* get_deleter(const shared_ptr<_Tp1>&);
+
// friends injected into enclosing namespace and found by ADL:
template<typename _Tp1>
friend inline bool