Bonjour,
Toujours dans le l'optique de faire un petit parseur, je me heurte à un problème qui me parait étrange.
J'ai un parseur qui ne fait que de lire un int, et je voudrais mettre cet entier dans une variable après l'avoir fait passé dans une fonction.
j'ai un entier resultat et en voulant compiler ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int add5(int i) { return i+5; }
j'ai une erreur de compilation qui remplis mon terminal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 rule<iter_t > form; form = int_ [phx::ref(resultat) = boost::bind(add5,qi::_1)]
Pourtant en remplaçant l'action par l'une de ces actions
ça compile et ça marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [_val = boost::bind(add5,qi::_1)]; [_val = qi::_1]; [phx::ref(resultat) = qi::_1];
Ayant toujours vécu dans un monde ou l'opérateur = était transitif, j'ai du mal à comprendre pourquoi ça ne marche pas.
Evidement l'objectif final c'est pas d'ajouter 5 à un entier, juste de "maitriser" le ref et bind.
Ah et phx c'est boost::phoenix.
Enfin voilà je serais très reconnaissant envers celui qui pourrait me sortir de mon incompréhension.
Partager