Здравствуйте,
Для тех кто не в курсе что такое any_iterator<> пару вводных слов:
------------------------------
Вот например пишем библиотеку и есть у нас интерфейс который должен принимать итераторы, и мы говорим клиенту: "дай мне итераторы категории не ниже forward iterator, которые разыменовываются в int." Всё. Конкретный тип итераторов нас не интерисует.
------------------------------
Ну так вот, что мы имеем:
1.
В
boost wiki сказано что
Алексей Гуртовой разрабатывает any_iterator. Но пока что в boost он не включён.
Как я понимаю, скачать его можно здесь:
http://engineering.meta-comm.com/resources/mtn.zip
Пример использования:
http://rsdn.ru/Forum/Message.aspx?mid=2094520&only=1Автор: korzhik
Дата: 05.09.06
2.
Так же есть any_iterator от Adobe
http://opensource.adobe.com/classadobe_1_1any__iterator.html
3.
И последний, который попался мне на глаза от Томаса Бекера.
http://thbecker.net/free_software_utilities/type_erasure_for_cpp_iterators/start_page.html
может ещё где нибудь есть...
Вообще интересная штука, помоему достойна для включения в boost
korzhik wrote:
> Для тех кто не в курсе что такое any_iterator<> пару вводных слов:
> ------------------------------
> Вот например пишем библиотеку и есть у нас интерфейс который должен
> принимать итераторы, и мы говорим клиенту: "дай мне итераторы категории
> не ниже forward iterator, которые разыменовываются в int." Всё.
> Конкретный тип итераторов нас не интерисует.
> ------------------------------
>
> Ну так вот, что мы имеем:
>
> 1.
>
> В boost wiki
> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl> сказано
> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?LibrariesUnderConstruction>
> что Алексей Гуртовой <http://www.boost.org/people/aleksey_gurtovoy.htm>
> разрабатывает any_iterator. Но пока что в boost он не включён.
Он и в 2003 году был в разработке.
[]
> Вообще интересная штука, помоему достойна для включения в boost
У меня есть большие сомнения относительно совместимости такого итератора с
лучшими практиками программирования. Точно известо, что возвращать
container::iterator (не any_iterator) — не всегда хорошая практика, т.к.
пользователи привязываются к типу итератора конкретного контейнера, что может
вести к проблемам сопровождения кода и есть abstraction leak. По своему опыту,
дизайны которые мне казались удачными, не возвращали итераторов вообще.
--
Maxim Yegorushkin
No Microsoft product was used in any way to write or send this text.
If you use a Microsoft product to read it, you're doing so at your own risk Posted via RSDN NNTP Server 2.0
Здравствуйте, MaximE, Вы писали:
ME>korzhik wrote:
>> Для тех кто не в курсе что такое any_iterator<> пару вводных слов:
>> ------------------------------
>> Вот например пишем библиотеку и есть у нас интерфейс который должен
>> принимать итераторы, и мы говорим клиенту: "дай мне итераторы категории
>> не ниже forward iterator, которые разыменовываются в int." Всё.
>> Конкретный тип итераторов нас не интерисует.
>> ------------------------------
>>
>> Ну так вот, что мы имеем:
>>
>> 1.
>>
>> В boost wiki
>> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl> сказано
>> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?LibrariesUnderConstruction>
>> что Алексей Гуртовой <http://www.boost.org/people/aleksey_gurtovoy.htm>
>> разрабатывает any_iterator. Но пока что в boost он не включён.
ME>Он и в 2003 году был в разработке.
он помоему вообще с 2000 года
ME>[]
>> Вообще интересная штука, помоему достойна для включения в boost
ME>У меня есть большие сомнения относительно совместимости такого итератора с
ME>лучшими практиками программирования. Точно известо, что возвращать
ME>container::iterator (не any_iterator) — не всегда хорошая практика, т.к.
ME>пользователи привязываются к типу итератора конкретного контейнера, что может
ME>вести к проблемам сопровождения кода и есть abstraction leak. По своему опыту,
ME>дизайны которые мне казались удачными, не возвращали итераторов вообще.
ну как раз any_iterator избавляет от этой привязки.
А насчёт возвращения итераторов, то это конечно надо каждый случай отдельно рассматривать.