unstoppable_token — std::unstoppable_token 개념

unstoppable_token — std::unstoppable_token 개념

std::unstoppable_token중지가 가능하지 않은(중지 요청이 절대 없을) 토큰 타입을 설명하는 개념이에요. C++26에서 도입됐어요. <stop_token> 헤더에 있어요.

stoppable_token의 파생 개념이에요.

출처: cppreference

본문

// <stop_token> 헤더, C++26
template< class Token >
concept unstoppable_token =
    std::stoppable_token<Token> &&
    requires (const Token tok) {
        requires std::bool_constant<(!tok.stop_possible())>::value;
    };

unstoppable_token<Token>은, stop_possible()이 항상 false(중지 불가능)인 stoppable_token을 지정해요.

특성

  • stop_possible() — 항상 false 반환.
  • stop_requested() — 항상 false 반환 (요청 불가).
  • 중지가 절대 일어날 수 없다는 것을 컴파일 타임에 알려줘, 최적화와 인터페이스 단순화에 도움.

사용 예

#include <stop_token>
#include <concepts>

static_assert(std::unstoppable_token<std::never_stop_token>);   // true
static_assert(std::unstoppable_token<std::stop_token> == false); // false

// 중지가 없는 토큰만 받는 제네릭
template<std::unstoppable_token Token>
void do_work(Token) {
    // stop 확인 없이 그냥 실행 (항상 false니까)
}

관련 타입

  • std::never_stop_token (C++26) — unstoppable_token을 만족하는 기본 토큰 타입.
  • 중지 개념이 필요 없는 실행(일반 루프)에서 기본값으로 쓰여요.

std::unstoppable_token 개념은 "중지가 절대 발생하지 않는" 토큰 타입을 표현해, 중지 처리가 필요 없는 코드 경로를 명확히 구분하게 해줘요. C++26 신규 기능이에요.

더 알아보기 (Learn more)

cppreference