Как сделать список, содержащий итераторы на этот же список? Такой код, очевидно, не компилируется:
typedef std::list<RuleIter> RuleList;
typedef RuleList::const_iterator RuleIter;
Напрямую, похоже, никак, ибо невозможно сформулировать правильный синтаксис.
Однако начиная с С++17 были переработаны (ослаблены) требования на полноту (completeness) типа элемента списка, что теперь позволяет нам поступить так
struct RuleListElement;
typedef std::list<RuleListElement> RuleList;
typedef RuleList::const_iterator RuleIter;
struct RuleListElement
{
RuleIter it;
};
Некоторые до-С++17 реализации соглашались компилировать такие объявления, но формально до С++17 на тип элемента стандартного контейнера накладывалось требование полноты.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости