When InputIterator is an input-iterator type, one cannot do:
InputIterator it;
for(it = first; it != beyond; it++)
because input iterators may not be default-constructible. Only forward
iterators are required, by the C++03 norm, to be default-constructible.
We need to write:
for(InputIterator it = first; it != beyond; it++)