1// { dg-do assemble  }
2// GROUPS passed member-pointers error-reporting
3struct Y
4{
5  struct X
6    {
7      int A;
8      int Y::X::* foo () { undef1(1); return &Y::X::A; }// { dg-error "" } foo().*
9      int bar () { return A; }
10    };
11};
12
13int Y::X::* foo ()
14{
15  undef2(1);// { dg-error "" } foo().*
16  return &Y::X::A;
17}
18
19int Y::X::* (* foo2 ())()
20{
21  undef3(1);// { dg-error "" } foo().*
22  return foo;
23}
24
25int (Y::X::* bar2 ()) ()
26{
27  undef4(1);// { dg-error "" } foo\(\).*
28  return Y::X::bar;// { dg-error "" } foo\(\).*
29}
30
31int Y::X::* (Y::X::* foo3 ())()
32{
33  undef5(1);// { dg-error "" } foo().*
34  return Y::X::foo;// { dg-error "" } foo().*
35}
36