| move assignment (1) | unique_ptr& operator= (unique_ptr&& x) noexcept; |
|---|---|
| assign null pointer (2) | unique_ptr& operator= (nullptr_t) noexcept; |
| type-cast assignment (3) | template <class U, class E> unique_ptr& operator= (unique_ptr<U,E>&& x) noexcept; |
| copy assignment (deleted!) (4) | unique_ptr& operator= (const unique_ptr&) = delete; |
1
reset();
1
2
reset(u.release());
get_deleter() = forward<deleter_type>(u.get_deleter());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// unique_ptr::operator= example
#include <iostream>
#include <memory>
int main () {
std::unique_ptr<int> foo;
std::unique_ptr<int> bar;
foo = std::unique_ptr<int>(new int (101)); // rvalue
bar = std::move(foo); // using std::move
std::cout << "foo: ";
if (foo) std::cout << *foo << '\n'; else std::cout << "empty\n";
std::cout << "bar: ";
if (bar) std::cout << *bar << '\n'; else std::cout << "empty\n";
return 0;
}
foo: empty bar: 101