Параметр шаблона Iterator должен соответствовать требованиям для input iterator. Кроме того, если реализуется какая-либо из функций обхода с двунаправленным или произвольным доступом, параметр шаблона должен соответствовать требованиям для a Bidirectional Iterator или a Random Access Iterator, соответственно.