std::coroutine_handle 비교 연산자
std::coroutine_handle 비교 연산자 (operator==, !=)
두 std::coroutine_handle이 같은 코루틴을 가리키는지 비교하는 연산자예요. C++20부터 있어요.
출처: cppreference
본문
<coroutine> 헤더에 정의돼 있고, std::coroutine_handle용 비교 연산자예요.
constexpr bool operator==( std::coroutine_handle<> x, std::coroutine_handle<> y ) noexcept;
constexpr bool operator!=( std::coroutine_handle<> x, std::coroutine_handle<> y ) noexcept;
두 핸들이 같은 코루틴(같은 프레임)을 가리키는지 비교해요. Promise가 다른 std::coroutine_handle<Promise>들 사이에서도 이것들이 공통적으로 std::coroutine_handle<>로 비교 가능해요(파생 관계로 인해).
- 반환 값:
operator==는x와y가 같은 코루틴을 가리키면true, 아니면false.operator!=는 그 반대예요.
두 핸들이 같다는 것은 같은 코루틴 프레임 주소를 가리키는 것을 의미해요. 기본 생성된(빈) 핸들끼리도 서로 같다고 판정돼요.
이 비교 연산자 덕분에 std::coroutine_handle을 std::set, std::map 같은 정렬 컨테이너의 키로 사용할 수 있어요. (std::hash 특수화와 함께 unordered_* 컨테이너 키로도 쓸 수 있어요.)