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

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
IteratorAdapterConditional() = default; //1
IteratorAdapterConditional(const IteratorAdapterConditional&) = default; //2
IteratorAdapterConditional(IteratorAdapterConditional&&) = default; //3

template <class predicate_params_as_tuple_t, class iterator_predicate_params_as_tuple_t>
IteratorAdapterConditional(
	iterator it,
	predicate_params_as_tuple_t&& tuple_of_predicate_params, 
	iterator_predicate_params_as_tuple_t&& tuple_of_iterator_predicate_params); //4
		
template <class predicate_params_as_tuple_t, class iterator_predicate_params_as_tuple_t>
IteratorAdapterConditional(
	predicate_params_as_tuple_t&& tuple_of_predicate_params, 
	iterator_predicate_params_as_tuple_t&& tuple_of_iterator_predicate_params); //5

template <class iterator_predicate_params_t>
IteratorAdapterConditional(iterator it, iterator_predicate_params_t&& iterator_predicate_params); //6

template <class iterator_predicate_params_t>
IteratorAdapterConditional(iterator_predicate_params_t&& iterator_predicate_params); //7

IteratorAdapterConditional(iterator it); //8

template <class _It2, class _Pred2, class _IterPred2>
IteratorAdapterConditional(const IteratorAdapterConditional<_It2, _Pred2, _IterPred2>& refRight); //9

Конструкторы класса IteratorAdapterConditional.

  1. Конструктор по умолчанию.
  2. Конструктор копирования.
  3. Конструктор перемещения.
  4. Конструктор, задающий состояние создаваемого итератора IteratorAdapterConditional - начальную позицию IteratorAdapterConditional::iterator, предикат необходимости перехода и предикат возможности перехода. Предикаты задаются в конструкторе специализациями std::tuple. Например, параметры могут быть переданы с помощью std::forward_as_tuple.
  5. Конструктор, который задает предикаты (также, с помощью std::tuple), но позиция итератора не задается. Итератор, созданный с помощью данного конструктора, не может быть использован до присваивания ему итератора с действительной позицией. Используется в случаях, когда предикаты не удовлетворяют требованиям DefaultConstructible.
  6. Конструктор, создающий итератор в заданной позиции и с заданным предикатом возможности перехода к следующему элементу, и использующий инициализированный по умолчанию предикат необходимости перехода. Перегрузка определена только, если предикат необходимости перехода удовлетворяет DefaultConstructible.
  7. Аналогично, но начальная позиция итератора не задается.
  8. Конструктор, создающий итератор IteratorAdapterConditional с заданной позицией и со сконструированными по умолчанию предикатами. Перегрузка определена только, если оба предиката удовлетворяют DefaultConstructible.
  9. Коструктор преобразования заданной специализации IteratorAdapterConditional в специализацию *this. Конструктор определен только, если специализирующие адаптер типы аргумента (итератор и оба предиката) неявно преобразуемы в соответствующие типы конструируемого адаптера.
Параметры шаблона
predicate_params_as_tuple_tТип экземпляра специализации std::tuple, переносящего аргументы для создания предиката необходимости перехода.
iterator_predicate_params_as_tuple_tТип экземпляра специализации std::tuple, переносящего аргументы для создания предиката возможности перехода.
iterator_predicate_params_tТип аргумента, на основе которого создается предикат возможности перехода.
_It2Тип итератора, который неявно преобразуется к типу IteratorAdapterConditional::iterator перегрузкой 9.
_Pred2Тип предиката, который неявно преобразуется к типу IteratorAdapterConditional::predicate перегрузкой 9.
_IterPred2Тип предиката, который неявно преобразуется к типу IteratorAdapterConditional::iterator_predicate перегрузкой 9.
Параметры
itАдаптируемый итератор. Задает начальную позицию адаптера.
tuple_of_predicate_paramsЭкземпляр std::tuple, который переносит аргументы для создания предиката необходимости перехода. Может быть использована функция std::forward_as_tuple.
tuple_of_iterator_predicate_paramsЭкземпляр std::tuple, который переносит аргументы для создания предиката возможности перехода. Может быть использована функция std::forward_as_tuple.
tuple_of_iterator_predicate_paramsПараметр, используемый при создании предиката возможности перехода.
refRightЭкземпляр другой специализации шаблона IteratorAdapterConditional, состояние которого преобразуется и копируется в создаваемый итератор.