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: Arfrever.FTA@… 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 Arfrever.FTA@…, 10 years ago

This bug occurs also in Boost trunk.

comment:2 by Hartmut Kaiser, 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 Arfrever.FTA@…, 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 Hartmut Kaiser, 10 years ago

Resolution: fixed
Status: newclosed

(In [83838]) Wave: fix #8416: Boost 1.53.0: Wave fails to build in C++11 mode

Note: See TracTickets for help on using tickets.