C++ named requirements: RangeAdaptorClosureObject (since C++20)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
범위 어댑터 클로저 객체
는
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 | 로 연결한 결과
참고 항목
|
(C++23)
|
범위 어댑터 클로저 객체를 정의하기 위한 헬퍼 베이스 클래스 템플릿
(클래스 템플릿) |