Namespaces
Variants

C++ named requirements: RangeAdaptorClosureObject (since C++20)

From cppreference.net
C++ named requirements

범위 어댑터 클로저 객체 FunctionObject s 로서 파이프 연산자를 통해 호출 가능합니다: 만약 C 가 범위 어댑터 클로저 객체이고 R range 라면, 다음 두 표현식은 동등합니다 :

C(R)
R | C

두 개의 범위 어댑터 클로저 객체는 operator | 로 연결하여 다른 범위 어댑터 클로저 객체를 생성할 수 있습니다: C D 가 범위 어댑터 클로저 객체라면, C | D 는 다음과 같은 특성을 가진 범위 어댑터 클로저 객체 E 를 생성합니다:

  • E C D 의 복사본을 저장하며, 각각 std:: forward < decltype ( ( C ) ) > ( C ) std:: forward < decltype ( ( D ) ) > ( D ) 로부터 직접 비목록 초기화됩니다. 이러한 초기화가 유효하지 않으면, C | D 또한 유효하지 않습니다.
  • 저장된 복사본을 c d (동일한 constness 및 값 범주를 E 와 함께 가짐)로 두고, R range 객체로 둘 때, 다음 표현식들은 동등합니다 :
d(c(R))
R | c | d
E(R)
R | E // R | (C | D)

참고: operator ( ) 는 volatile 한정 또는 const-volatile 한정 버전의 범위 어댑터 객체 클로저 타입에 대해 지원되지 않습니다.

다음 객체들(비 cv 한정자 무시) 중 하나와 동일한 타입을 가진 객체들은 범위 어댑터 클로저 객체입니다:

  • 단항 범위 어댑터 객체,
(C++23부터)
  • 범위 어댑터 객체에 의한 후행 인자 바인딩 결과, 그리고
  • 두 개의 범위 어댑터 클로저 객체를 operator | 로 연결한 결과

참고 항목

범위 어댑터 클로저 객체를 정의하기 위한 헬퍼 베이스 클래스 템플릿
(클래스 템플릿)