Я понимаю лямбда-функцию и ее цель в С++ 11. Но я не понимаю разницы между "Захват значения" и "Передача аргумента". Для экземпляра..
#include <iostream>
#include <functional>
using namespace std;
int add(int a,int b){
return a+b;
}
int main(int argc, char** argv){
function <int(int,int)> cppstyle;
cppstyle = add;
auto l = [] (function <int(int,int)> f,int a, int b) {return f(a,b);};
cout << l(cppstyle,10,30) <<"\n";
}
Вывод кода выше того же кода, что и код ниже.
#include <iostream>
#include <functional>
using namespace std;
int add(int a,int b){
return a+b;
}
int main(int argc, char** argv){
function <int(int,int)> cppstyle;
cppstyle = add;
auto l = [cppstyle] (int a, int b) {return cppstyle(a,b);};
cout << l(10,30) <<"\n";
}
Захват значения аналогичен передаче значения в качестве аргумента? или захват имеет какое-то особое значение?