C++ named requirements: RangeAdaptorClosureObject (since C++20)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Объекты замыканий адаптеров диапазонов
являются
FunctionObject
ами
, которые могут быть вызваны с помощью оператора pipe: если
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
являются сохранёнными копиями (с той же константностью и категорией значения, что и
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)
|
вспомогательный базовый класс-шаблон для определения объекта замыкания адаптера диапазона
(шаблон класса) |