|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
| Observers | ||||
(C++17) | ||||
(until C++20*) | ||||
(C++26) | ||||
shared_ptr::owner_equal (C++26) | ||||
| Non-member functions | ||||
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20) | ||||
functions(until C++26*) | ||||
| Helper classes | ||||
(C++20) | ||||
| Deduction guides(C++17) |
template<class Y> bool owner_equal(conststd::shared_ptr<Y>& other)constnoexcept; | (1) | (since C++26) |
template<class Y> bool owner_equal(conststd::weak_ptr<Y>& other)constnoexcept; | (2) | (since C++26) |
Checks whether thisshared_ptr andother share ownership or are both empty. The comparison is such that two smart pointers compare equivalent only if they are both empty or if they both own the same object, even if the values of the pointers obtained byget() are different (e.g. because they point at different subobjects within the same object).
The member functionowner_equal is an equivalence relation such that!owner_before(other)&&!other.owner_before(*this) istrue if and only ifowner_equal(other) istrue.
This ordering is used to make shared and weak pointers usable as keys in unordered associative containers, typically throughstd::owner_equal.
Contents |
| other | - | thestd::shared_ptr orstd::weak_ptr to be compared |
true if*this andother share ownership or are both empty. Otherwise, returnsfalse.
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_smart_ptr_owner_equality | 202306L | (C++26) | Enabling the use ofstd::shared_ptr as keys inunordered associative containers |
| This section is incomplete Reason: example |
(C++26) | provides mixed-type owner-based equal comparisons of shared and weak pointers (class)[edit] |