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();}