【一人 C++20 Advent Calendar 2019】ジェネリックラムダのテンプレート構文【9日目】
一人 C++20 Advent Calendar 2019 9日目の記事になります。
ジェネリックラムダのテンプレート構文
C++20 ではジェネリックラムダ式でテンプレート構文を書けるようになりました。
書き方は以下の通り。
#include <iostream> #include <vector> int main(){ // std::vector のみ引数に受け取る auto show = []<typename T>(std::vector<T> const& v) { for(auto n : v) { std::cout << n << std::endl; } }; show(std::vector { 1, 2, 3 }); show(std::vector { "homu", "mami", "mado" }); return 0; } /* output: 1 2 3 homu mami mado */
std::vector
のような特定のテンプレートクラスを受け取る場合に利用する事が出来ます。
ありそうでなかった便利そうな構文ですね。
サポートコンパイラ
- GCC 8
- Clang 9.0