C ++ 20 pozwala na użycie auto
typu parametru funkcji.
Czy pozwala również na użycie auto
jako 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?
auto
jest dozwolone w [](const std::pair<auto, auto>& p){}
(czy z -std=c++2a
lub -std=c++17
).
auto
bezpośrednio przekłada się na szablonytypename XYZ
, co zdecydowanie sugeruje, że jest to uzasadniona składnia. Schludny .