W3cubDocs

/C++

std::shared_ptr::use_count

long use_count() const;

Returns the number of different shared_ptr instances (this included) managing the current object. If there is no managed object, ​0​ is returned.

Parameters

(none).

Return value

the number of shared_ptr instances managing the current object or ​0​ if there is no managed object.

Exceptions

noexcept specification:
noexcept

Notes

Common use cases include.

  • comparison with ​0​. If use_count returns zero, the shared pointer is empty and manages no objects (whether or not its stored pointer is null).
  • comparison with 1. If use_count returns 1, there are no other owners, which may indicate that the managed object is safe to modify. The member function unique() is provided for this use case.

Example

#include <memory> 
#include <iostream> 
 
void fun(std::shared_ptr<int> sp)
{
    std::cout << "fun: sp.use_count() == " << sp.use_count() << '\n'; 
}
 
int main() 
{ 
    auto sp1 = std::make_shared<int>(5);
    std::cout << "sp1.use_count() == " << sp1.use_count() << '\n'; 
 
    fun(sp1);
}

Output:

sp1.use_count() == 1
fun: sp.use_count() == 2

See also

checks whether the managed object is managed only by the current shared_ptr instance
(public member function)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/memory/shared_ptr/use_count