Reference

public member function
<memory>

std::shared_ptr::unique

bool unique() const noexcept;
Check if unique
Returns whether the shared_ptr object does not share ownership over its pointer with other shared_ptr objects (i.e., it is unique).

Empty pointers are never unique (as they do not own any pointers).

Unique shared_ptr objects are responsible to delete their managed object if they release this ownership (see the destructor).

This function shall return the same as (use_count()==1), although it may do so in a more efficient way.

Parameters

none

Return value

true if this is a unique shared_ptr, false otherwise.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// shared_ptr::unique
#include <iostream>
#include <memory>
int main () {
 std::shared_ptr<int> foo;
 std::shared_ptr<int> bar (new int);
 std::cout << "foo unique?\n" << std::boolalpha;
 std::cout << "1: " << foo.unique() << '\n'; // false (empty)
 foo = bar;
 std::cout << "2: " << foo.unique() << '\n'; // false (shared with bar)
 bar = nullptr;
 std::cout << "3: " << foo.unique() << '\n'; // true
 return 0;
}

Output:
foo unique?
1: false
2: false
3: true


See also

shared_ptr::use_count
Use count (public member function)
shared_ptr::operator bool
Check if not null (public member function)
shared_ptr::get
Get pointer (public member function)

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