// { dg-do run  }
class A;
typedef int (A::*f_ptr) (void);

class B {
public:
  B() {}; ~B() {};
  B& dummy(f_ptr cb) { return *this; };
};

template<class SP, class CB> SP& call_dummy(SP* sp, CB cb) {
  sp->dummy(cb);
  return *sp;
}

class A {
public:
  A() {}; ~A() {};
  int ok() { return 0; };
  A& call_it(B* s) {
    call_dummy(s, &A::ok);
    return *this;
  };
};

int main() {
  A a; B b;
  a.call_it(&b);
  return 0;
}
