1 // Copyright (C) 2007 Free Software Foundation
2 // Contributed by Ollie Wild <aaw@google.com>
3 // { dg-do compile }
4 
5 // Assorted pointer to member function implicit cast tests.
6 
7 struct A { int f (); };
8 struct B : A { int f (); };
9 struct P : A { int f (); };
10 struct V { int f (); };
11 struct D : B, virtual V, private P { int f (); };
12 
13 // Valid.
14 int (D::*p1)() = &B::f;
15 
16 // Derived class.
17 int (B::*p2)() = &D::f; // { dg-error "" }
18 
19 // Virtual base class.
20 int (D::*p3)() = &V::f; // { dg-error "" }
21 
22 // Inaccessible base class.
23 int (D::*p4)() = &P::f; // { dg-error "" }
24 
25 // Ambiguous base class.
26 int (D::*p5)() = &A::f;  // { dg-error "" }
27 
28 // Different member type.
29 float (D::*p6)() = &B::f;  // { dg-error "" }
30