Я проектировал итератор, который работает с несколькими контейнерами и, таким образом, имеет прокси-объект в качестве возвращаемого типа.Из-за этого лучшее, что он может сделать, это быть входным итератором (это потому, что для прямых итераторов требуется reference
, чтобы быть реальным ссылочным типом, в то время как это не так для входных итераторов, насколько я вижу).
(позвольте мне сказать) обычный for_each
работает как шарм с моим итератором.
Однако, когда я посмотрел на его параллельную версию, я увидел, что он принимает только прямые итераторы.Поэтому я не могу использовать сложный итератор, который возвращает прокси-объект вместе с ним, и это раздражает.
С другой стороны, я посмотрел в Интернете другие известные реализации, и это не так часто, как я думал изначально - например, Intel TBB предлагаетсвоя параллель для каждого, который принимает входные итераторы.
Мой вопрос: почему параллель std::for_each
не работает с входными итераторами?
Я не вижу смысла в том, что они являются прямыми итераторами, потому чтона первый взгляд, он должен прекрасно работать даже с входными итераторами.Чего мне не хватает?