Opened 10 years ago
Closed 10 years ago
#8416 closed Bugs (fixed)
Boost 1.53.0: Wave fails to build in C++11 mode
Reported by: | Owned by: | Hartmut Kaiser | |
---|---|---|---|
Milestone: | Boost 1.54.0 | Component: | wave |
Version: | Boost 1.53.0 | Severity: | Regression |
Keywords: | Cc: | Arfrever.FTA@… |
Description
Wave in Boost 1.53.0 fails to build in C++11 mode. This bug does not occur in Boost 1.52.0. I use GCC 4.7.2.
gcc.compile.c++ ../bin.v2/tools/wave/build/gcc-4.7/gentoorelease/link-static/pch-off/threading-multi/wavetool-on/cpp.o "x86_64-pc-linux-gnu-g++" -ftemplate-depth-128 -march=core2 -O2 -pipe -std=gnu++11 -finline-functions -Wno-inline -Wall -pthread -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_FILESYSTEM_STATIC_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -DBOOST_WAVE_SUPPORT_THREADING=0 -DDATE_TIME_INLINE -DNDEBUG -I".." -c -o "../bin.v2/tools/wave/build/gcc-4.7/gentoorelease/link-static/pch-off/threading-multi/wavetool-on/cpp.o" "wave/build/../cpp.cpp" In file included from ../boost/wave/cpp_context.hpp:37:0, from ../boost/wave.hpp:21, from wave/build/../cpp.cpp:26: ../boost/wave/util/cpp_iterator.hpp: In instantiation of ‘bool boost::wave::impl::pp_iterator_functor<ContextT>::emit_line_directive() [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >]’: ../boost/wave/util/cpp_iterator.hpp:539:9: required from ‘const result_type& boost::wave::impl::pp_iterator_functor<ContextT>::operator()() [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; boost::wave::impl::pp_iterator_functor<ContextT>::result_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/util/functor_input.hpp:124:13: required from ‘void boost::wave::util::functor_input::inner<FunctorT>::advance_input() [with FunctorT = boost::wave::impl::pp_iterator_functor<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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > > >]’ ../boost/wave/util/cpp_iterator.hpp:2568:13: required from ‘bool boost::wave::pp_iterator<ContextT>::force_include(const char*, bool) [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >]’ wave/build/../cpp.cpp:1110:68: required from here ../boost/wave/util/cpp_iterator.hpp:797:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘std::size_t {aka long unsigned int}’ [-Wformat] In file included from wave/build/../cpp.cpp:57:0: wave/build/../trace_macro_expansion.hpp: In instantiation of ‘bool trace_macro_expansion<TokenT>::emit_line_directive(const ContextT&, ContainerT&, const typename ContextT::token_type&) [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; ContainerT = std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >; TokenT = boost::wave::cpplexer::lex_token<>; typename ContextT::token_type = boost::wave::cpplexer::lex_token<>]’: ../boost/wave/util/cpp_iterator.hpp:781:13: required from ‘bool boost::wave::impl::pp_iterator_functor<ContextT>::emit_line_directive() [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >]’ ../boost/wave/util/cpp_iterator.hpp:539:9: required from ‘const result_type& boost::wave::impl::pp_iterator_functor<ContextT>::operator()() [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; boost::wave::impl::pp_iterator_functor<ContextT>::result_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/util/functor_input.hpp:124:13: required from ‘void boost::wave::util::functor_input::inner<FunctorT>::advance_input() [with FunctorT = boost::wave::impl::pp_iterator_functor<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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > > >]’ ../boost/wave/util/cpp_iterator.hpp:2568:13: required from ‘bool boost::wave::pp_iterator<ContextT>::force_include(const char*, bool) [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >]’ wave/build/../cpp.cpp:1110:68: required from here wave/build/../trace_macro_expansion.hpp:624:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘std::size_t {aka long unsigned int}’ [-Wformat] In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/list:64:0, from ../boost/filesystem/path_traits.hpp:27, from ../boost/filesystem/path.hpp:25, from wave/build/../cpp.cpp:19: /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/stl_list.h: In instantiation of ‘std::list<_Tp, _Alloc>::_Node* std::list<_Tp, _Alloc>::_M_create_node(_Args&& ...) [with _Args = {}; _Tp = boost::wave::cpplexer::lex_token<>; _Alloc = boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u>; std::list<_Tp, _Alloc>::_Node = std::_List_node<boost::wave::cpplexer::lex_token<> >]’: /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/stl_list.h:1533:63: required from ‘void std::list<_Tp, _Alloc>::_M_insert(std::list<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {}; _Tp = boost::wave::cpplexer::lex_token<>; _Alloc = boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u>; std::list<_Tp, _Alloc>::iterator = std::_List_iterator<boost::wave::cpplexer::lex_token<> >]’ /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/stl_list.h:1007:11: required from ‘void std::list<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = boost::wave::cpplexer::lex_token<>; _Alloc = boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u>]’ /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/list.tcc:127:6: required from ‘void std::list<_Tp, _Alloc>::_M_default_append(std::list<_Tp, _Alloc>::size_type) [with _Tp = boost::wave::cpplexer::lex_token<>; _Alloc = boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u>; std::list<_Tp, _Alloc>::size_type = long unsigned int]’ /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/list.tcc:149:2: required from ‘void std::list<_Tp, _Alloc>::resize(std::list<_Tp, _Alloc>::size_type) [with _Tp = boost::wave::cpplexer::lex_token<>; _Alloc = boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u>; std::list<_Tp, _Alloc>::size_type = long unsigned int]’ ../boost/wave/util/cpp_iterator.hpp:207:9: required from ‘bool boost::wave::util::add_macro_definition(ContextT&, std::string, bool, boost::wave::language_support) [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; std::string = std::basic_string<char>]’ ../boost/wave/cpp_context.hpp:204:27: required from ‘bool boost::wave::context<IteratorT, LexIteratorT, InputPolicyT, HooksT, DerivedT>::add_macro_definition(StringT, bool) [with StringT = std::basic_string<char>; IteratorT = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >; LexIteratorT = boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >; InputPolicyT = boost::wave::iteration_context_policies::load_file_to_string; HooksT = trace_macro_expansion<boost::wave::cpplexer::lex_token<> >; DerivedT = boost::wave::this_type]’ wave/build/../cpp.cpp:983:46: required from here /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/stl_list.h:503:8: error: no matching function for call to ‘boost::fast_pool_allocator<std::_List_node<boost::wave::cpplexer::lex_token<> >, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u>::construct(std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >::_Node*&)’ /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4/bits/stl_list.h:503:8: note: candidate is: In file included from wave/build/../cpp.hpp:41:0, from wave/build/../cpp.cpp:15: ../boost/pool/pool_alloc.hpp:398:10: note: void boost::fast_pool_allocator<T, UserAllocator, Mutex, NextSize, MaxSize>::construct(boost::fast_pool_allocator<T, UserAllocator, Mutex, NextSize, MaxSize>::pointer, const value_type&) [with T = std::_List_node<boost::wave::cpplexer::lex_token<> >; UserAllocator = boost::default_user_allocator_new_delete; Mutex = boost::details::pool::null_mutex; unsigned int NextSize = 32u; unsigned int MaxSize = 0u; boost::fast_pool_allocator<T, UserAllocator, Mutex, NextSize, MaxSize>::pointer = std::_List_node<boost::wave::cpplexer::lex_token<> >*; boost::fast_pool_allocator<T, UserAllocator, Mutex, NextSize, MaxSize>::value_type = std::_List_node<boost::wave::cpplexer::lex_token<> >] ../boost/pool/pool_alloc.hpp:398:10: note: candidate expects 2 arguments, 1 provided In file included from ../boost/wave/cpp_context.hpp:38:0, from ../boost/wave.hpp:21, from wave/build/../cpp.cpp:26: ../boost/wave/util/cpp_macromap.hpp: In instantiation of ‘bool boost::wave::util::macromap<ContextT>::expand_predefined_macro(const token_type&, ContainerT&) [with ContainerT = std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >; ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; boost::wave::util::macromap<ContextT>::token_type = boost::wave::cpplexer::lex_token<>]’: ../boost/wave/util/cpp_macromap.hpp:1174:9: required from ‘bool boost::wave::util::macromap<ContextT>::expand_macro(ContainerT&, const token_type&, typename boost::wave::util::macromap<ContextT>::defined_macros_type::iterator, IteratorT&, const IteratorT&, bool&, bool, boost::wave::util::macromap<ContextT>::defined_macros_type*, ContainerT*) [with IteratorT = boost::wave::util::unput_queue_iterator<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >, boost::wave::cpplexer::lex_token<>, std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> > >; ContainerT = std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >; ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; boost::wave::util::macromap<ContextT>::token_type = boost::wave::cpplexer::lex_token<>; typename boost::wave::util::macromap<ContextT>::defined_macros_type::iterator = std::_Rb_tree_iterator<std::pair<const boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char> > >, boost::intrusive_ptr<boost::wave::util::macro_definition<boost::wave::cpplexer::lex_token<>, std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> > > > > >; boost::wave::util::macromap<ContextT>::defined_macros_type = boost::wave::util::symbol_table<boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char> > >, boost::wave::util::macro_definition<boost::wave::cpplexer::lex_token<>, std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> > > >; typename ContextT::token_sequence_type = std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >; typename ContextT::token_type = boost::wave::cpplexer::lex_token<>; typename ContextT::token_type::string_type = boost::wave::util::flex_string<char, std::char_traits<char>, std::allocator<char>, boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char> > >]’ ../boost/wave/util/cpp_macromap.hpp:636:17: required from ‘const typename ContextT::token_type& boost::wave::util::macromap<ContextT>::expand_tokensequence_worker(ContainerT&, boost::wave::util::unput_queue_iterator<IteratorT, typename ContextT::token_type, ContainerT>&, const boost::wave::util::unput_queue_iterator<IteratorT, typename ContextT::token_type, ContainerT>&, bool&, bool) [with IteratorT = boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >; ContainerT = std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >; ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; typename ContextT::token_type = boost::wave::cpplexer::lex_token<>; typename ContextT::token_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/util/cpp_macromap.hpp:550:46: required from ‘const typename ContextT::token_type& boost::wave::util::macromap<ContextT>::expand_tokensequence(IteratorT&, const IteratorT&, ContainerT&, ContainerT&, bool&, bool) [with IteratorT = boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >; ContainerT = std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >; ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; typename ContextT::token_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/cpp_context.hpp:384:43: required from ‘boost::wave::context<IteratorT, LexIteratorT, InputPolicyT, HooksT, DerivedT>::token_type boost::wave::context<IteratorT, LexIteratorT, InputPolicyT, HooksT, DerivedT>::expand_tokensequence(IteratorT2&, const IteratorT2&, boost::wave::context<IteratorT, LexIteratorT, InputPolicyT, HooksT, DerivedT>::token_sequence_type&, boost::wave::context<IteratorT, LexIteratorT, InputPolicyT, HooksT, DerivedT>::token_sequence_type&, bool&, bool) [with IteratorT2 = boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >; IteratorT = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >; LexIteratorT = boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >; InputPolicyT = boost::wave::iteration_context_policies::load_file_to_string; HooksT = trace_macro_expansion<boost::wave::cpplexer::lex_token<> >; DerivedT = boost::wave::this_type; boost::wave::context<IteratorT, LexIteratorT, InputPolicyT, HooksT, DerivedT>::token_type = boost::wave::cpplexer::lex_token<>; boost::wave::context<IteratorT, LexIteratorT, InputPolicyT, HooksT, DerivedT>::token_sequence_type = std::list<boost::wave::cpplexer::lex_token<>, boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<>, boost::default_user_allocator_new_delete, boost::details::pool::null_mutex, 32u, 0u> >; typename LexIteratorT::token_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/util/cpp_iterator.hpp:863:13: required from ‘const result_type& boost::wave::impl::pp_iterator_functor<ContextT>::pp_token() [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; boost::wave::impl::pp_iterator_functor<ContextT>::result_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/util/cpp_iterator.hpp:633:25: required from ‘const result_type& boost::wave::impl::pp_iterator_functor<ContextT>::get_next_token() [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; boost::wave::impl::pp_iterator_functor<ContextT>::result_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/util/cpp_iterator.hpp:508:13: required from ‘const result_type& boost::wave::impl::pp_iterator_functor<ContextT>::operator()() [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >; boost::wave::impl::pp_iterator_functor<ContextT>::result_type = boost::wave::cpplexer::lex_token<>]’ ../boost/wave/util/functor_input.hpp:124:13: required from ‘void boost::wave::util::functor_input::inner<FunctorT>::advance_input() [with FunctorT = boost::wave::impl::pp_iterator_functor<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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > > >]’ ../boost/wave/util/cpp_iterator.hpp:2568:13: required from ‘bool boost::wave::pp_iterator<ContextT>::force_include(const char*, bool) [with ContextT = 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, trace_macro_expansion<boost::wave::cpplexer::lex_token<> > >]’ wave/build/../cpp.cpp:1110:68: required from here ../boost/wave/util/cpp_macromap.hpp:1417:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘std::size_t {aka long unsigned int}’ [-Wformat]
Change History (4)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
The warnings have already been fixed in SVN. Would you be able to provide a patch for the error? I'd gladly apply it to the main code base.
comment:3 by , 10 years ago
It seems that internal implementation of macrodefinition.resize() is broken. Currently I have no patch for it.
A workaround is to use macrodefinition.pop_back():
--- boost/wave/util/cpp_iterator.hpp +++ boost/wave/util/cpp_iterator.hpp @@ -204,7 +204,7 @@ // get rid of trailing T_EOF if (!macrodefinition.empty() && token_id(macrodefinition.back()) == T_EOF) - macrodefinition.resize(macrodefinition.size()-1); + macrodefinition.pop_back(); // If no macrodefinition is given, and the macro string does not end with a // '=', then the macro should be defined with the value '1'
comment:4 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
This bug occurs also in Boost trunk.