// { dg-do run  }
// g++ 1.37.1 bug 900511_01

// g++ fails to properly apply user-defined type conversion operators
// in cases where is it not obvious that the given conversion is
// appropriate for the context (i.e. operator and other operands)
// where the conversion should take place.

// cfront 2.0 passes this test.

struct struct_1 {
  int member;

  operator int ();
};

struct_1::operator int ()
{
  return 0;
}

struct struct_2 {
  int member;

  operator float ();
};

struct_2::operator float ()
{
  return 0.0;
}

struct_1 struct_1_object;
struct_2 struct_2_object;
double d;

void test ()
{
  d = struct_2_object + struct_1_object;	// OK
  d = struct_1_object + struct_2_object;	// { dg-bogus "" } 
}

int main () { return 0; }
