В полку 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[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 избавляет от этой привязки.
А насчёт возвращения итераторов, то это конечно надо каждый случай отдельно рассматривать.
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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.