Одиночный итератор и range-based for
От: flаt  
Дата: 24.09.14 13:07
Оценка:
Не уверен насчёт корректности названия, но я о таких:

A default constructed iterator represents the end of the list.


Какие есть варианты по скрещиванию?

Вижу заворачивание пары в промежуточный объект:

template<class Iterator>
using iterators_pair = std::pair<Iterator, Iterator>;

namespace std {
  template<class Iterator>
  Iterator begin(const std::pair<Iterator, Iterator>& range) { return range.first; }

  template<class Iterator>
  Iterator   end(const std::pair<Iterator, Iterator>& range) { return range.second; }
}

template<class Iterator>
std::pair<Iterator, Iterator> as_range(Iterator first)   { return std::make_pair(first, Iterator()); }

int main()
{
  using boost::asio::ip::tcp::resolver;
  resolver dns(...);
  for( auto& result: as_range(dns.resolve(...)) ) {
    // use result
  }
}
Re: Одиночный итератор и range-based for
От: Evgeny.Panasyuk Россия  
Дата: 24.09.14 13:14
Оценка:
Здравствуйте, flаt, Вы писали:

F>Какие есть варианты по скрещиванию?

F>Вижу заворачивание пары в промежуточный объект:

iterator_range и make_iterator_range
http://www.boost.org/doc/libs/1_56_0/libs/range/doc/html/range/reference/utilities/iterator_range.html
Re: Одиночный итератор и range-based for
От: Vain Россия google.ru
Дата: 24.09.14 19:55
Оценка:
Здравствуйте, flаt, Вы писали:

F>Не уверен насчёт корректности названия, но я о таких:

F>

A default constructed iterator represents the end of the list.

Так, на всякий случай:
http://rsdn.ru/forum/src/3807406
Автор: Vain
Дата: 14.05.10
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.