auto_ptr::operator->

T *operator->() const throw();

The selection operator effectively returns get(), so that the expression al->m behaves the same as (al.get())->m, where al is an object of class auto_ptr<T>. Hence, the stored pointer must not be null, and T must be a class, structure, or union type.