Преобразование стандартной ::пары итераторов в буст ::итератор _диапазон

У меня есть std::multimap, и я хочу создать boost::iterator_rangeиз equal_range. Я не нашел простого способа сделать это в документации, поэтому попробовал следующее:

typedef std::multimap<int, std::string> Map;
Map map;
...
boost::iterator_range<Map::iterator> r(map.equal_range(2));

Удивительно, но это работает (с использованием GCC 4.1.2 ). Мне интересно, как это работает. Я не нашел перегрузки для конструктора iterator_range, которая бы это делала, и multimap::iterator_range, очевидно, не имеет перегрузки, которая возвращала бы диапазоны Boost.

7
задан petersohn 16 April 2012 в 09:41
поделиться