[Boost-bugs] [Boost C++ Libraries] #9399: Can't build 1.55.0 release with GCC 4.x and -std=c++0x

Subject: [Boost-bugs] [Boost C++ Libraries] #9399: Can't build 1.55.0 release with GCC 4.x and -std=c++0x
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-11-16 09:46:49


#9399: Can't build 1.55.0 release with GCC 4.x and -std=c++0x
----------------------------+------------------------------
 Reporter: adam@… | Type: Bugs
   Status: new | Milestone: To Be Determined
Component: Building Boost | Version: Boost 1.55.0
 Severity: Problem | Keywords:
----------------------------+------------------------------
 Hello,

 I cannot build boost 1.55.0 with GCC 4.5.4, nor GCC 4.8.2, and -std=c++0x
 on NetBSD, Solaris, nor OS X. It always stops on "error: no matching
 function for call to 'call_once(boost::once_flag&, void (&)())'". For
 example:

 {{{
 gcc.compile.c++ bin.v2/libs/wave/build/gcc-4.5.4/release/threading-
 multi/instantiate_cpp_grammar.o
 In file included from
 ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:15:0,
                  from
 ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:21,
                  from ./boost/spirit/home/classic/core.hpp:42,
                  from ./boost/spirit/include/classic_core.hpp:11,
                  from ./boost/wave/grammars/cpp_grammar.hpp:14,
                  from libs/wave/src/instantiate_cpp_grammar.cpp:24:
 ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp: In
 member function 'IdT
 boost::spirit::classic::impl::object_with_id_base<TagT,
 IdT>::acquire_object_id() [with TagT =
 boost::spirit::classic::impl::grammar_tag, IdT = long unsigned int]':
 ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:78:62:
 instantiated from 'boost::spirit::classic::impl::object_with_id<TagT,
 IdT>::object_with_id() [with TagT =
 boost::spirit::classic::impl::grammar_tag, IdT = long unsigned int]'
 ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:51:15:
 instantiated from 'boost::spirit::classic::grammar<DerivedT,
 ContextT>::grammar() [with DerivedT =
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >,
 ContextT = boost::spirit::classic::parser_context<>]'
 ./boost/wave/grammars/cpp_grammar.hpp:623:41: instantiated from
 'boost::wave::grammars::cpp_grammar<TokenT,
 ContainerT>::cpp_grammar(bool&, TokenT&, ContainerT&) [with TokenT =
 boost::wave::cpplexer::lex_token<>, ContainerT =
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > >]'
 ./boost/wave/grammars/cpp_grammar.hpp:738:91: instantiated from 'static
 boost::spirit::classic::tree_parse_info<IteratorT>
 boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::parse_cpp_grammar(const LexIteratorT&, const
 LexIteratorT&, boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::position_type&, bool&,
 boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::token_type&, token_container_type&) [with LexIteratorT =
 boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >,
 TokenContainerT = std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > >,
 boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::position_type =
 boost::wave::util::file_position<boost::wave::util::flex_string<char,
 std::char_traits<char>, std::allocator<char>,
 boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char>
> > >, boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::token_type = boost::wave::cpplexer::lex_token<>,
 token_container_type = std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > >]'
 libs/wave/src/instantiate_cpp_grammar.cpp:48:40: instantiated from here
 ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:140:17:
 error: no matching function for call to 'call_once(boost::once_flag&, void
 (&)())'
 In file included from
 ./boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:18:0,
                  from
 ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:15,
                  from
 ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:21,
                  from ./boost/spirit/home/classic/core.hpp:42,
                  from ./boost/spirit/include/classic_core.hpp:11,
                  from ./boost/wave/grammars/cpp_grammar.hpp:14,
                  from libs/wave/src/instantiate_cpp_grammar.cpp:24:
 ./boost/thread/once.hpp: In function 'void boost::call_once(Function,
 boost::once_flag&) [with Function = void (*)()]':
 ./boost/spirit/home/classic/core/non_terminal/impl/static.hpp:72:13:
 instantiated from 'boost::spirit::classic::static_<T, Tag>::static_(Tag)
 [with T =
 boost::thread_specific_ptr<boost::weak_ptr<boost::spirit::classic::impl::grammar_helper<boost::spirit::classic::grammar<boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >,
 boost::spirit::classic::parser_context<> >,
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >,
 boost::spirit::classic::scanner<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
 boost::spirit::classic::pt_match_policy<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>, boost::spirit::classic::action_policy> > >
> >, Tag = boost::spirit::classic::impl::get_definition_static_data_tag]'
 ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:241:81:
 instantiated from 'typename DerivedT::definition<ScannerT>&
 boost::spirit::classic::impl::get_definition(const
 boost::spirit::classic::grammar<DerivedT, ContextT>*) [with DerivedT =
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >,
 ContextT = boost::spirit::classic::parser_context<>, ScannerT =
 boost::spirit::classic::scanner<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
 boost::spirit::classic::pt_match_policy<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>, boost::spirit::classic::action_policy> >,
 typename DerivedT::definition<ScannerT> =
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > >
>::definition<boost::spirit::classic::scanner<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
 boost::spirit::classic::pt_match_policy<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>, boost::spirit::classic::action_policy> >
>]'
 ./boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:296:78:
 instantiated from 'typename
 boost::spirit::classic::parser_result<boost::spirit::classic::grammar<DerivedT,
 ContextT>, ScannerT>::type
 boost::spirit::classic::impl::grammar_parser_parse(const
 boost::spirit::classic::grammar<DerivedT, ContextT>*, const ScannerT&)
 [with int N = 0, DerivedT =
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >,
 ContextT = boost::spirit::classic::parser_context<>, ScannerT =
 boost::spirit::classic::scanner<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
 boost::spirit::classic::pt_match_policy<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>, boost::spirit::classic::action_policy> >,
 typename
 boost::spirit::classic::parser_result<boost::spirit::classic::grammar<DerivedT,
 ContextT>, ScannerT>::type =
 boost::spirit::classic::tree_match<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>]'
 ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:57:54:
 instantiated from 'typename
 boost::spirit::classic::parser_result<boost::spirit::classic::grammar<DerivedT,
 ContextT>, ScannerT>::type boost::spirit::classic::grammar<DerivedT,
 ContextT>::parse_main(const ScannerT&) const [with ScannerT =
 boost::spirit::classic::scanner<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
 boost::spirit::classic::pt_match_policy<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>, boost::spirit::classic::action_policy> >,
 DerivedT =
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >,
 ContextT = boost::spirit::classic::parser_context<>, typename
 boost::spirit::classic::parser_result<boost::spirit::classic::grammar<DerivedT,
 ContextT>, ScannerT>::type =
 boost::spirit::classic::tree_match<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>]'
 ./boost/spirit/home/classic/core/non_terminal/grammar.hpp:65:9:
 instantiated from 'typename
 boost::spirit::classic::parser_result<boost::spirit::classic::grammar<DerivedT,
 ContextT>, ScannerT>::type boost::spirit::classic::grammar<DerivedT,
 ContextT>::parse(const ScannerT&) const [with ScannerT =
 boost::spirit::classic::scanner<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
 boost::spirit::classic::pt_match_policy<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>, boost::spirit::classic::action_policy> >,
 DerivedT =
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >,
 ContextT = boost::spirit::classic::parser_context<>, typename
 boost::spirit::classic::parser_result<boost::spirit::classic::grammar<DerivedT,
 ContextT>, ScannerT>::type =
 boost::spirit::classic::tree_match<boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<>
>,
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 boost::spirit::classic::nil_t>]'
 ./boost/wave/grammars/cpp_grammar.hpp:706:69: instantiated from
 'boost::spirit::classic::tree_parse_info<IteratorT, NodeFactoryT>
 boost::wave::grammars::parsetree_parse(const IteratorT&, const IteratorT&,
 const boost::spirit::classic::parser<SkipT>&) [with NodeFactoryT =
 boost::spirit::classic::node_val_data_factory<boost::spirit::classic::nil_t>,
 IteratorT =
 boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >,
 ParserT =
 boost::wave::grammars::cpp_grammar<boost::wave::cpplexer::lex_token<>,
 std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > > >]'
 ./boost/wave/grammars/cpp_grammar.hpp:740:58: instantiated from 'static
 boost::spirit::classic::tree_parse_info<IteratorT>
 boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::parse_cpp_grammar(const LexIteratorT&, const
 LexIteratorT&, boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::position_type&, bool&,
 boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::token_type&, token_container_type&) [with LexIteratorT =
 boost::wave::cpplexer::lex_iterator<boost::wave::cpplexer::lex_token<> >,
 TokenContainerT = std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > >,
 boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::position_type =
 boost::wave::util::file_position<boost::wave::util::flex_string<char,
 std::char_traits<char>, std::allocator<char>,
 boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char>
> > >, boost::wave::grammars::cpp_grammar_gen<LexIteratorT,
 TokenContainerT>::token_type = boost::wave::cpplexer::lex_token<>,
 token_container_type = std::list<boost::wave::cpplexer::lex_token<>,
 boost::fast_pool_allocator<boost::wave::cpplexer::lex_token<> > >]'
 libs/wave/src/instantiate_cpp_grammar.cpp:48:40: instantiated from here
 ./boost/thread/once.hpp:38:9: error: no matching function for call to
 'call_once(boost::once_flag&, void (*&)())'
 ./boost/system/error_code.hpp: At global scope:
 ./boost/system/error_code.hpp:222:36: warning:
 'boost::system::posix_category' defined but not used
 ./boost/system/error_code.hpp:223:36: warning: 'boost::system::errno_ecat'
 defined but not used
 ./boost/system/error_code.hpp:224:36: warning:
 'boost::system::native_ecat' defined but not used

     "g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
 -pthread -fPIC -std=c++0x -DBOOST_ALL_DYN_LINK=1 -DBOOST_ALL_NO_LIB=1
 -DNDEBUG -I"." -c -o "bin.v2/libs/wave/build/gcc-4.5.4/release/threading-
 multi/instantiate_cpp_grammar.o"
 "libs/wave/src/instantiate_cpp_grammar.cpp"
 }}}

 With Clang, the release builds fine. Using -std=c++98 and GCC it also
 builds fine.

 Please, advise,

 Adam

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/9399>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:14 UTC