| // { dg-do assemble } |
| // GROUPS passed overloading |
| typedef int rutBoolean; |
| |
| class rutBigIntRep |
| { |
| public: |
| friend rutBoolean operator>(const rutBigIntRep& a, const rutBigIntRep& b); |
| operator rutBoolean() const; |
| protected: |
| enum Kluge {kluge}; |
| rutBigIntRep(Kluge) {} |
| rutBigIntRep(); |
| rutBigIntRep(const rutBigIntRep& value); |
| rutBigIntRep& operator=(const rutBigIntRep& value); |
| }; |
| |
| rutBoolean operator>(const rutBigIntRep& a, const rutBigIntRep& b) { |
| // This should not result in a warning. It used to warn about the |
| // conversion from int to enum while exploring the possibility of |
| // converting `a' via `operator rutBoolean', then using the |
| // rutBigIntRep(Kluge) constructor. It later realizes it shouldn't |
| // do this, but the call to build_type_conversion was ending up with |
| // a warning in convert. |
| rutBigIntRep diff(a); |
| return 0; |
| } |