¿Qué tiene de malo pasar el iterador de C ++ por referencia?
He escrito algunas funciones con un prototipo como este:
template <typename input_iterator>
int parse_integer(input_iterator &begin, input_iterator end);
La idea es que la persona que llama proporcionará un rango de caracteres, y la función interpretará los caracteres como un valor entero y lo devolverá, dejando que comience en el pasado el último carácter utilizado. Por ejemplo
std::string sample_text("123 foo bar");
std::string::const_iterator p(sample_text.begin());
std::string::const_iterator end(sample_text.end());
int i = parse_integer(p, end);
Esto dejaríai
establecido en 123 yp
"apuntando" al espacio antes defoo
.
Desde entonces me han dicho (sin explicación) que es una mala forma pasar un iterador por referencia. ¿Es mala forma? Si es así, ¿por qué?