異なる関数への 2 つのポインターがあります。
typedef std::vector<double> TData;
double ( * p_test1 ) ( const TData> &arg);
double ( * p_test2 ) ( const TData> &ar1, char *arg2, char *arg3);
関数へのポインタを引数として持つメソッド
double f (double ( * p_test1 ) ( const TData &arg ))
{
//Long and not trivial algorithm processing results of p_test
for ( i = 0;... )
{
double res = p_test (arg); //Some computations
}
}
f() メソッドには難しい計算が含まれています (ここでは for サイクルに置き換えられています)。
この引数 (つまり、異なる量のパラメーターを持つ関数へのポインター) をテンプレート化して、両方の型の引数を処理する一般的な関数を取得することは可能ですか?
double f (double ( * p_test1 ) ( const TData &arg ));
double f (double ( * p_test2 ) ( const TData> &ar1, char *arg2, char *arg3));
または、関数へのポインターへのポインターを書き込むなど、そのような関数を記述する方法はありますか?
f() 関数の部分的な特殊化は複雑であるため避けたい (長いコードを繰り返し上書きするのは効率的ではない)。
ご協力いただきありがとうございます...