// PR c++/53356
// { dg-do compile }
struct A {};
struct B { operator const A & () const; };
struct C { operator const A & () const; C (); };
struct D { operator const A & () const; D (); ~D (); };
A *foo () { return new A (B ()); }
A *bar () { return new A (C ()); }
A *baz () { return new A (D ()); }