Boost wave context concept_check issue
I'm debugging with concept check in boost and gcc. The code finds are error like this
/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
It refers me to this line
context_type::iterator_type first = ctx.begin();
context_type::iterator_type last = ctx.end();
408 is the first line there, but 409 is so similar I imagine it will have the same issue.
context_type is defined as such
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 is supposed to be part of context. Does anyone know Boost::Wave enough to know what this me开发者_开发技巧ans?
That's a known issue (see Boost ticket #1079), but not in Wave but in Spirit's (V1.x) parse tree generation code. The concept checking complains about an incomplete type.
This error only pops up when compiling Wave using gcc and with --enable-concept-checks or #define _GLIBCXX_CONCEPT_CHECKS 1.
精彩评论