これは通るけどこれでもいいの?

template<class T, class U> std::auto_ptr<T>
cast(std::auto_ptr<U>& ref)
{
return std::auto_ptr<T>(std::auto_ptr<U>(ref));
}