In C ++ 20 kann der auto
Funktionsparametertyp verwendet werden.
Ermöglicht es auch die Verwendung auto
eines Platzhalters als Vorlagenargument (nicht ähnlich, aber in gewisser Weise im Sinne der C ++ 17-Vorlage <auto> ) für den Funktionsparametertyp?
Also der folgende Code vor C ++ 20:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
Könnte geschrieben werden als:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
Es kompiliert und funktioniert gut mit der experimentellen GCC-Implementierung für Konzepte.
Ist es eine legitime Syntax mit C ++ 20?
auto
erlaubt ist . [](const std::pair<auto, auto>& p){}
-std=c++2a
-std=c++17
auto
direkt Templatisierttypename XYZ
, was stark bedeuten würde, dass es sich um die legitime Syntax handelt. Ordentlich .