C++17ではshared_ptr
にweak_type
というネストされた型名が追加された。これはshared_ptr
に対するweak_ptr
のtypedef
名となっている。
namespace std {
template < typename T >
class shared_ptr
{
using weak_type = weak_ptr<T> ;
} ;
}
使い方:
template < typename Shared_ptr >
void f( Shared_ptr sptr )
{
// C++14
auto wptr1 = std::weak_ptr<
typename Shared_ptr::element_type
>( sptr ) ;
// C++17
auto wptr2 = typename Shared_ptr::weak_type( sptr ) ;
}