Шаблон:Архитектурная акустика/Реализация/IteratorAdapterConditional body

Материал из CAMaaS preliminary wiki
Версия от 02:02, 9 января 2018; Андрей Чусов (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску
template <class _BaseIterator, class _Predicate, class _IsDeref>
class IteratorAdapterConditional;
_BaseIteratorТип преобразуемого адаптером итератора. Должен удовлетворять требованиям ForwardIterator.
_PredicateТип предиката, при перечислении осуществляющего проверку условия остановки переходов. Предикат должен принимать единственный параметр, который может быть:
  • итератором типа _BaseIterator, непосредственно адаптируемым к типу IteratorAdapterConditional или
  • итератором типа typename adapted_iterator<_BaseIterator>::type, который адаптируется цепочкой адаптеров, в которой последним адаптером является данная специализация IteratorAdapterConditional - например типом some_iterator в цепочке преобразований IteratorAdapterConditional<IteratorAdapterForStep<...<some_iterator>...>>, или
  • значением элемента, связанного с итератором, типа value_type - за исключением случаев, когда тип значения неявно преобразуем к любому из итераторов-адаптеров в цепочке.

Вызов предиката должен быть однозначен и соответствовать только одному из вышеупомянутых случаев, поэтому в качестве предиката не допускается использование шаблонов или обобщенных лямбда-выражений.

Также предикат должен удовлетворять требованиям CopyConstructible и CopyAssignable.
_IsDerefПредикат, проверяющий возможность перехода итератором _BaseIterator к следующему элементу путем инкремента. Тип должен удовлетворять требованиям CopyConstructible и CopyAssignable.
Открытые типы
ТипОписание
iteratorТип _BaseIterator.
iterator_categoryКатегория итератора. Тип эквивалентен std::forward_iterator_tag.
value_typeТип typename std::iterator_traits<iterator>::value_type.
referenceТип typename std::iterator_traits<iterator>::reference.
pointerТип typename std::iterator_traits<iterator>::pointer.
difference_typeТип typename std::iterator_traits<iterator>::difference_type.
predicateТип предиката необходимости перехода. Тип эквивалентен _Predicate.
iterator_predicateТип предиката возможности перехода. Тип эквивалентен _IsDeref.
Открытые методы
МетодОписание
(конструкторы)Конструкторы класса IteratorAdapterConditional.
operator=Операторы присваивания.
operator*Оператор разыменовывания.
operator->Оператор косвенного доступа к элементам.
operator++Переход итератора к следующему элементу, удовлетворяющему предикату IteratorAdapterConditional::predicate.
operator==Проверка на эквивалентность итераторов.
operator!=Проверка на неэквивалентность итераторов.
baseВозвращает адаптируемый итератор в текущей позиции.
adaptation_baseВозвращает текущий корневой адаптированный, возможно цепочкой адаптеров, итератор.