Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::partial_ordering

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

      The class typestd::partial_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.
      • Admits incomparable values:a< b,a== b, anda> b may all befalse.

      Contents

      [edit]Constants

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

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

      [edit]Conversions

      std::partial_ordering cannot be implicitly converted to other comparison category types, while bothstd::strong_ordering andstd::weak_ordering are implicitly-convertible topartial_ordering.

      [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::partial_ordering is an associated class of the arguments.

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

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

      operator==

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

      Parameters

      v, w -std::partial_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,greater, orunordered
      2)true if both parameters hold the same value,false otherwise

      operator<

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

      Parameters

      v - astd::partial_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,equivalent, orunordered
      2)true ifv isgreater, andfalse ifv isless,equivalent, orunordered

      operator<=

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

      Parameters

      v - astd::partial_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 orunordered
      2)true ifv isgreater orequivalent, andfalse ifv isless orunordered

      operator>

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

      Parameters

      v - astd::partial_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,equivalent, orunordered
      2)true ifv isless, andfalse ifv isgreater,equivalent, orunordered

      operator>=

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

      Parameters

      v - astd::partial_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 orunordered
      2)true ifv isless orequivalent, andfalse ifv isgreater orunordered

      operator<=>

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

      Parameters

      v - astd::partial_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]Notes

      Thebuilt-inoperator<=> between floating-point values uses this ordering: the positive zero and the negative zero compareequivalent, but can be distinguished, and NaN values compareunordered with any other value.

      [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 and is not substitutable
      (class)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/compare/partial_ordering&oldid=173504"

      [8]ページ先頭

      ©2009-2025 Movatter.jp