|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
| Observers | ||||
weak_ptr::use_count | ||||
(C++26) | ||||
(C++26) | ||||
| Non-member functions | ||||
| Helper classes | ||||
(C++20) | ||||
| Deduction guides(C++17) |
long use_count()constnoexcept; | (since C++11) | |
Returns the number ofshared_ptr instances that share ownership of the managed object, or0 if the managed object has already been deleted, i.e.*this is empty.
Contents |
(none)
The number ofshared_ptr instances sharing the ownership of the managed object at the instant of the call.
The usage and behavior of this function are similar tostd::shared_ptr::use_count, but it returns a different count.
#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';elsestd::cout<<"??\n";} void share_recursively(std::shared_ptr<int> sp,int depth){ observe_gwp();// : 2 3 4if(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: 42use_count(): 2 id: 42use_count(): 3 id: 42use_count(): 4 id: 42use_count(): 4 id: 42use_count(): 3 id: 42use_count(): 2 id: 42use_count(): 1 id: 42use_count(): 0 id: ??
| checks whether the referenced object was already deleted (public member function)[edit] |