Possible regression in boost 1.61

Peter Gerell <[email protected]>
Newsgroups gmane.comp.parsers.spirit.general
Message-ID <[email protected]>
Hi, when trying to upgrade to boost version 1.61 I get errors from the linker when building my project.

We had very similar errors reported with 1.60. They were fixed by this fix:
https://github.com/boostorg/spirit/commit/7690022b931b524223e65f4cd4277b8e5d55d7cb

I haven't been able to create a small reproducible example yet, but maybe someone with insight into the differences between 1.60 and 1.61 could get something from the error messages.
The two errors I get are:

5>parser.lib(configfile.obj) : error LNK2019: unresolved external symbol "bool __cdecl parser::expr::parse_rule<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > >(struct boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > &)" (??$parse_rule@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@U?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@6@@expr@parser@@YA_NU?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@AEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV67@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@345@AEAU?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@5@@Z) referenced in function "public: bool __cdecl boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>::parse<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > >(class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct boost::spirit::x3::unused_type,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > &)const " (??$parse@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@U?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@6@@?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@QEBA_NAEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV45@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@123@Uunused_type@123@AEAU?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@3@@Z)

5>parser.lib(common.obj) : error LNK2019: unresolved external symbol "bool __cdecl parser::expr::parse_rule<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct parser::ast::NamespaceStart>(struct boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct parser::ast::NamespaceStart &)" (??$parse_rule@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@UNamespaceStart@ast@parser@@@expr@parser@@YA_NU?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@AEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV67@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@345@AEAUNamespaceStart@ast@1@@Z) referenced in function "public: bool __cdecl boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>::parse<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct parser::ast::NamespaceStart>(class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct boost::spirit::x3::unused_type,struct parser::ast::NamespaceStart &)const " (??$parse@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@UNamespaceStart@ast@parser@@@?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@QEBA_NAEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV45@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@123@Uunused_type@123@AEAUNamespaceStart@ast@parser@@@Z)

Regards,
Peter

------------------------------------------------------------------------------
Mobile security can be enabling, not merely restricting. Employees who
bring their own devices (BYOD) to work are irked by the imposition of MDM
restrictions. Mobile Device Manager Plus allows you to control only the
apps on BYO-devices by containerizing them, leaving personal data untouched!
https://ad.doubleclick.net/ddm/clk/304595813;131938128;j

_______________________________________________
Spirit-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spirit-general
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.