Por que os algoritmos dos intervalos não são compatíveis com os iteradores do std?
#include <vector>
#include <iostream>
#include <range/v3/all.hpp>
int main()
{
auto coll = std::vector{ 1, 2, 3 };
ranges::copy(
coll,
ranges::ostream_iterator<int>{ std::cout, ", " }
); // ok
ranges::copy(
coll,
std::ostream_iterator<int>{ std::cout, ", " }
); // error
}
O problema é mostrado no código acima. eu usoranges-v3-0.3.7.
Para mim, o algoritmo genéricocopy
não deve se preocupar com o tipo de iterador de destino, desde que atenda aos requisitos do iterador de saída.
Se sim, por que os algoritmos dos intervalos não são compatíveis com os iteradores do std?