2011-02-02 23 views
9

ile ints bir çift Ayrıştırma Aşağıdaki kod var: boost ruhu

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

Yani dize testini ayrıştırmak ve std :: çifti d sonucunu yerleştirmek için çalışıyorum. Ancak çalışmıyor, Compound Attribute Rules ile ilgili olduğundan şüpheleniyorum.

Bu çalışmayı nasıl alacağınıza dair ipuçları var mı?

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

cevap

18

Bu çalışması gerekir:

derleyici hatası şudur. İnsanların çok sık unutadıkları, içerdikleri listeye bir

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

eklemektir. Bu, std::pair'u tam üfleme Fusion vatandaşı yapmak için gereklidir.

+1

İşe yarayanlar mükemmeldi ... belgelerin içinde bir yere yazılıyor mu? Onu bulamadım ama belki göz ardı ettim. – mortenvp

+0

Aynı problem, neyse ki çözümü burada buldum :-) –