C++ラムダ式

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