1 // { dg-do run } 2 template <class Called> 3 class aCallback 4 { 5 public: 6 aCallback(Called& obj, int (Called::*met)()); 7 8 int callback(); 9 10 protected: 11 12 private: 13 Called& object; 14 15 int (Called::*method)(); 16 17 }; 18 19 template <class Called> aCallback(Called & obj,int (Called::* met)())20aCallback<Called>::aCallback(Called& obj, 21 int (Called::*met)()) : 22 object(obj), 23 method(met) 24 {} 25 26 template <class Called> callback()27int aCallback<Called>::callback() 28 { 29 return (object.*method)(); 30 } 31 32 struct myStruct 33 { actionmyStruct34 int action() {return 0;} 35 }; 36 main()37int main() 38 { 39 myStruct toto; 40 41 aCallback<myStruct> cb(toto, &myStruct::action); 42 43 return cb.callback(); 44 } 45