1 // { dg-do assemble } 2 // GROUPS passed miscellaneous 3 //The program listed below produces the following error during compilation: 4 // % g++ bug17.cc 5 // bug17.cc: In method `class Y& Y::operator = (const class Y&)': 6 // bug17.cc:18: invalid use of non-lvalue array 7 8 class X { 9 public: 10 X& operator=(const X&) { return *this; } 11 }; 12 13 struct S { 14 char c[10]; 15 X x; 16 }; 17 18 class Y { 19 S s; 20 public: f()21 const S& f() const { return s; } 22 23 Y& operator=(const Y& _Y) { 24 s = _Y.s; // this line compiles 25 s = _Y.f(); // this line does not compile 26 return *this; 27 } 28 }; 29