C++11 如何在C++;

C++11 如何在C++;,c++11,lambda,python-decorators,C++11,Lambda,Python Decorators,我希望实现以下目标 #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);}; unsi

我希望实现以下目标

#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;
}
#包括
无符号foo(int i){return i;};
无符号条(无符号(*p)(){/*做重要的工作*/返回p();};
内部主(空){
整数=42;
自动lambda=[integer]()->无符号{return foo(integer);};
无符号数=巴(λ);

std::是否可以将
bar
更改为将
std::function
作为参数?这可以满足您的要求。只有没有任何捕获的lambda可以用作函数指针,请参见,例如。使用模板或
std::function
。无关:您应该摆脱单独编写
未签名
的习惯。它读起来像垃圾。
unsigned
什么?“unsigned”不是一个名词。@JoachimPileborg,如何使用模板来解决我的问题?如果我制作
foo()
模板,lambda仍然需要捕获
integer
,以便选择
foo()的模板版本
.No您将
bar
a模板:
template unsigned bar(tp){return p();}