Existe-t-il un moyen de passer auto comme argument à une autre fonction?
int function(auto data)
{
//DOES something
}
Si vous voulez que cela signifie que vous pouvez passer n'importe quel type à la fonction, faites-en un template:
template <typename T> int function(T data);
Il existe une proposition pour C++ 17 d'autoriser la syntaxe utilisée (comme C++ 14 le fait déjà pour les lambdas génériques), mais ce n'est pas encore standard.
Les modèles sont comme cela que vous faites avec des fonctions normales:
template <typename T>
int function(T data)
{
//DOES something
}
Alternativement, vous pouvez utiliser un lambda:
auto function = [] (auto data) { /*DOES something*/ };
Je ne sais pas quand cela a changé, mais la syntaxe de Question est actuellement possible avec c ++ 14:
https://coliru.stacked-crooked.com/a/93ab03e88f745b6c
Il n'y a qu'un avertissement à ce sujet:
g ++ -std = c ++ 14 -Wall -pedantic -pthread main.cpp && ./a.out main.cpp: 5: 15: avertissement: utilisation de 'auto' dans la déclaration de paramètre uniquement disponible avec -fconcepts fonction void (auto data)
Avec c ++ 11, il y a une erreur:
main.cpp: 5: 15: erreur: utilisation de 'auto' dans la déclaration de paramètre uniquement disponible avec -std = c ++ 14 ou -std = gnu ++ 14