// { 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;
}
