C ++ 20 autoişlev parametre türü için kullanılmasına izin verir .
Aynı zamanda kullanılmasına izin mu autobir şablon bağımsız değişken tutucu olarak (benzer, ama ruhunda C ++ 17 şablon <oto> bir şekilde) işlev parametre tipleri için?
Yani aşağıdaki kod, C ++ 20 öncesi:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
Şu şekilde yazılabilir:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
Bu derleme yapar ve güzel işler kavramlar için deneysel GCC uygulamasıyla.
C ++ 20 ile meşru bir sözdizimi mi?
autoizin verilip verilmeyeceği konusunda [](const std::pair<auto, auto>& p){}( -std=c++2aveya ile birlikte -std=c++17) aynı anlaşmazlığa sahip olduğunu unutmayın .
autodoğrudan temize dönüşürtypename XYZ, bu da meşru sözdizimi olduğunu ima eder. Düzenli .