C++ではラムダ式を用いて、簡易的な関数オブジェクトの生成を行うことが出来る(C++11移行).
ラムダ式の書式は
[](){}
となっている。順にキャプチャリスト、パラメータリスト、関数の本体が記述される。
例
auto func = [](int a, int b){ return a + b; };
int res = func(2, 3); //= res = 5
また、ラムダ式は関数の引数にすることも出来る
#include <iostream>
void foo(int(*fp)(int, int))
{
int result = fp(2, 3);
std::cout << result << std::endl;
}
int main()
{
foo([](int a, int b) { return a + b; });
}
コピーキャプチャの例
void copy_capture_example()
{
int a = 0;
auto f = [a] { return a; };
a = 1;
int result = f(); // result == 0
std::cout << result << std::endl;
}


