– Iterators are *simple* extensions of raw pointers, whereas
– smart pointers are *grand* extensions of pointers.
They serve different purposes.
If an iterator is implemented as a class (template) then it usually defines
– operator==, >=
– operator* i.e. dereference
– operator++, —
– operator+, += i.e. long jumps
—-However, iterator class (template) won't define any operation unsupported by raw pointers, therefore no member functions! Smart pointers do define public ctor, get() etc