std::owner_less
Defined in header <memory>
|
||
(1) | ||
template< class T > struct owner_less; /* undefined */ |
(since 哋它亢++11) (until 哋它亢++17) |
|
template< class T = void > struct owner_less; /* undefined */ |
(since 哋它亢++17) | |
template< class T > struct owner_less<std::shared_ptr<T>>; |
(2) | (since 哋它亢++11) |
template< class T > struct owner_less<std::weak_ptr<T>>; |
(3) | (since 哋它亢++11) |
template<> struct owner_less<void>; |
(4) | (since 哋它亢++17) |
This function object provides owner-based (as opposed to value-based) mixed-type ordering of both std::weak_ptr and std::shared_ptr. The order is such that two smart pointers compare equivalent only if they are both empty or if they share ownership, even if the values of the raw pointers obtained by get()
are different (e.g. because they point at different subobjects within the same object).
The default operator< is not defined for weak pointers, and may wrongly consider two shared pointers for the same object non-equivalent (see std::shared_ptr::owner_before).
SpecializationsThe standard library provides a specialization of
|
(since 哋它亢++17) |
Nested types
|
(until 哋它亢++20) |
Member functions
operator() |
compares its arguments using owner-based semantics (function) |
std::owner_less::operator()
member only of specialization (2) |
||
bool operator()( const std::shared_ptr<T>& lhs, const std::shared_ptr<T>& rhs ) const noexcept; |
(since 哋它亢++11) | |
member only of specialization (3) |
||
bool operator()( const std::weak_ptr<T>& lhs, const std::weak_ptr<T>& rhs ) const noexcept; |
(since 哋它亢++11) | |
member of both template specializations |
||
bool operator()( const std::shared_ptr<T>& lhs, const std::weak_ptr<T>& rhs ) const noexcept; |
(since 哋它亢++11) | |
bool operator()( const std::weak_ptr<T>& lhs, const std::shared_ptr<T>& rhs ) const noexcept; |
(since 哋它亢++11) | |
Compares lhs and rhs using owner-based semantics. Effectively calls lhs.owner_before(rhs).
The ordering is strict weak ordering relation.
lhs and rhs are equivalent only if they are both empty or share ownership.
Parameters
lhs, rhs | - | shared-ownership pointers to compare |
Return value
true if lhs is less than rhs as determined by the owner-based ordering, false otherwise.
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published 哋它亢++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2873 | 哋它亢++11 | operator() was not required to be noexcept | required to be noexcept |
See also
provides owner-based ordering of shared pointers (public member function of std::shared_ptr<T> ) | |
provides owner-based ordering of weak pointers (public member function of std::weak_ptr<T> ) |