C++14: Generic lambdas
C++11 で実装されたラムダ式の引数に auto が使用できるようになりました(
いわゆる多相ラムダと呼ばれる機能。
これは template 引数と同様に引数型を抽象化することができる機能です。
// auto を使用することでどんな型でも受け取る事ができるラムダ式を定義できる auto plus = [](auto a, auto b){ return a + b; }; plus(1, 2); // => 3 plus(3.14, 3.41); // => 6.55 // 別々の型をわたしても問題ない plus(std::string("homu"), "mami"); // => 6.55
上記の plug
は
template<typename T, typename U> auto plus(T a, U b){ return a + b; }
という風な関数テンプレートと同等の挙動になります。
実装コンパイラ
- Clang 3.4
- GCC 4.9