Не уверен насчёт корректности названия, но я о
таких:
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
}
}
Здравствуйте, 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
Здравствуйте, 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.]
[Даю очевидные ответы на риторические вопросы]