1 // Copyright (C) 2007 Free Software Foundation
2 // Contributed by Ollie Wild <aaw@google.com>
5 // Assorted pointer to member function implicit cast tests.
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 (); };
14 int (D::*p1)() = &B::f;
17 int (B::*p2)() = &D::f; // { dg-error "" }
19 // Virtual base class.
20 int (D::*p3)() = &V::f; // { dg-error "" }
22 // Inaccessible base class.
23 int (D::*p4)() = &P::f; // { dg-error "" }
25 // Ambiguous base class.
26 int (D::*p5)() = &A::f; // { dg-error "" }
28 // Different member type.
29 float (D::*p6)() = &B::f; // { dg-error "" }