1 // { dg-do assemble }
2
3 class A {
4 public:
5 virtual void f();
6 int i;
7 };
8
9 class B : public A {
10 public:
11 void f();
12 int j;
13 };
14
15 template <void (A::*)() >
g()16 void g() {}
17 template <int A::*>
h()18 void h() {}
19
20
main()21 int main() {
22 g<&A::f>();
23 h<&A::i>();
24 g<&B::f>(); // { dg-error "" }
25 h<&B::j>(); // { dg-error "" }
26 g<(void (A::*)()) &A::f>(); // { dg-error "" "" { xfail c++11 } }
27 h<(int A::*) &A::i>(); // { dg-error "" "" { xfail c++11 } }
28 g<(void (A::*)()) &B::f>(); // { dg-error "" "" { xfail { c++11 && { aarch64*-*-* arm*-*-* mips*-*-* } } } }
29 h<(int A::*) &B::j>(); // { dg-error "" }
30 g<(void (A::*)()) 0>(); // { dg-error "" "" { target { ! c++11 } } }
31 h<(int A::*) 0>(); // { dg-error "" "" { target { ! c++11 } } }
32
33 return 0;
34 }
35