std::owner_less
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <memory>
  | 
||
|   template<> struct owner_less<void>;  | 
(since C++17) | |
std::owner_less<void> is a specialization of std::owner_less with parameter types deduced.
Nested types
| Nested type | Definition | 
 is_transparent
 | 
unspecified | 
Member functions
|     operator()  | 
  compares its arguments using owner-based semantics  (function)  | 
std::owner_less<void>::operator()
|   template< class T, class U > bool operator()( const std::shared_ptr<T>& lhs,  | 
(since C++17) | |
|   template< class T, class U > bool operator()( const std::shared_ptr<T>& lhs,  | 
(since C++17) | |
|   template< class T, class U > bool operator()( const std::weak_ptr<T>& lhs,  | 
(since C++17) | |
|   template< class T, class U > bool operator()( const std::weak_ptr<T>& lhs,  | 
(since C++17) | |
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.
Notes
| Feature-test macro | Value | Std | Feature | 
|---|---|---|---|
__cpp_lib_transparent_operators | 
201510L | 
(C++17) | Transparent std::owner_less (std::owner_less<void>) | 
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>)  |