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