| // { dg-do run } |
| // { dg-options "-w" } |
| // GROUPS passed ARM-compliance |
| // arm file (also in cvt file) |
| // Message-Id: <9303061246.AA09402@gjetost.cs.wisc.edu> |
| // From: solomon@cs.wisc.edu (Marvin Solomon) |
| // Subject: Incorrect resolution of conversion path |
| // Date: Sat, 6 Mar 93 06:46:27 -0600 |
| |
| |
| extern "C" int printf (const char *, ...); |
| |
| class Base { |
| public: |
| int i; |
| Base(int ii) : i(ii) {} |
| }; |
| |
| class Derived : public Base { |
| public: |
| Derived(int ii) : Base(ii) {} |
| operator Base&(); |
| }; |
| |
| Derived::operator Base&() { |
| Base *b = new Base(100*i); |
| return *b; |
| } |
| |
| int f(Base &b) { |
| if (b.i == 99) |
| { printf ("PASS\n"); return 0; } |
| else |
| { printf ("FAIL\n"); return 1; } |
| } |
| |
| int main() { |
| Derived d(99); |
| return f(d); |
| } |
| |