2011-02-02 4 views
9

У меня есть следующий код:Синтаксические пару Интсов с повышающим духом

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 
     ); 

Так что я пытаюсь разобрать тест строки и поместить результат в станде :: парного д. Однако он не работает, я подозреваю, что он имеет отношение к Compound Attribute Rules.

Любые намеки на то, как это работает?

Ошибка компилятора заключается в следующем:

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

ответ

18

Он должен работать. То, что очень часто забывают, состоит в том, чтобы добавить

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

в список содержится. Это необходимо, чтобы сделать std::pair полноправным гражданином Fusion.

+1

Отлично, что сработало .. написано где-то в документации? Я не мог его найти, но, может быть, я просто забыл об этом. – mortenvp

+0

Такая же проблема, к счастью, нашла решение здесь :-) –

Смежные вопросы