// PR c++/3331: just because 'this' is readonly and bars[0].b is readonly
// doesn't mean that the result of the member reference is readonly.

struct foo
{
  int a;

  struct bar
  { int foo::* b ;};

  static const bar bars[];

  void bad ()
  {
    this->*(bars[0].b) = 42; // { dg-bogus "read-only" "" }
  }
};

const foo::bar foo::bars[] = { { &foo::a } };

int main ()
{ }
