class some_value; typename int (some_value::*some_value_mfp)(int); template<some_value_mfp func> int 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<<call<&some_value::add_by>(v0,1)<<endl;       	cout<<call<&some_value::sub_by>(v0,2)<<endl;     	cout<<call<&some_value::mul_by>(v0,3)<<endl;      	return 0;     }