// { dg-do assemble  }
// { dg-options "-Wconversion" } 
// Test that we resolve this case as mandated by the standard, but also
// warn about it.  We choose op char* not because it is a member of B --
// the standard says that all conversion ops are treated as coming from
// the type of the argument -- but because it is non-const.

struct A  {
  operator const char *() const { return ""; }
};

struct B : public A {
  operator char *() { return 0; }
};

int main()
{
  B b;
  if ((const char *)b != 0)  // { dg-warning "choosing 'B" "B" } surprising overload resolution
  // { dg-warning "for conversion" "conv" { target *-*-* } .-1 }
  // { dg-message "note" "note" { target *-*-* } .-2 }
    return 1;
  if ((const char *)(const B)b == 0)
    return 2;
  if ((const char *)(const B &)b == 0)
    return 3;
}
