std::predicate

std::predicate (술어 개념)

RArgs... 인자들에 대해 호출 가능하고 그 결과가 bool로 변환 가능한 관계인지를 명세하는 개념(concept)이에요. C++20부터 있어요.

출처: cppreference

본문

<concepts> 헤더에 정의돼 있어요.

template< class F, class... Args >
concept predicate =
    std::regular_invocable<F, Args...> &&
    __BooleanTestable<std::invoke_result_t<F, Args...>>;

개념 predicate<F, Args...>F가 인자들 Args...로 호출 가능하고(regular_invocable), 그 호출 결과가 bool로 사용될 수 있는(boolean-testable) 타입임을 명세해요.

F는 인자들을 받아 참/거짓을 판정하는 함수 객체여야 해요. std::sort의 비교 함수, std::find_if의 단항 술어, std::all_of의 조건 함수 등 표준 알고리즘의 조건자가 요구하는 핵심 개념이에요.

boolean-testablebool뿐 아니라 명시적으로 bool로 변환 가능한 타입(예: std::integral 값 또는 포인터)이나 조건부 문맥에서 쓰일 수 있는 타입까지 포함해요.

참고 문헌

  • C++23 표준 (ISO/IEC 14882:2024): 18.7.7 Concept predicate [concept.predicate]
  • C++20 표준 (ISO/IEC 14882:2020): 18.7.7 Concept predicate [concept.predicate]

알고리즘의 조건자 인자를 제약할 때 이 개념을 써서 함수 객체가 반드시 참/거짓을 판정하도록 보장할 수 있어요.

더 알아보기 (Learn more)

cppreference