Project

General

Profile

Bug #11397

Updated by Kefu Chai about 9 years ago

just want to note this down in case others run into the same problem. this is a bug in boost 1.55, and will/should be fixed in boost 1.56. see https://svn.boost.org/trac/boost/ticket/10125 .  

 <pre> 
   CXX        json_spirit/json_spirit_reader.lo 
 In file included from /usr/include/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:15:0, 
                  from /usr/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp:21, 
                  from /usr/include/boost/spirit/home/classic/core.hpp:42, 
                  from /usr/include/boost/spirit/include/classic_core.hpp:11, 
                  from json_spirit/json_spirit_reader_template.h:23, 
                  from json_spirit/json_spirit_reader.cpp:7: 
 /usr/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp: In instantiation of ‘IdT boost::spirit::classic::impl::object_with_id_base<TagT, IdT>::a\ 
 cquire_object_id() [with TagT = boost::spirit::classic::impl::grammar_tag; IdT = long unsigned int]’: 
 /usr/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:78:60:     required from ‘boost::spirit::classic::impl::object_with_id<TagT, IdT>::object_w\ 
 ith_id() [with TagT = boost::spirit::classic::impl::grammar_tag; IdT = long unsigned int]’ 
 /usr/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp:51:15:     required from ‘boost::spirit::classic::grammar<DerivedT, ContextT>::grammar() [with DerivedT\ 
  = json_spirit::Json_grammer<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char> > >, __gnu_cxx::__normal_iterator<const char*, std::basic_string<c\ 
 har> > >; ContextT = boost::spirit::classic::parser_context<>]’ 
 json_spirit/json_spirit_reader_template.h:381:38:     required from ‘json_spirit::Json_grammer<Value_type, Iter_type>::Json_grammer(json_spirit::Json_grammer<Value_type, It\ 
 er_type>::Semantic_actions_t&) [with Value_type = json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char> > >; Iter_type = __gnu_cxx::__normal_iterator\ 
 <const char*, std::basic_string<char> >; json_spirit::Json_grammer<Value_type, Iter_type>::Semantic_actions_t = json_spirit::Semantic_actions<json_spirit::Value_impl<json\ 
 _spirit::Config_vector<std::basic_string<char> > >, __gnu_cxx::__normal_iterator<const char*, std::basic_string<char> > >]’ 
 json_spirit/json_spirit_reader_template.h:565:58:     required from ‘Iter_type json_spirit::read_range_or_throw(Iter_type, Iter_type, Value_type&) [with Iter_type = __gnu_c\ 
 xx::__normal_iterator<const char*, std::basic_string<char> >; Value_type = json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char> > >]’ 
 json_spirit/json_spirit_reader.cpp:39:56:     required from here 
 /usr/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:140:33: error: no matching function for call to ‘call_once(boost::once_flag&, void (&)())\ 
 ’ 
                  boost::call_once(been_here, mutex_init); 
                                  ^ 
 In file included from /usr/include/boost/thread/once.hpp:20:0, 
                  from /usr/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:18, 
                  from /usr/include/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:15, 
                  from /usr/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp:21, 
                  from /usr/include/boost/spirit/home/classic/core.hpp:42, 
                  from /usr/include/boost/spirit/include/classic_core.hpp:11, 
                  from json_spirit/json_spirit_reader_template.h:23, 
                  from json_spirit/json_spirit_reader.cpp:7: 
 /usr/include/boost/thread/pthread/once_atomic.hpp:121:15: note: candidate: template<class Function, class ... ArgTypes> void boost::call_once(boost::once_flag&, boost::de\ 
 tail::thread_move_t<T>, boost::detail::thread_move_t<Args>...) 
    inline void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args) 
                ^ 
 /usr/include/boost/thread/pthread/once_atomic.hpp:121:15: note:     template argument deduction/substitution failed: 
 In file included from /usr/include/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp:15:0, 
                  from /usr/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp:21, 
                  from /usr/include/boost/spirit/home/classic/core.hpp:42, 
                  from /usr/include/boost/spirit/include/classic_core.hpp:11, 
                  from json_spirit/json_spirit_reader_template.h:23, 
                  from json_spirit/json_spirit_reader.cpp:7: 
 /usr/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp:140:33: note:     mismatched types ‘boost::detail::thread_move_t<T>’ and ‘void (*)()’ 
                  boost::call_once(been_here, mutex_init); 
                                  ^ 
 </pre> 

 and the call_once() error repeats many times. 

Back