class function_pointer_base
{
public:
+ virtual _Ret call(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16) = 0;
+ _Ret operator()(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16){ return call(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16); }
};
/////////////////////////////////////////////////////////////
_Ret operator()(T1 t1, T2 t2){ return call(t1,t2); }
};
+ ////
+
+ template <typename _Ret, typename _Class, typename T1, typename T2, typename T3>
+ class method_pointer<_Ret,_Class,T1,T2,T3>
+ {
+ public:
+ virtual _Ret call(T1 t1, T2 t2, T3 t3) = 0;
+ _Ret operator()(T1 t1, T2 t2, T3 t3){ return call(t1,t2,t3); }
+ };
+
+ ////
+
+ template <typename _Ret, typename _Class, typename T1, typename T2, typename T3, typename T4>
+ class method_pointer<_Ret,_Class,T1,T2,T3,T4>
+ {
+ public:
+ virtual _Ret call(T1 t1, T2 t2, T3 t3, T4 t4) = 0;
+ _Ret operator()(T1 t1, T2 t2, T3 t3, T4 t4){ return call(t1,t2,t3,t4); }
+ };
+
/////////////////////////////////////////////////////////////
}