Now that shared_ptr is in tr1, what do you think should happen to the use of std::auto_ptr? They both have different use cases, but all use cases of
auto_ptr is nice in signatures, too. When a function takes an auto_ptr by value, it means it will consume the T. If a function returns an auto_ptr, it's clear that it relinquishes ownership. This can communicate your intents about the lifetime.
On the other hand, using scoped_ptr implies that you don't want to care about the lifetime of the T. This also implies you can use it in more places. Both smart pointers are valid choices, you can certainly have both in a single program.