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) |