J'ai écrit le code de test suivant. La fonctionnalité de ce segment de code est de trouver la plus longue séquence continue d'un ensemble de chiffres donné. J'utilise une mise en œuvre de la Lambda récursive ( std :: fonction code>) dans la partie de la logique de traitement liée au tri du vecteur
g++ -ggdb -std=c++14 -Wall code.cpp
code.cpp:35:5: error: no matching function for call to object of type 'function<void (vector<pair<int, int> >::iterator &, vector<pair<int, int> >::iterator &)>' (aka 'function<void (__wrap_iter<std::__1::pair<int, int> *> &, __wrap_iter<std::__1::pair<int, int> *> &)>')
func_obj3(r.begin(), r.end());
^~~~~~~~~
/Library/Developer/CommandLineTools/usr/include/c++/v1/functional:1677:9: note: candidate function not viable: expects an l-value for 1st argument
_Rp operator()(_ArgTypes...) const;
^
1 error generated.
3 Réponses :
Guess, l'erreur était liée à la deuxième ligne de la sortie du compilateur: a modifié les arguments d'invocation sur les valeurs L pour vous débarrasser de l'erreur. P> p>
Basé sur le message d'erreur Vous pouvez essayer de changer le lambda func_obj2 à: p> CODE.CPP: 35: 5: Erreur: Aucune fonction correspondante pour appeler à l'objet de type 'Fonction
auto func_obj3 = [&](auto begin, auto end){/*...*/};