Re: [Boost-users] [wave] some more questions...

Hartmut, I got the latest releases of Spirit and Wave, but unfortunately they break my code. The problem reported by VS 8 Compiler is mainly in the transform_iterator usage: E:\libraries\boost\include\boost-1_34\boost/iterator/transform_iterator.hpp(91) : error C2872: 'detail' : ambiguous symbol could be 'boost::detail' or 'boost::spirit::detail' E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(1214) : see reference to class template instantiation 'boost::transform_iterator<UnaryFunction,Iterator,Reference>' being compiled with [ UnaryFunction=const boost::wave::cpplexer::lex_token<> &(__cdecl *)(const boost::spirit::tree_node<boost::spirit::node_val_data<boost::wave::cpplexer::lex_iterator<token_groups::token_type>,boost::spirit::nil_t>> &), Iterator=const_child_iterator_t, Reference=const boost::wave::cpplexer::lex_token<> & ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(1099) : while compiling class template member function 'bool boost::wave::impl::pp_iterator_functor<ContextT>::dispatch_directive(const boost::spirit::tree_parse_info<IteratorT,NodeFactoryT> &,const boost::wave::cpplexer::lex_token<> &,const std::list<_Ty,_Ax> &)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>, IteratorT=boost::wave::cpplexer::lex_iterator<token_groups::token_type>, NodeFactoryT=boost::wave::grammars::cpp_grammar_gen<boost::wave::cpplexer::lex_iterator<token_groups::token_type>,std::list<boost::wave::cpplexer::lex_token<>,boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>>>>::node_factory_type, _Ty=boost::wave::cpplexer::lex_token<>, _Ax=boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>> ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(789) : while compiling class template member function 'const boost::wave::cpplexer::lex_token<> &boost::wave::impl::pp_iterator_functor<ContextT>::pp_token(bool)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(577) : while compiling class template member function 'const boost::wave::cpplexer::lex_token<> &boost::wave::impl::pp_iterator_functor<ContextT>::get_next_token(void)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(459) : while compiling class template member function 'const boost::wave::cpplexer::lex_token<> &boost::wave::impl::pp_iterator_functor<ContextT>::operator ()(void)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ] E:\libraries\boost\include\boost-1_34\boost/spirit/iterator/multi_pass.hpp(877) : while compiling class template member function 'boost::spirit::multi_pass<InputT,InputPolicy>::multi_pass(InputT)' with [ InputT=boost::wave::impl::pp_iterator_functor<boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>>, InputPolicy=boost::wave::util::functor_input ] E:\libraries\boost\include\boost-1_34\boost/spirit/iterator/multi_pass.hpp(942) : while compiling class template member function 'boost::spirit::multi_pass<InputT,InputPolicy>::multi_pass(const boost::spirit::multi_pass<InputT,InputPolicy> &)' with [ InputT=boost::wave::impl::pp_iterator_functor<boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>>, InputPolicy=boost::wave::util::functor_input ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(2217) : see reference to class template instantiation 'boost::spirit::multi_pass<InputT,InputPolicy>' being compiled with [ InputT=boost::wave::impl::pp_iterator_functor<boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>>, InputPolicy=boost::wave::util::functor_input ] ..\..\..\parser\header_processor.cpp(159) : see reference to class template instantiation 'boost::wave::pp_iterator<ContextT>' being compiled with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ] With Kind Regards, Ovanes Markarian On Thu, July 5, 2007 00:04, Hartmut Kaiser wrote: [...] With Kind Regards, Ovanes Markarian

Hartmut, just to get back to my post... Don't know why but it seems like ADL got broken when installed CVS Head revisions. Adding boost:: prefix where detail::iterator... was used fixed the problem. Unfortunately, I don't know what was changed and adding in all iterator headers boost:: prefix is a bit strange... With Kind Regards, Ovanes On Thu, July 5, 2007 11:07, Ovanes Markarian wrote:
Hartmut,
I got the latest releases of Spirit and Wave, but unfortunately they break my code. The problem reported by VS 8 Compiler is mainly in the transform_iterator usage:
E:\libraries\boost\include\boost-1_34\boost/iterator/transform_iterator.hpp(91) : error C2872: 'detail' : ambiguous symbol could be 'boost::detail' or 'boost::spirit::detail' E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(1214) : see reference to class template instantiation 'boost::transform_iterator<UnaryFunction,Iterator,Reference>' being compiled with [ UnaryFunction=const boost::wave::cpplexer::lex_token<> &(__cdecl *)(const boost::spirit::tree_node<boost::spirit::node_val_data<boost::wave::cpplexer::lex_iterator<token_groups::token_type>,boost::spirit::nil_t>> &), Iterator=const_child_iterator_t, Reference=const boost::wave::cpplexer::lex_token<> & ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(1099) : while compiling class template member function 'bool boost::wave::impl::pp_iterator_functor<ContextT>::dispatch_directive(const boost::spirit::tree_parse_info<IteratorT,NodeFactoryT> &,const boost::wave::cpplexer::lex_token<> &,const std::list<_Ty,_Ax> &)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>, IteratorT=boost::wave::cpplexer::lex_iterator<token_groups::token_type>, NodeFactoryT=boost::wave::grammars::cpp_grammar_gen<boost::wave::cpplexer::lex_iterator<token_groups::token_type>,std::list<boost::wave::cpplexer::lex_token<>,boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>>>>::node_factory_type, _Ty=boost::wave::cpplexer::lex_token<>, _Ax=boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>> ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(789) : while compiling class template member function 'const boost::wave::cpplexer::lex_token<> &boost::wave::impl::pp_iterator_functor<ContextT>::pp_token(bool)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(577) : while compiling class template member function 'const boost::wave::cpplexer::lex_token<> &boost::wave::impl::pp_iterator_functor<ContextT>::get_next_token(void)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(459) : while compiling class template member function 'const boost::wave::cpplexer::lex_token<> &boost::wave::impl::pp_iterator_functor<ContextT>::operator ()(void)' with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ] E:\libraries\boost\include\boost-1_34\boost/spirit/iterator/multi_pass.hpp(877) : while compiling class template member function 'boost::spirit::multi_pass<InputT,InputPolicy>::multi_pass(InputT)' with [ InputT=boost::wave::impl::pp_iterator_functor<boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>>, InputPolicy=boost::wave::util::functor_input ] E:\libraries\boost\include\boost-1_34\boost/spirit/iterator/multi_pass.hpp(942) : while compiling class template member function 'boost::spirit::multi_pass<InputT,InputPolicy>::multi_pass(const boost::spirit::multi_pass<InputT,InputPolicy> &)' with [ InputT=boost::wave::impl::pp_iterator_functor<boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>>, InputPolicy=boost::wave::util::functor_input ] E:\libraries\boost\include\boost-1_34\boost/wave/util/cpp_iterator.hpp(2217) : see reference to class template instantiation 'boost::spirit::multi_pass<InputT,InputPolicy>' being compiled with [ InputT=boost::wave::impl::pp_iterator_functor<boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy>>, InputPolicy=boost::wave::util::functor_input ] ..\..\..\parser\header_processor.cpp(159) : see reference to class template instantiation 'boost::wave::pp_iterator<ContextT>' being compiled with [ ContextT=boost::wave::context<token_groups::str_iter_type,token_groups::lex_iter_type,token_groups::input_policy,token_groups::hooking_policy> ]
With Kind Regards,
Ovanes Markarian
On Thu, July 5, 2007 00:04, Hartmut Kaiser wrote: [...]
With Kind Regards,
Ovanes Markarian
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Ovanes,
just to get back to my post... Don't know why but it seems like ADL got broken when installed CVS Head revisions. Adding boost:: prefix where detail::iterator... was used fixed the problem. Unfortunately, I don't know what was changed and adding in all iterator headers boost:: prefix is a bit strange...
Yeah, I added these explicit boost:: prefixes in CVS::HEAD already. Let me see, what I can do to disambiguate from my end. Regards Hartmut

Did you add these prefixes in iterator lib header or in wave/spirit? May be you should add ::boost:: this will disable ADL then. One more thing I faced now: I have to rebuild boost, with the newly taken headers: wave/spirit and boost 1.34. In the rebuild process (called via bjam) I got some static assertions, e.g. libs\wave\src\token_ids.cpp(402) : error C2027: use of undefined type 'boost::ST ATIC_ASSERTION_FAILURE<x>' with [ x=false ] Is that because I need to get the head revision of all boost libs??? With Kind Regards, Ovanes Markarian On Thu, July 5, 2007 14:27, Hartmut Kaiser wrote:
Ovanes,
just to get back to my post... Don't know why but it seems like ADL got broken when installed CVS Head revisions. Adding boost:: prefix where detail::iterator... was used fixed the problem. Unfortunately, I don't know what was changed and adding in all iterator headers boost:: prefix is a bit strange...
Yeah, I added these explicit boost:: prefixes in CVS::HEAD already. Let me see, what I can do to disambiguate from my end.
Regards Hartmut
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Ovanes,
Did you add these prefixes in iterator lib header or in wave/spirit?
I added the boost:: to the boost/iterator files, but I will try to disambiguate the detail namespace inside wave.
May be you should add ::boost:: this will disable ADL then. One more thing I faced now: I have to rebuild boost, with the newly taken headers: wave/spirit and boost 1.34. In the rebuild process (called via bjam) I got some static assertions, e.g.
libs\wave\src\token_ids.cpp(402) : error C2027: use of undefined type 'boost::ST ATIC_ASSERTION_FAILURE<x>' with [ x=false ]
This assertion fires, if you have a mismatch between the files: token_ids.hpp and token_ids.cpp. Are you sure to toss the correct header files? Or perhaps you didn't update the wave source files?
Is that because I need to get the head revision of all boost libs???
I didn't try to compile Wave against 1.34 recently. I'll do so today, but please don't hold your breath, it might take me some time. Regards Hartmut

Ok, many thanks! I only download header file in assumption, that wave would be a header file lib only. Sorry was my fault. On Thu, July 5, 2007 15:14, Hartmut Kaiser wrote:
Ovanes,
Did you add these prefixes in iterator lib header or in wave/spirit?
[...]
libs\wave\src\token_ids.cpp(402) : error C2027: use of undefined type 'boost::ST ATIC_ASSERTION_FAILURE<x>' with [ x=false ]
This assertion fires, if you have a mismatch between the files: token_ids.hpp and token_ids.cpp. Are you sure to toss the correct header files? Or perhaps you didn't update the wave source files?
Is that because I need to get the head revision of all boost libs???
I didn't try to compile Wave against 1.34 recently. I'll do so today, but please don't hold your breath, it might take me some time.
Regards Hartmut
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
With Kind Regards, Ovanes Markarian

Hartmut, Many thanks! Everything worked fine. I will now go over to mt tests of wave and publish my results here. Best Regards, Ovanes
-----Ursprüngliche Nachricht----- Von: Hartmut Kaiser [mailto:hartmut.kaiser@gmail.com] Gesendet: Donnerstag, 5. Juli 2007 15:15 An: boost-users@lists.boost.org Betreff: Re: [Boost-users] [wave] some more questions...
Ovanes,
Did you add these prefixes in iterator lib header or in wave/spirit?
I added the boost:: to the boost/iterator files, but I will try to disambiguate the detail namespace inside wave.
May be you should add ::boost:: this will disable ADL then. One more thing I faced now: I have to rebuild boost, with the newly taken headers: wave/spirit and boost 1.34. In the rebuild process (called via bjam) I got some static assertions, e.g.
libs\wave\src\token_ids.cpp(402) : error C2027: use of undefined type 'boost::ST ATIC_ASSERTION_FAILURE<x>' with [ x=false ]
This assertion fires, if you have a mismatch between the files: token_ids.hpp and token_ids.cpp. Are you sure to toss the correct header files? Or perhaps you didn't update the wave source files?
Is that because I need to get the head revision of all boost libs???
I didn't try to compile Wave against 1.34 recently. I'll do so today, but please don't hold your breath, it might take me some time.
Regards Hartmut
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Ovanes,
just to get back to my post... Don't know why but it seems like ADL got broken when installed CVS Head revisions. Adding boost:: prefix where detail::iterator... was used fixed the problem. Unfortunately, I don't know what was changed and adding in all iterator headers boost:: prefix is a bit strange...
Your problem should be fixed now. I was able to compile Wave from CVS::HEAD using boost 1.34 here on my machine. Could you please verify? Thanks! Regards Hartmut
participants (2)
-
Hartmut Kaiser
-
Ovanes Markarian