Повышение уровня контекста - PullRequest
0 голосов
/ 01 ноября 2010

Я отлаживаю с проверкой концепции в boost и gcc. Код находит ошибки, как это

/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

Отсылает меня к этой строке

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

408 - первая строка там, но 409 настолько похож, что я думаю, что у него будет та же проблема.

context_type определен как таковой

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 должен быть частью контекста. Кто-нибудь знает Boost :: Wave достаточно, чтобы понять, что это значит?

1 Ответ

1 голос
/ 02 ноября 2010

Это известная проблема (см. Boost ticket # 1079 ), но не в Wave, а в коде генерации дерева разбора Spirit (V1.x). Проверка концепции жалуется на неполный тип.

Эта ошибка появляется только при компиляции Wave с использованием gcc и с --enable-concept-check или #define _GLIBCXX_CONCEPT_CHECKS 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...