Spec-Zone.ru › C++

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

Объекты-замыкания адаптера диапазонов являются FunctionObjects, которые вызываются с помощью оператора конвейера: если 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 — сохранённые копии (с той же квалификацией const и категорией значения, что и E), а R — объект range, следующие выражения эквивалентны:
d(c(R))
R | c | d
E(R)
R | E // R | (C | D)

Примечание: operator() не поддерживается для версий объектов-замыканий адаптера диапазонов с квалификатором volatile или const-volatile.

Объекты, тип которых совпадает с одним из следующих типов (без учёта cv-квалификаций), являются объектами-замыканиями адаптера диапазонов:

  • объекты-адаптеры диапазонов с одним аргументом,
  • объекты пользовательских типов, которые соответствуют требованиям реализации объекта-замыкания адаптера диапазонов,
(с C++23)
  • результаты привязки аргументов из хвоста с помощью объектов адаптера диапазонов, и
  • результаты объединения двух объектов-замыканий адаптера диапазонов с помощью operator|.

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

Spec-Zone.ru

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