¿Por qué los algoritmos de rangos no son compatibles con los iteradores de 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 
}

El problema se muestra en el código anterior. Yo suelo rangos-v3-0.3.7.

ara mí, el algoritmo genéricocopy no debería preocuparse por el tipo de iterador de destino siempre que cumpla con los requisitos del iterador de salida.

Si es así, ¿por qué los algoritmos de rangos no son compatibles con los iteradores de std?

Respuestas a la pregunta(1)

Su respuesta a la pregunta