В полку any_iterators прибыло
От: korzhik Россия  
Дата: 29.10.06 09:56
Оценка: 15 (2)
Здравствуйте,

Для тех кто не в курсе что такое 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&amp;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
Re: В полку any_iterators прибыло
От: MaximE Великобритания  
Дата: 30.10.06 12:09
Оценка: +2
korzhik wrote:

> Для тех кто не в курсе что такое any_iterator<> пару вводных слов:

> ------------------------------
> Вот например пишем библиотеку и есть у нас интерфейс который должен
> принимать итераторы, и мы говорим клиенту: "дай мне итераторы категории
> не ниже forward iterator, которые разыменовываются в int." Всё.
> Конкретный тип итераторов нас не интерисует.
> ------------------------------
>
> Ну так вот, что мы имеем:
>
> 1.
>
> В boost wiki
> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl&gt; сказано
> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?LibrariesUnderConstruction&gt;
> что Алексей Гуртовой <http://www.boost.org/people/aleksey_gurtovoy.htm&gt;
> разрабатывает 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
Re[2]: В полку any_iterators прибыло
От: korzhik Россия  
Дата: 30.10.06 12:27
Оценка: 1 (1) +1
Здравствуйте, MaximE, Вы писали:

ME>korzhik wrote:


>> Для тех кто не в курсе что такое any_iterator<> пару вводных слов:

>> ------------------------------
>> Вот например пишем библиотеку и есть у нас интерфейс который должен
>> принимать итераторы, и мы говорим клиенту: "дай мне итераторы категории
>> не ниже forward iterator, которые разыменовываются в int." Всё.
>> Конкретный тип итераторов нас не интерисует.
>> ------------------------------
>>
>> Ну так вот, что мы имеем:
>>
>> 1.
>>
>> В boost wiki
>> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl&gt; сказано
>> <http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?LibrariesUnderConstruction&gt;
>> что Алексей Гуртовой <http://www.boost.org/people/aleksey_gurtovoy.htm&gt;
>> разрабатывает any_iterator. Но пока что в boost он не включён.

ME>Он и в 2003 году был в разработке.


он помоему вообще с 2000 года

ME>[]


>> Вообще интересная штука, помоему достойна для включения в boost


ME>У меня есть большие сомнения относительно совместимости такого итератора с

ME>лучшими практиками программирования. Точно известо, что возвращать
ME>container::iterator (не any_iterator) — не всегда хорошая практика, т.к.
ME>пользователи привязываются к типу итератора конкретного контейнера, что может
ME>вести к проблемам сопровождения кода и есть abstraction leak. По своему опыту,
ME>дизайны которые мне казались удачными, не возвращали итераторов вообще.

ну как раз any_iterator избавляет от этой привязки.
А насчёт возвращения итераторов, то это конечно надо каждый случай отдельно рассматривать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.