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

FreeBSD Manual Pages

  
 
  

home | help
std::weak_ptr::use_count(3)   C++ Standard Libary  std::weak_ptr::use_count(3)

NAME
       std::weak_ptr::use_count	- std::weak_ptr::use_count

Synopsis
	  long use_count() const noexcept;  (since C++11)

	  Returns  the	number of shared_ptr instances that share ownership of
       the managed
	  object, or 0 if the managed object has already  been	deleted,  i.e.
       *this is
	  empty.

Parameters
	  (none)

Return value
	  The number of	shared_ptr instances sharing the ownership of the man-
       aged object at
	  the instant of the call.

Notes
	  expired()  may  be  faster than use_count(). This function is	inher-
       ently racy, if the
	  managed object is shared among threads that might  be	 creating  and
       destroying copies
	  of  the  shared_ptr: then, the result	is reliable only if it matches
       the number of
	  copies uniquely owned	by the calling	thread,	 or  zero;  any	 other
       value may become
	  stale	before it can be used.

Example
       // Run this code

	#include <iostream>
	#include <memory>

	std::weak_ptr<int> gwp;

	void observe_gwp() {
	    std::cout << "use_count(): " << gwp.use_count() << "\t id: ";
	    if (auto sp	= gwp.lock())
		std::cout << *sp << '\n';
	    else
		std::cout << "??\n";
	}

	void share_recursively(std::shared_ptr<int> sp,	int depth) {
	    observe_gwp(); // :	2 3 4
	    if (1 < depth)
		share_recursively(sp, depth - 1);
	    observe_gwp(); // :	4 3 2
	}

	int main() {
	    observe_gwp();
	    {
		auto sp	= std::make_shared<int>(42);
		gwp = sp;
		observe_gwp(); // : 1
		share_recursively(sp, 3); // : 2 3 4 4 3 2
		observe_gwp(); // : 1
	    }
	    observe_gwp(); // :	0
	}

Output:
	use_count(): 0	 id: ??
	use_count(): 1	 id: 42
	use_count(): 2	 id: 42
	use_count(): 3	 id: 42
	use_count(): 4	 id: 42
	use_count(): 4	 id: 42
	use_count(): 3	 id: 42
	use_count(): 2	 id: 42
	use_count(): 1	 id: 42
	use_count(): 0	 id: ??

See also
	  expired checks whether the referenced	object was already deleted
		  (public member function)

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

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

home | help