// { dg-do assemble  }
// GROUPS passed miscellaneous
//The program listed below produces the following error during compilation:
//   % g++ bug17.cc
//   bug17.cc: In method `class Y& Y::operator = (const class Y&)':
//   bug17.cc:18: invalid use of non-lvalue array

class X {
public:
   X& operator=(const X&) { return *this; }
};

struct S {
   char c[10];
   X x;
};

class Y {
   S s;
public:
   const S& f() const { return s; }

   Y& operator=(const Y& _Y) {
      s = _Y.s;    // this line compiles
      s = _Y.f();  // this line does not compile
      return *this;
   }
};
