Creates a new iterator along elements of aggregate.
Returns a shared pointer to the newly created iterator.