C ++ 20 permet d'utiliser le auto
type de paramètre de fonction.
Cela permet-il également d'utiliser auto
comme espace réservé d'argument de modèle (pas similaire, mais dans l'esprit du modèle C ++ 17 <auto> d'une certaine manière) pour le type de paramètre de fonction?
Donc le code suivant, pré C ++ 20:
template<typename First, typename Second>
void printPair(const std::pair<First, Second>& p) {
std::cout << p.first << ", " << p.second;
}
Pourrait être écrit comme:
void printPair(const std::pair<auto, auto>& p) {
std::cout << p.first << ", " << p.second;
}
Il compile et fonctionne bien avec l'implémentation expérimentale de GCC pour les concepts.
Est-ce une syntaxe légitime avec C ++ 20?
auto
est autorisé à entrer [](const std::pair<auto, auto>& p){}
(que ce soit avec -std=c++2a
ou -std=c++17
).
auto
se traduit directement en modèletypename XYZ
, ce qui impliquerait fortement que c'est la syntaxe légitime. Neat .