Spec-Zone.ru › C++

Именованные требования C++: RangeAdaptorClosureObject (начиная с C++20)

Объекты-замыкания адаптеров диапазонов — это функциональные объекты, вызываемые с помощью оператора конвейера: если 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|.

См. также

ranges::range_adaptor_closure
(C++23)
вспомогательный шаблон базового класса для определения объекта-замыкания адаптера диапазона
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/RangeAdaptorClosureObject

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API