std::relation

std::relation (관계 개념)

RT, U 타입의 인자들로 호출 가능한 이항 관계인지를 명세하는 개념(concept)이에요. C++20부터 있어요.

출처: cppreference

본문

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

template< class R, class T, class U >
concept relation =
    std::predicate<R, T, T> &&
    std::predicate<R, T, U> &&
    std::predicate<R, U, T> &&
    std::predicate<R, U, U>;

개념 relation<R, T, U>RTU의 혼합된 인자 조합들로 호출 가능하고 그 결과가 bool로 판정 가능한 이항 술어임을 명세해요. (T,T), (T,U), (U,T), (U,U) 네 가지 조합 모두에 대해 Rpredicate여야 해요.

R은 두 인자 사이의 관계(예: 비교 연산)를 나타내는 함수 객체예요. 대칭적으로 어느 순서로든 호출할 수 있어야 해요.

relation을 기반으로 equivalence_relation(동치 관계), strict_weak_order(엄밀 약순서) 같은 더 의미 있는 관계 개념들이 확장돼요. std::sort의 비교 함수 등 정렬·탐색 알고리즘의 이항 조건자를 제약할 때 쓰여요.

참고 문헌

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

더 알아보기 (Learn more)

cppreference