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==xy가 같은 코루틴을 가리키면 true, 아니면 false. operator!=는 그 반대예요.

두 핸들이 같다는 것은 같은 코루틴 프레임 주소를 가리키는 것을 의미해요. 기본 생성된(빈) 핸들끼리도 서로 같다고 판정돼요.

이 비교 연산자 덕분에 std::coroutine_handlestd::set, std::map 같은 정렬 컨테이너의 키로 사용할 수 있어요. (std::hash 특수화와 함께 unordered_* 컨테이너 키로도 쓸 수 있어요.)

더 알아보기 (Learn more)

cppreference