Removed primary template definitions for Predecessor, Successor, Distance, Advance, IsEmpty, Deref ; partial specialisations enabled on whether the relevant parameters are real iterators have been added instead. This ensures that the implementor of Iterator-like objects provide the required basic functions.