Domanda

Al codice seguente sto cercando di utilizzare Boost Spirit Auto Parser per una sequenza o due doppi, ma non è in linea.Cosa sto facendo male qui?

// file main.cpp

#include <boost/tuple/tuple.hpp>
#include <boost/spirit/include/qi.hpp>

namespace qi = boost::spirit::qi;

int main()
{
    boost::tuple<double, double> p;
    char* i = 0;
    qi::phrase_parse( i, i, p, qi::space );
    // qi::phrase_parse( i, i, qi::double_ >> qi::double_, qi::space, qi::skip_flag::postskip, p );

    return 0;
}
.

La riga commentata compila, quindi accetta boost::tuple<double, double> come tipo di attributo di generatori di generazioneGode;Ma non riesce a ottenere il parser dal tipo di attributo.Perché?

È stato utile?

Soluzione

È la stessa risposta del tuo Altre domande - Usa invece boost::fusion::vector.

Altri suggerimenti

Compila per me (G ++ 4.6.1 / Boost 1.46.1) Se aggiungo quanto segue includi al tuo programma:

#include <boost/fusion/adapted/boost_tuple.hpp>
.

Credo che questo adatti Boost :: Tuple essere un boost conforme :: Sequenza di fusione, richiesta dalla regola dell'attributo composto della sequenza:

http://www.boost.org/doc/libs/1_48_0/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html

graham

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top