Я написал несколько функций с таким прототипом:
template <typename input_iterator>
int parse_integer(input_iterator &begin, input_iterator end);
Идея состоит в том, что вызывающая сторона будет предоставлять диапазон символов, а функция будет интерпретировать символы как целочисленное значение и возвращать его, оставляя begin
за последним последним использованным символом. Например:
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);
В результате для i
будет установлено значение 123, а p
будет "указывать" на пробел перед foo
.
С тех пор мне сказали (без объяснения причин), что передавать итератор по ссылке - это плохо. Это плохая форма? Если так, то почему?