Namespaces
Variants

std::shared_ptr<T>:: unique

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
bool unique ( ) const noexcept ;
(C++17で非推奨)
(C++20で削除)

* this が現在のオブジェクトを管理する唯一の shared_ptr インスタンスであるかどうか、すなわち use_count ( ) == 1 であるかをチェックします。

目次

パラメータ

(なし)

戻り値

true が返されるのは、 * this が現在のオブジェクトを管理する唯一の shared_ptr インスタンスである場合であり、それ以外の場合は false が返されます。

注記

この関数はC++17で非推奨となり、C++20で削除されました。なぜなら use_count ( ) == 1 がマルチスレッド環境では意味をなさないためです( Notes を参照、 use_count 内)。

#include <iostream> 
#include <memory> 
int main() 
{ 
    auto sp1 = std::make_shared<int>(5);
    std::cout << std::boolalpha;
    std::cout << "sp1.unique() == " << sp1.unique() << '\n'; 
    std::shared_ptr<int> sp2 = sp1; 
    std::cout << "sp1.unique() == " << sp1.unique() << '\n'; 
}

出力:

sp1.unique() == true
sp1.unique() == false

関連項目

同じ管理オブジェクトを参照している shared_ptr オブジェクトの数を返す
(public member function)