Список из итераторов на этот же список

300
05 ноября 2017, 18:38

Как сделать список, содержащий итераторы на этот же список? Такой код, очевидно, не компилируется:

typedef std::list<RuleIter> RuleList;
typedef RuleList::const_iterator RuleIter;
Answer 1

Напрямую, похоже, никак, ибо невозможно сформулировать правильный синтаксис.

Однако начиная с С++17 были переработаны (ослаблены) требования на полноту (completeness) типа элемента списка, что теперь позволяет нам поступить так

struct RuleListElement;
typedef std::list<RuleListElement> RuleList;
typedef RuleList::const_iterator RuleIter;
struct RuleListElement
{
  RuleIter it;
};

Некоторые до-С++17 реализации соглашались компилировать такие объявления, но формально до С++17 на тип элемента стандартного контейнера накладывалось требование полноты.

READ ALSO
Ошибки компиляции при подключении Winsvc.h С++

Ошибки компиляции при подключении Winsvc.h С++

При попытке подключить Winsvch сразу же появляется под 100+ ошибок, с чем может быть связано и как фиксить ? Была аналогичная проблема с winsock2, ее решил...

238
ЧТО ЭТО ТАКОЕ С++

ЧТО ЭТО ТАКОЕ С++

ОбЪясните, пожалуйста, что такое:

326
Как в с++ получить имя типа переменной?

Как в с++ получить имя типа переменной?

Помогите получить имя типа переменной

283