C++14のgeneric lambdaを使ってみる

C++11のラムダ式は,引数の型を指定する必要があった.

auto func = [](int a){ return a+1; };

これは,結構面倒で,例えば std::vector> に対して std::for_each する時だと

std::vector<std:map<int,int>> x;
std::for_each(x.begin(), x.end(), [](const std::map<int,int>& x){ … });

という感じで書かなければならなかった.

C++14からは,これに auto が使える.
つまり,上のコードは,

std::vector<std:map<int,int>> x;
std::for_each(x.begin(), x.end(), [](auto& x){ … });

となり,スッキリする.

これは現在 clang や,gcc4.9 で使えるようになっていて,
コンパイル時に -std=c++1y のオプションを追加するとコンパイルできる.