template< class T >
struct owner_less; /* undefined */
template< class T = void >
struct owner_less; /* undefined */
template<>
struct owner_less<void>;
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).
4) The void specialization deduces the parameter types from the arguments.
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 std::owner_less
when T
is not specified. In this case, the parameter types are deduced from the arguments (each of which must still be either a std::shared_ptr or a std::weak_ptr).
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 valuetrue if lhs is less than rhs as determined by the owner-based ordering, false otherwise.
[edit] Defect reportsThe following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior LWG 2873 C++11 operator() was not required to be noexcept required to be noexcept [edit] See also provides owner-based ordering of shared pointersstd::shared_ptr<T>
) [edit] provides owner-based ordering of weak pointers
std::weak_ptr<T>
) [edit]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4