Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/coroutine/coroutine handle/operator cmp"

From cppreference.com
m (synthesized operators)
m ({{c}})
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{cpp/title|1=operator==, operator<=><small>(std::coroutine_handle)</small>}}
+
{{title|1=operator==, operator<=><small>(std::coroutine_handle)</small>}}
 
{{cpp/coroutine/coroutine_handle/navbar}}
 
{{cpp/coroutine/coroutine_handle/navbar}}
 
{{dcl begin}}
 
{{dcl begin}}
{{dcl header | coroutine}}
+
{{dcl header|coroutine}}
{{dcl | num=1 | since=c++20 | 1=
+
{{dcl|num=1|since=c++20|1=
 
constexpr bool
 
constexpr bool
     operator==(std::coroutine_handle<> x, std::coroutine_handle<> y) noexcept;
+
     operator==( std::coroutine_handle<> x, std::coroutine_handle<> y ) noexcept;
 
}}
 
}}
{{dcl | num=2 | since=c++20 | 1=
+
{{dcl|num=2|since=c++20|1=
 
constexpr std::strong_ordering
 
constexpr std::strong_ordering
     operator<=>(std::coroutine_handle<> x, std::coroutine_handle<> y) noexcept;
+
     operator<=>( std::coroutine_handle<> x, std::coroutine_handle<> y ) noexcept;
 
}}
 
}}
 
{{dcl end}}
 
{{dcl end}}
  
Compares two {{c|std::coroutine_handle<>}} values {{tt|x}} and {{tt|y}} according to their underlying addresses.
+
Compares two {{c|std::coroutine_handle<>}} values {{|x}} and {{|y}} according to their underlying addresses.
  
 
{{cpp/note synthesized compare}}
 
{{cpp/note synthesized compare}}
Line 19: Line 19:
 
===Parameters===
 
===Parameters===
 
{{par begin}}
 
{{par begin}}
{{par | x, y | {{c|std::coroutine_handle<>}} values to compare}}
+
{{par|x, y|{{c|std::coroutine_handle<>}} values to compare}}
 
{{par end}}
 
{{par end}}
  
 
===Return value===
 
===Return value===
@1@ {{c|1=x.address() == y.address()}}.
+
@1@ {{c|1=x.address() == y.address()}}
@2@ {{c|std::compare_three_way{}(x.address(), y.address())}}.
+
@2@ {{c|std::compare_three_way{}(x.address(), y.address())}}
  
 
===Notes===
 
===Notes===

Latest revision as of 01:31, 6 November 2023

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
Coroutine support
Coroutine traits
Coroutine handle
No-op coroutines
Trivial awaitables
Range generators
(C++23)
 
 
Defined in header <coroutine>
constexpr bool
    operator==( std::coroutine_handle<> x, std::coroutine_handle<> y ) noexcept;
(1) (since C++20)
constexpr std::strong_ordering
    operator<=>( std::coroutine_handle<> x, std::coroutine_handle<> y ) noexcept;
(2) (since C++20)

Compares two std::coroutine_handle<> values x and y according to their underlying addresses.

The <, <=, >, >=, and != operators are synthesized from operator<=> and operator== respectively.

Contents

[edit] Parameters

x, y - std::coroutine_handle<> values to compare

[edit] Return value

1) x.address() == y.address()
2) std::compare_three_way{}(x.address(), y.address())

[edit] Notes

Although these operators are only overloaded for std::coroutine_handle<>, other specializations of std::coroutine_handle are also equality comparable and three-way comparable, because they are implicitly convertible to std::coroutine_handle<>.

[edit] Example