operator==, !=, <, <=, >, >=, <=>(std::variant)_C++中文网

C++ 参考手册

constexpr bool operator==( const std::variant<Types...>& v,

                           

const std::variant<Types...>& w );

(1) (C++17 起)

template< class... Types >

constexpr bool operator!=( const std::variant<Types...>& v,

                           const std::variant<Types...>& w );

(2) (C++17 起)

template< class... Types >

constexpr bool operator<( const std::variant<Types...>& v,

                          const std::variant<Types...>& w );

(3) (C++17 起)

template< class... Types >

constexpr bool operator>( const std::variant<Types...>& v,

                          const std::variant<Types...>& w );

(4) (C++17 起)

template< class... Types >

constexpr bool operator<=( const std::variant<Types...>& v,

                           const std::variant<Types...>& w );

(5) (C++17 起)

template< class... Types >

constexpr bool operator>=( const std::variant<Types...>& v,

                           const std::variant<Types...>& w );

(6) (C++17 起)

template< class... Types >

constexpr std::common_comparison_category_t<
    std::compare_three_way_result_t<Types>...>
    operator<=>( const std::variant<Types...>& v,

                 const std::variant<Types...>& w );

(7) (C++20 起)

1) variant 的相等运算符:

  • v.index() != w.index() ,则返回 false
  • 否则,若 v.valueless_by_exception() ,则返回 true
  • 否则返回 std::get<v.index()>(v) == std::get<v.index()>(w) 。若对于任何一个 istd::get<i>(v) == std::get<i>(w) 不是返回值能转换为 bool 的合法表达式,则行为未定义。

2) variant 的不相等运算符:

  • v.index() != w.index() ,则返回 true
  • 否则,若 v.valueless_by_exception() ,则返回 false
  • 否则返回 std::get<v.index()>(v) != std::get<v.index()>(w) 。若对于任何一个 istd::get<i>(v) != std::get<i>(w) 不是返回值能转换为 bool 的合法表达式,则行为未定义。

3) variant 的小于运算符:

  • w.valueless_by_exception() ,则返回 false
  • 否则,若 v.valueless_by_exception() ,则返回 true
  • 否则,若 v.index() < w.index() ,则返回true
  • 否则,若 v.index() > w.index() ,则返回false
  • 否则返回 std::get<v.index()>(v) < std::get<v.index()>(w) 。若对于任何一个 istd::get<i>(v) < std::get<i>(w) 不是返回值能转换为 bool 的合法表达式,则行为未定义。

4) variant 的大于运算符:

  • v.valueless_by_exception() ,则返回 false
  • 否则,若 w.valueless_by_exception() ,则返回 true
  • 否则,若 v.index() > w.index() ,则返回 true
  • 否则,若 v.index() < w.index() ,则返回 false
  • 否则返回 std::get<v.index()>(v) > std::get<v.index()>(w) 。若对于任何一个 istd::get<i>(v) > std::get<i>(w) 不是返回值能转换为 bool 的合法表达式,则行为未定义。

5) variant 的小于或等于运算符:

  • v.valueless_by_exception() ,则返回 true
  • 否则,若 w.valueless_by_exception() ,则返回 false
  • 否则,若 v.index() < w.index() ,则返回true
  • 否则,若 v.index() > w.index() ,则返回false
  • 否则返回 std::get<v.index()>(v) <= std::get<v.index()>(w) 。若对于任何一个 istd::get<i>(v) <= std::get<i>(w) 不是返回值能转换为 bool 的合法表达式,则行为未定义。

6) variant 的大于或等于运算符:

  • w.valueless_by_exception() ,则返回 true
  • 否则,若 v.valueless_by_exception() ,则返回 false
  • 否则,若 v.index() > w.index() ,则返回 true
  • 否则,若 v.index() < w.index() ,则返回 false
  • 否则返回 std::get<v.index()>(v) >= std::get<v.index()>(w) 。若对于任何一个 istd::get<i>(v) >= std::get<i>(w) 不是返回值能转换为 bool 的合法表达式,则行为未定义。

7) variant 的三路比较运算符:

  • v.valueless_by_exception()w.valueless_by_exception() 均为 true ,则返回 std::strong_ordering::equal
  • 否则,若 v.valueless_by_exception()true ,则返回 std::strong_ordering::less
  • 否则,若 w.valueless_by_exception()true ,则返回 std::strong_ordering::greater
  • 否则,若 v.index() != w.index() ,则返回 v.index() <=> w.index()
  • 否则等价于 std::get<v.index()>(v) <=> std::get<v.index()>(w)

参数

返回值

描述于上的比较结果。

示例

参阅