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