C ++ 11: Хранение Итератора, не зная его контейнера

Есть ли в C ++ 11 что-то похожее на объект типа Iterator<T> который просто хранит итератор, не зная, из какого контейнера std исходит итератор, только тип данных, которые хранит контейнер?

Если такого объекта не существует, в чем причина его отсутствия?

2

Решение

В C ++ нет базового класса для итераторов, поскольку они предназначены для высокой производительности (поэтому виртуальные вызовы не приветствуются).

Все типы итераторов разрешаются во время компиляции, и все типы «хранилищ итераторов» также должны быть разрешены во время компиляции.

Какой у вас вариант использования? Может быть другое, лучшее решение.

3

Другие решения

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

Может быть, вам следует переосмыслить то, чего вы пытаетесь достичь, и задать вопрос об этом?

0

По вопросам рекламы [email protected]