Michael
Michael

Reputation: 313

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 means?

Upvotes: 0

Views: 302

Answers (1)

hkaiser
hkaiser

Reputation: 11521

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.

Upvotes: 1

Related Questions