C ++ 20 consente l'utilizzo auto
per il tipo di parametro della funzione.
Permette anche di utilizzare auto
come segnaposto argomento modello (non simile, ma nello spirito del modello C ++ 17 <auto> in un certo senso) per il tipo di parametro funzione?
Quindi il seguente codice, pre C ++ 20:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
Potrebbe essere scritto come:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
Si compila e funziona bene con l'implementazione sperimentale di GCC per concetti.
È una sintassi legittima con C ++ 20?
auto
sia consentito [](const std::pair<auto, auto>& p){}
(con -std=c++2a
o con -std=c++17
).
auto
si traduce direttamente in templatizzatotypename XYZ
, il che implicherebbe fortemente che si tratti della sintassi legittima. Pulito .