Reference

public member function
<memory>

std::weak_ptr::operator=

copy (1)
weak_ptr& operator= (const weak_ptr& x) noexcept;template <class U> weak_ptr& operator= (const weak_ptr<U>& x) noexcept;
from shared_ptr (2)
template <class U> weak_ptr& operator= (const shared_ptr<U>& x) noexcept;
copy (1)
weak_ptr& operator= (const weak_ptr& x) noexcept;template <class U> weak_ptr& operator= (const weak_ptr<U>& x) noexcept;
from shared_ptr (2)
template <class U> weak_ptr& operator= (const shared_ptr<U>& x) noexcept;
move (3)
weak_ptr& operator= (weak_ptr&& x) noexcept;template <class U> weak_ptr& operator= (weak_ptr<U>&& x) noexcept;
weak_ptr assignment
The object becomes part of the owning group of x, giving access to that object's assets until expired without taking ownership itself (and without increasing its use count).

If x is empty, the constructed weak_ptr is also empty.

If x is an alias, the weak_ptr preserves both the owned data and the stored pointer.

shared_ptr objects can be assigned to weak_ptr objects directly, but in order to assign a weak_ptr object to a shared_ptr it shall be done using member lock.

Parameters

x
An object of a weak_ptr or shared_ptr type.
U* shall be implicitly convertible to T* (where T is shared_ptr's template parameter).

Return value

*this

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// weak_ptr::operator= example
#include <iostream>
#include <memory>
int main () {
 std::shared_ptr<int> sp1,sp2;
 std::weak_ptr<int> wp;
 // sharing group:
 // --------------
 sp1 = std::make_shared<int> (10); // sp1
 wp = sp1; // sp1, wp
 sp2 = wp.lock(); // sp1, wp, sp2
 sp1.reset(); // wp, sp2
 sp1 = wp.lock(); // sp1, wp, sp2
 std::cout << "*sp1: " << *sp1 << '\n';
 std::cout << "*sp2: " << *sp2 << '\n';
 return 0;
}

Output:
*sp1: 10
*sp2: 10


See also

shared_ptr::shared_ptr
Construct shared_ptr (public member function)
shared_ptr::reset
Reset pointer (public member function)
shared_ptr::get
Get pointer (public member function)

AltStyle によって変換されたページ (->オリジナル) /