1// { dg-do assemble } 2 3class A { 4public: 5 virtual void f(); 6 int i; 7}; 8 9class B : public A { 10public: 11 void f(); 12 int j; 13}; 14 15template <void (A::*)() > 16void g() {} 17template <int A::*> 18void h() {} 19 20 21int 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 "" } 27 h<(int A::*) &A::i>(); // { dg-error "" } 28 g<(void (A::*)()) &B::f>(); // { dg-error "" } 29 h<(int A::*) &B::j>(); // { dg-error "" } 30 g<(void (A::*)()) 0>(); // { dg-error "" } 31 h<(int A::*) 0>(); // { dg-error "" } 32 33 return 0; 34} 35