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.