class some_value; typename int (some_value::*some_value_mfp)(int); templateint call(some_value &value ,int op){return (value.*func)(op);} class some_value { int value; public: some_value(int _value):value(_value){} int add_by(int op ){return value+=op;} int sub_by(int op ){return value-=op;} int mul_by(int op ){return value*=op;} ~some_value(); /* data */ }; int main(int argc, char const *argv[]) { some_value v0(0); cout< <&some_value::add_by>(v0,1)< (v0,2)< (v0,3)<