This is the correct code:
template <typename T>
class SArrayIterator {
When you write class SArrayIterator<T>
the compiler thinks you're going to specialize the template, but you're not in this case and so you have to leave the <T>
out.
You can actually leave the <T>
out in the class body too, e.g.:
SArrayIterator operator ++(){