2011-02-02 10 views
9

tengo el siguiente código:análisis de un par de enteros con el espíritu impulso

std::string test("1.1"); 
std::pair<int, int> d; 

bool r = qi::phrase_parse(
     test.begin(), 
     test.end(), 
     qi::int_ >> '.' >> qi::int_, 
     space, 
     d 
     ); 

Así que estoy tratando de analizar la prueba de la cuerda y colocar el resultado en el std :: par d. Sin embargo, no funciona, sospecho que tiene que ver con el Compound Attribute Rules.

Alguna pista a la manera de conseguir este trabajo?

El error del compilador es el siguiente:

error: no matching function for call to 'std::pair::pair(const int&)'

Respuesta

18

Se debe trabajar. Lo que la gente olvida muy a menudo es añadir un

#include <boost/fusion/include/std_pair.hpp> 

a su lista de incluye. Esto es necesario para hacer que std::pair sea un ciudadano Fusion completo.

+1

Perfecto que funcionó .. ¿está escrito en algún lugar de la documentación? No pude encontrarlo, pero tal vez simplemente lo pasé por alto. – mortenvp

+0

Mismo problema, afortunadamente encontré la solución aquí :-) –

Cuestiones relacionadas