【发布时间】:2020-02-05 17:00:18
【问题描述】:
#include <iostream>
#include <functional>
int main(){
int a = 10;
std::function<int(int)> functionPointer = [a](int a)-> int{ return a + a + 100 ; };
int returnValue = functionPointer(50);
std::cout<<returnValue<<endl;
}
我期望 10+50+100 = 160,但输出是 10+10+100 = 120。我可以做任何更改以获得 160,同时保持变量名不变?
【问题讨论】:
-
为什么不重命名函数参数?
-
那么 [a](int x)-> int{ return a + x + 100 ; }; i> span>
-
没有。这是不可能的。
-
正式地说程序是格式错误的。这意味着编译器很可能无法编译代码,或者如果没有,程序的行为是未定义的。
标签: c++ c++11 lambda functional-programming inline-functions