Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::weak_ordering

      From cppreference.com
      <cpp‎ |utility
       
       
      Utilities library
       
      Defined in header<compare>
      class weak_ordering;
      (since C++20)

      The class typestd::weak_ordering is the result type of athree-way comparison that:

      • Admits all six relational operators (==,!=,<,<=,>,>=).
      • Does not imply substitutability: ifa is equivalent tob,f(a) may not be equivalent tof(b), wheref denotes a function that reads only comparison-salient state that is accessible via the argument's public const members. In other words, equivalent values may be distinguishable.
      • Does not allow incomparable values: exactly one ofa< b,a== b, ora> b must betrue.

      Contents

      [edit]Constants

      The typestd::weak_ordering has three valid values, implemented as const static data members of its type:

      Name Definition
      inlineconstexpr std::weak_ordering less
      [static]
      a valid value indicating less-than (ordered before) relationship
      (public static member constant)
      inlineconstexpr std::weak_ordering equivalent
      [static]
      a valid value indicating equivalence (neither ordered before nor ordered after)
      (public static member constant)
      inlineconstexpr std::weak_ordering greater
      [static]
      a valid value indicating greater-than (ordered after) relationship
      (public static member constant)

      [edit]Conversions

      std::weak_ordering is implicitly-convertible tostd::partial_ordering, whilestd::strong_ordering is implicitly-convertible toweak_ordering.

      operator partial_ordering
      implicit conversion tostd::partial_ordering
      (public member function)

      std::weak_ordering::operator partial_ordering

      constexpr operator partial_ordering()constnoexcept;

      Return value

      std::partial_ordering::less ifv isless,std::partial_ordering::greater ifv isgreater,std::partial_ordering::equivalent ifv isequivalent.

      [edit]Comparisons

      Comparison operators are defined between values of this type and literal0. This supports the expressionsa<=> b==0 ora<=> b<0 that can be used to convert the result of a three-way comparison operator to a boolean relationship; seestd::is_eq,std::is_lt, etc.

      These functions are not visible to ordinaryunqualified orqualified lookup, and can only be found byargument-dependent lookup whenstd::weak_ordering is an associated class of the arguments.

      The behavior of a program that attempts to compare aweak_ordering with anything other than the integer literal0 is undefined.

      operator==operator<operator>operator<=operator>=operator<=>
      compares with zero or aweak_ordering
      (function)

      operator==

      friendconstexprbool operator==( weak_ordering v,/*unspecified*/ u)noexcept;
      (1)
      friendconstexprbool operator==( weak_ordering v, weak_ordering w)noexcept=default;
      (2)

      Parameters

      v, w -std::weak_ordering values to check
      u - an unused parameter of any type that accepts literal zero argument

      Return value

      1)true ifv isequivalent,false ifv isless orgreater
      2)true if both parameters hold the same value,false otherwise

      operator<

      friendconstexprbool operator<( weak_ordering v,/*unspecified*/ u)noexcept;
      (1)
      friendconstexprbool operator<(/*unspecified*/ u, weak_ordering v)noexcept;
      (2)

      Parameters

      v - astd::weak_ordering value to check
      u - an unused parameter of any type that accepts literal zero argument

      Return value

      1)true ifv isless, andfalse ifv isgreater orequivalent
      2)true ifv isgreater, andfalse ifv isless orequivalent

      operator<=

      friendconstexprbool operator<=( weak_ordering v,/*unspecified*/ u)noexcept;
      (1)
      friendconstexprbool operator<=(/*unspecified*/ u, weak_ordering v)noexcept;
      (2)

      Parameters

      v - astd::weak_ordering value to check
      u - an unused parameter of any type that accepts literal zero argument

      Return value

      1)true ifv isless orequivalent, andfalse ifv isgreater
      2)true ifv isgreater orequivalent, andfalse ifv isless

      operator>

      friendconstexprbool operator>( weak_ordering v,/*unspecified*/ u)noexcept;
      (1)
      friendconstexprbool operator>(/*unspecified*/ u, weak_ordering v)noexcept;
      (2)

      Parameters

      v - astd::weak_ordering value to check
      u - an unused parameter of any type that accepts literal zero argument

      Return value

      1)true ifv isgreater, andfalse ifv isless orequivalent
      2)true ifv isless, andfalse ifv isgreater orequivalent

      operator>=

      friendconstexprbool operator>=( weak_ordering v,/*unspecified*/ u)noexcept;
      (1)
      friendconstexprbool operator>=(/*unspecified*/ u, weak_ordering v)noexcept;
      (2)

      Parameters

      v - astd::weak_ordering value to check
      u - an unused parameter of any type that accepts literal zero argument

      Return value

      1)true ifv isgreater orequivalent, andfalse ifv isless
      2)true ifv isless orequivalent, andfalse ifv isgreater

      operator<=>

      friendconstexpr weak_ordering operator<=>( weak_ordering v,/*unspecified*/ u)noexcept;
      (1)
      friendconstexpr weak_ordering operator<=>(/*unspecified*/ u, weak_ordering v)noexcept;
      (2)

      Parameters

      v - astd::weak_ordering value to check
      u - an unused parameter of any type that accepts literal zero argument

      Return value

      1)v.
      2)greater ifv isless,less ifv isgreater, otherwisev.

      [edit]Example

      This section is incomplete
      Reason: no example

      [edit]See also

      the result type of 3-way comparison that supports all 6 operators and is substitutable
      (class)[edit]
      the result type of 3-way comparison that supports all 6 operators, is not substitutable, and allows incomparable values
      (class)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/compare/weak_ordering&oldid=173502"

      [8]ページ先頭

      ©2009-2025 Movatter.jp