1// { dg-do assemble } 2 3template <class R, void (R::* A) (void)> 4class s 5{ 6public: 7 s (R &r) : _r (r) {} 8 9 void e (void) { (_r.*A) (); } 10 11private: 12 R &_r; 13}; 14 15class x 16{ 17public: 18 void test1 (void) { int j = 0; } 19 void test2 (void) { int j = 1; } 20}; 21 22int 23main (void) 24{ 25 x r; 26 27 s<x, &x::test1> c4 (r); 28 s<x, &x::test2> c5 (r); 29 30 return 0; 31} 32