Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::shared_ptr::use_count(3) C++ Standard Libarystd::shared_ptr::use_count(3)

NAME
       std::shared_ptr::use_count - std::shared_ptr::use_count

Synopsis
	  long use_count() const noexcept;

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

	  In multithreaded environment,	the value returned by use_count	is ap-
       proximate
	  (typical implementations use a memory_order_relaxed load)

Parameters
	  (none)

Return value
	  the  number of std::shared_ptr instances managing the	current	object
       or 0 if
	  there	is no managed object.

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
       nullptr). In
	      multithreaded environment, this does not imply that the destruc-
       tor of the
	      managed object has completed.
	    *  comparison  with	 1. If use_count returns 1, there are no other
       owners.
	      The
	      deprecated
	      (since C++17) member function unique() is	provided for this  use
       case.
	      (until  C++20) In	multithreaded environment, this	does not imply
       that the	object
	      is safe to modify	because	accesses to the	managed	object by for-
       mer shared owners
	      may not have completed, and because new shared owners may	be in-
       troduced
	      concurrently, such as by std::weak_ptr::lock.

Example
       // Run this code

	#include <memory>
	#include <iostream>

	void fun(std::shared_ptr<int> sp)
	{
	    std::cout << "in fun(): sp.use_count() == "	<< sp.use_count()
		      << " (object @ " << sp <<	")\n";
	}

	int main()
	{
	    auto sp1 = std::make_shared<int>(5);
	    std::cout << "in main(): sp1.use_count() ==	" << sp1.use_count()
		      << " (object @ " << sp1 << ")\n";

	    fun(sp1);
	}

Possible output:
	in main(): sp1.use_count() == 1	(object	@ 0x20eec30)
	in fun(): sp.use_count() == 2 (object @	0x20eec30)

See also
	  unique	checks whether the managed object is managed  only  by
       the current
	  (until C++20)	shared_ptr instance
			(public	member function)

http://cppreference.com		  2022.07.31	 std::shared_ptr::use_count(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::shared_ptr::use_count&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help