// { dg-do assemble  }
// Bug: g++ fails to prefer UDC's alone to UDC's plus standard conversions.
struct B { };
struct D: public B { };
struct DP {
  operator D * () const;
  operator double () const;
};
void f (B *);
void f (D *);
void g (double);
void g (float);
void h (DP p)
{
  f (p);
  g (p);
}