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 신규 기능이에요.