Distancia entre istream_iterators

Estoy tratando de contar la cantidad de elementos leídos porstd::cin mediante el usostd::distance para el argumento constructor de un vector de antemano, así:

// Gives correct amount, but now can't use to put into vector
int size = std::distance(std::istream_iterator<std::string>(std::cin),
        std::istream_iterator<std::string>());

std::vector v(size);

// Already read from stream
std::copy(...);

Obviamente puedo completar esto en un solo paso constd::copy, pero eso requeriría establecer un tamaño de antemano. Sin embargo, mi pregunta no es sobre vectores, se trata de obtener el tamaño de una entrada arbitraria usandostd::istream_iterator Sin afectar la corriente. ¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta