我想实现以下
#include <iostream>
unsigned foo(int i) {return i;};
unsigned bar(unsigned(*p)()) {/*Do important work*/return p();};
int main(void){
int integer = 42;
auto lambda = [integer] () -> unsigned {return foo(integer);};
unsigned number = bar(lambda);
std::cout << number << std::endl;
}
也就是说,bar
期望一个没有参数的函数指针并返回unsigned。我可以轻松编写一个包装器unsigned baz() {return foo(42);};
并将其传递给bar()
,但这有两个缺点
这个想法是bar()
正在做一些工作,在调用函数的过程中,传递给它。我有一个合适的函数,但它有一个额外的参数。然而,在将函数传递给bar()
时,这个额外的参数是已知的。
有没有办法解决这个问题,还是应该忘记这种方法并使用模板?我可以控制更改界面(例如将函数指针参数更改为std :: function).`