C ++ 20 pozwala na użycie autotypu parametru funkcji.
Czy pozwala również na użycie autojako symbolu zastępczego argumentu szablonu (nie podobnego, ale w duchu szablonu C ++ 17 <auto> w pewien sposób) dla typu parametru funkcji?
Tak więc następujący kod sprzed C ++ 20:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
Można zapisać jako:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
To nie kompiluje i działa ładnie z eksperymentalnej realizacji GCC dla pojęć.
Czy jest to poprawna składnia w C ++ 20?
autojest dozwolone w [](const std::pair<auto, auto>& p){}(czy z -std=c++2alub -std=c++17).
autobezpośrednio przekłada się na szablonytypename XYZ, co zdecydowanie sugeruje, że jest to uzasadniona składnia. Schludny .