2011-02-24 2 views

ответ

4

Я не знаю о таком метафоре.

Не все итераторы имеют соответствующий const_iterator. Например. insert_iterator. Таким образом, такой метафорум должен будет решить, что он собирается делать в таких случаях.

0

я могу думать о чем-то для reverse_iterator: с помощью функции base члена decltype, можно извлечь тип возврата, чтобы вернуться к iterator.

Однако такой функции нет для iterator/const_iterator, поэтому трудно понять, как это может быть достигнуто, кроме обеспечения внутреннего typedef или требующего явной специализации.

0

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

Сложная проблема заключается в том, что контейнер определяет тип const_iterator. Чтобы перейти к типу const_iterator для контейнера, вы должны определить тип контейнера.

Однако, если вы начинаете с типа итератора контейнера в качестве параметра metafunction, невозможно получить тип контейнера.

Для известной Т (ы), что вы хотите может быть достигнуто, однако ...

0

Я не думаю, что это возможно, поскольку зачастую нет четко определено отображение между типами итераторов. Например, два контейнера могут совместно использовать не-const-тип итератора, но имеют разные константные итераторы. В общем случае вы можете отображать только типы контейнеров в типы итераторов, но не между типами итераторов или от типа итератора до типа контейнера.

Смежные вопросы