Forbids iterators of different types(begin and end should have same type), if we want to iterate through members of struct or tuple - iterating by specific logic may require iterators of different types(iterator to begin may have type which will be different from type for iterator to end), because members of struct and tuple may be of different types
... - list may increase
Algorithms to incapsulate
std::for_each(may be the beggining)
... - list may increase
Iterators in STL have strict interface
Problems of strict interface in stl algoritms
Algorithms to incapsulate