C/C++ で別の関数への関数ポインタを返す汎用関数を作成したいと考えています。ただし、2 番目に返される関数は、最初の関数の変数を使用できる必要があります。
例、
typedef double (*func_t)(double);
func_t inverse(func_t fn) {
// define another function here that uses fn
double solve(double x) {
// use fn
}
return &solve;
}
double sqr(double x) { return x * x; }
int main() {
func_t inv = inverse(sqr);
printf("sqrt %d = %f\n", 100, inv(100));
}
明らかに、gcc、g++ ではこれを行うことができません。クラスや構造体を使わずにこれを達成できますか?