C ++ 20ではauto
、関数パラメーター型を使用できます。
関数パラメーター型のauto
テンプレート引数プレースホルダーとして使用することもできますか(似ていないが、C ++ 17 template <auto>の精神で)。
したがって、C ++ 20より前の次のコード:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
次のように書くことができます:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
それはコンパイルし、概念の実験的なGCC実装でうまく動作します。
C ++ 20での正当な構文ですか?
auto
直接 templatizedtypename XYZ
に変換されます。これは、それが正当な構文であることを強く示唆しています。きちんと。