// PR c++/35773 template< typename T > class auto_ptr { struct auto_ptr_ref { }; public: auto_ptr(auto_ptr&); auto_ptr(auto_ptr_ref); operator auto_ptr_ref(); }; template< typename T > class reference_wrapper { public: reference_wrapper(T& t); operator T& () const; }; struct X { }; void f(auto_ptr< X >); void g(reference_wrapper< auto_ptr< X > > r) { f(r); }