Tout en regardant les changements de version GCC 4.9.0 here, j'ai été agréablement surpris de lire ce qui suit; dans la section « nouvelles langues et des améliorations linguistiques spécifiques » C++:C++ 14 prendra-t-il en charge des fonctions génériques non contraintes?
G ++ prend en charge les fonctions génériques sans contrainte tel que spécifié par §4.1.2 et §5.1.1 de N3889: Concepts Lite Specification. Brièvement, auto peut être utilisé comme spécificateur de type dans une déclaration de paramètre de tout déclarateur de fonction afin d'introduire un paramètre de modèle de fonction implicite , semblable aux lambdas génériques.
// the following two function declarations are equivalent
auto incr(auto x) { return x++; }
template <typename T>
auto incr(T x) { return x++; }
J'ai construit GCC 4.9.0 et mes premiers tests a fonctionné comme prévu. Je crois que Concepts Lite restera en quelque sorte auxiliaire à la prochaine spécification C++ 14. Existe-t-il un plan pour que les «fonctions génériques non contraintes» deviennent une partie de C++?
Bien que je ne pense pas que cela deviendra 100% officiel jusqu'au 17 C++ , vous pouvez presque le faire en C++ 14: 'auto incr = [] (auto x) {return x ++;};' – chris
Bravo chris. Oui, je suis au courant de celui-là. – user2023370
Je ne trouve aucun des ajouts mentionnés dans '4.1.2' et' 5.1.1' de 'N3889' dans le dernier projet de norme' N3936', donc je dirais non pour C++ 14. –