// 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);
}