【一人 C++20 Advent Calendar 2019】autoパラメータによる関数テンプレートの簡易定義【7日目】

一人 C++20 Advent Calendar 2019 7日目の記事になります。

autoパラメータによる関数テンプレートの簡易定義

C++ 14 で実装されたジェネリックラムダでは引数型として auto が使えました。

auto plus = [](auto a, auto b) { return a + b; };
plus(1, 2);  // => 3

これに伴い C++20 では通常の関数でも引数型に auto が使用できるようになります。

#include <iostream>

auto
plus(auto a, auto b) {
    return a + b;
}
// 以下と同等
// template<typename T, typename U>
// auto
// plus(T a, U b) {
//     return a + b;
// }

int
main(){
    std::cout << plus(1, 2) << std::endl;
    std::cout << plus(3.14, 1.14) << std::endl;
    return 0;
}

うおーーこれは前からほしかった奴やん。
べんりそう。

参照