1. Почему нет разницы между range_iterator<C>::type и range_const_iterator<>C>>>>>>>>
В целом невозможно и не желательно найти соответствующий const_iterator. Когда можно придумать один, клиент может выбрать построить std::pair<const_iterator,const_iterator> объект.
Обратите внимание, что iterator_range является несколько более удобным, чем pair и что sub_range действительно пропагандирует постоянство.
2. Почему не поставляется больше типов или больше функций?
Библиотека была сохранена небольшой, потому что ее текущий интерфейс будет служить большинству целей. Если и когда возникает подлинная потребность в большей функциональности, она может быть реализована.
3. Как я должен реализовать общие алгоритмы для диапазонов?
Всегда следует начинать с общего алгоритма, который принимает два итератора (или более) в качестве входного. Тогда используй Boost. Построить более удобные версии на вершине алгоритма на основе итера. Обратите внимание, что как только версия диапазона алгоритма будет выполнена, имеет смысл не подвергать итераторную версию в публичном интерфейсе.
4. Почему нет концепции «Невероятный диапазон»?
Несмотря на то, что мы говорим о добавочных итераторах, это не имело бы большого смысла для диапазонов; например, мы не можем определить размер и пустоту диапазона, поскольку мы даже не можем сравнить его итераторы.
Обратите также внимание, что добавочные итераторы выводятся из выходных итераторов и поэтому не существует диапазона выхода.
Статья FAQ раздела Chapter 1. Range 2.0 Chapter 1. Range 2.0 может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.