EP>1. Четыре одинаковых итератора тут только в частном случае, а в общем — две пары разных итераторов.
Одна беда — поскольку типы итераторов являются параметрами шаблона, то типизация не помешает перепутать эти пары местами.
Что касается конкретно std::search, то ИМХО в большинстве случаев все четыре итератора будут одного типа.
EP>2. Во всей библиотеке итераторы из одного range принимаются по порядку, запутаться трудно.
Однако новички путаются. И даже — страшно сказать — забывают, надо ли ставить первым в паре begin или end. Да, со временем привыкают. Ну так о том и речь, что ножик-то слишком острый, чтобы намазывать им масло на хлеб, мог бы быть и потупее.
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)