# std::owner_less

< cpp‎ | memory

定义于头文件 `<memory>` |  |
template<> struct owner_less<void>; |  | (C++17 起)

std::owner_less<> 是拥有待推导形参类型的 std::owner_less 特化。

### 成员类型

成员类型 | 定义
`is_transparent` | /* 未指定 */

### 注意

成员类型 `is_transparent` 指示调用方，此函数对象是一个通透函数对象：它接受任意类型的参数并使用完美转发，这在将函数对象在多种语境中，或以右值参数使用时，避免不需要的复制和转换。特别是，诸如 std::set::find 和 std::set::lower_bound 的模板函数在其 `Compare` 类型上使用此类型。

### 成员函数

operator() | 用基于占有者的语义比较其参数 (函数)

## std::owner_less<void>::operator()

template<class T, class U> bool operator()( const std::shared_ptr<T>& lhs, const std::shared_ptr<U>& rhs ) const noexcept; |  | (C++17 起)
template<class T, class U> bool operator()( const std::shared_ptr<T>& lhs, const std::weak_ptr<U>& rhs ) const noexcept; |  | (C++17 起)
template<class T, class U> bool operator()( const std::weak_ptr<T>& lhs, const std::shared_ptr<U>& rhs ) const noexcept; |  | (C++17 起)
template<class T, class U> bool operator()( const std::weak_ptr<T>& lhs, const std::weak_ptr<U>& rhs ) const noexcept; |  | (C++17 起)

用基于占有者的语义比较 `lhs` 与 `rhs` 。等效地调用 lhs.owner_before(rhs) 。

顺序是严格弱序关系。

`lhs` 与 `rhs` 仅若均为空或共享所有权才等价。

### 参数

lhs, rhs | - | 要比较的共享所有权指针

### 返回值

若以基于占有者的顺序确定 `lhs` 小于 `rhs` 则为 true 。

### 参阅

owner_before | 提供基于拥有者的共享指针排序 (`std::shared_ptr<T>` 的公开成员函数)
owner_before | 提供弱指针的基于拥有者顺序 (`std::weak_ptr<T>` 的公开成员函数)