GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::weak_ptr::use_count(3) C++ Standard Libary std::weak_ptr::use_count(3)

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


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.


(none)


The number of shared_ptr instances sharing the ownership of the managed object at
the instant of the call.


expired() may be faster than use_count(). This function is inherently 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.

// 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
}


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: ??


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

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.