C ++ 20 auto
işlev parametre türü için kullanılmasına izin verir .
Aynı zamanda kullanılmasına izin mu auto
bir ş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?
auto
izin verilip verilmeyeceği konusunda [](const std::pair<auto, auto>& p){}
( -std=c++2a
veya ile birlikte -std=c++17
) aynı anlaşmazlığa sahip olduğunu unutmayın .
auto
doğrudan temize dönüşürtypename XYZ
, bu da meşru sözdizimi olduğunu ima eder. Düzenli .