2010-11-01 5 views
0

Je débogue avec la vérification de concept dans boost et gcc. Le code trouve sont des erreurs comme ceBoost wave context concept_check question

/home/hoffman34/boostlibsinstall64/include/boost/wave/util/ 
cpp_iterator.hpp:2495:1: instantiated from 

'boost::wave::pp_iterator<boost::wave::context<__gnu_cxx::__normal_iterator<char*, 
std::basic_string<char> >, 
boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >, 
boost::wave::iteration_context_policies::load_file_to_string, 
advanced_preprocessing_hooks> >' 
../../../../ROSE/src/frontend/SageIII/attachPreprocessingInfo.C:408:34: instantiated 
from here 
/nfs/apps/gcc/4.5.0/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include 
/c++/4.5.0/bits/boost_concept_check.h:209:7: error: using invalid field 
'__gnu_cxx::_SGIAssignableConcept<_Tp>::__a' 
make[6]: *** [attachPreprocessingInfo.lo] Error 1 

Il me réfère à cette ligne

context_type::iterator_type first = ctx.begin(); 
context_type::iterator_type last = ctx.end(); 

408 est la première ligne là, mais 409 est si semblable que j'imagine que ce sera la même question.

context_type est défini comme tel

typedef boost::wave::context<std::string::iterator, lex_iterator_type, 
boost::wave::iteration_context_policies::load_file_to_string, 
advanced_preprocessing_hooks > context_type; 

iterator_type est censé faire partie du contexte. Est-ce que quelqu'un sait Boost :: Wave assez pour savoir ce que cela signifie?

+1

je regardais cpp_iterator.hpp pour essayer de savoir exactement quel type il pense est inassignable. – aschepler

+0

va donner un coup de feu, et éditer le message si nécessaire! – Michael

+0

Je ne pense pas que ce soit la partie cpp, la vérification du concept d'amplification vérifie là pour une affectation et un opérateur de copie – Michael

Répondre

1

C'est un problème connu (voir Boost ticket #1079), mais pas dans Wave mais dans le code de génération d'arbre d'analyse de Spirit (V1.x). La vérification de concept se plaint d'un type incomplet.

Cette erreur ne saute vers le haut lors de la compilation avec gcc et vague avec des chèques-concept---enable ou #define _GLIBCXX_CONCEPT_CHECKS 1.

+0

MERCI! Cela me rendait fou. OK, maintenant je dois trouver comment le contourner. – Michael