std::weak_ptr::weak_ptr
From cppreference.com
constexpr weak_ptr(); |
(1) | (since C++11) |
weak_ptr( const weak_ptr& r ); |
(2) | (since C++11) |
template< class Y > weak_ptr( const weak_ptr<Y>& r ); |
(2) | (since C++11) |
template< class Y > weak_ptr( const std::shared_ptr<Y>& r ); |
(2) | (since C++11) |
Constructs new weak_ptr that potentially shares an object with r.
1) Default constructor. Constructs empty weak_ptr.
2) Constructs new weak_ptr which shares an object managed by r. If r manages no object, *this manages no object too. The templated overloads don't participate in the overload resolution unless Y* is implicitly convertible to T*.
Contents |
[edit] Parameters
r | - | a std::shared_ptr or std::weak_ptr that will be viewed by this std::weak_ptr |
[edit] Exceptions
[edit] Example
#include <memory> #include <iostream> struct Foo {}; int main() { std::weak_ptr<Foo> w_ptr; { auto ptr = std::make_shared<Foo>(); w_ptr = ptr; std::cout << "w_ptr.use_count() inside scope: " << w_ptr.use_count() << '\n'; } std::cout << "w_ptr.use_count() out of scope: " << w_ptr.use_count() << '\n'; }
Output:
w_ptr.use_count() inside scope: 1 w_ptr.use_count() out of scope: 0
[edit] See also
assigns the weak_ptr (public member function) |