I also can’t compile VCMI. All packages updated, Ubuntu 10.04 64-bit, VCMI revision 2054. My libboost-dev here is at version 1.40.0.1. Here’s the code:
$ make
…
CXX libvcmi_la-ERMParser.lo
ERMParser.cpp:187: error: ‘unused_type’ is not a member of ‘qi’
ERMParser.cpp:187: error: ‘unused_type’ is not a member of ‘qi’
ERMParser.cpp:187: error: template argument 9 is invalid
ERMParser.cpp:187: error: invalid type in declaration before ‘;’ token
ERMParser.cpp:278: error: ‘unused_type’ is not a member of ‘qi’
ERMParser.cpp:278: error: ‘unused_type’ is not a member of ‘qi’
ERMParser.cpp:278: error: template argument 3 is invalid
ERMParser.cpp:278: error: invalid type in declaration before ‘;’ token
ERMParser.cpp:447: error: ‘qi::unused_type’ has not been declared
ERMParser.cpp:530: error: ‘qi::unused_type’ has not been declared
ERMParser.cpp: In constructor ‘ERM::ERM_grammar<Iterator>::ERM_grammar()’:
ERMParser.cpp:676: error: ‘lexeme’ is not a member of ‘qi’
ERMParser.cpp:676: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:676: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:676: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:677: error: ‘lexeme’ is not a member of ‘qi’
ERMParser.cpp:677: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:677: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:677: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:678: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:678: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:678: error: ‘int_’ is not a member of ‘qi’
ERMParser.cpp:679: error: ‘lexeme’ is not a member of ‘qi’
ERMParser.cpp:679: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:679: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:679: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:681: error: ‘int_’ is not a member of ‘qi’
ERMParser.cpp:683: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:684: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:684: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:684: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:685: error: ‘lexeme’ is not a member of ‘qi’
ERMParser.cpp:685: error: ‘repeat’ is not a member of ‘qi’
ERMParser.cpp:685: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:686: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:688: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:689: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:690: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:690: error: ‘int_’ is not a member of ‘qi’
ERMParser.cpp:692: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:693: error: ‘lexeme’ is not a member of ‘qi’
ERMParser.cpp:693: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:695: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:696: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:697: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:699: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:700: error: ‘eps’ is not a member of ‘qi’
ERMParser.cpp:701: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:702: error: ‘char_’ is not a member of ‘qi’
ERMParser.cpp:704: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:704: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:708: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:710: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:712: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:713: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:714: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:715: error: ‘lit’ is not a member of ‘qi’
ERMParser.cpp:746: error: ‘_4’ is not a member of ‘qi’
ERMParser.cpp:748: error: ‘_3’ is not a member of ‘qi’
ERMParser.cpp:748: error: ‘_2’ is not a member of ‘qi’
ERMParser.cpp: In member function ‘void ERMParser::parseLine(const std::string&)’:
ERMParser.cpp:796: warning: unused variable ‘AST’
In file included from /usr/include/boost/variant/apply_visitor.hpp:16,
from /usr/include/boost/variant.hpp:23,
from /usr/include/boost/spirit/home/support/detail/values.hpp:18,
from /usr/include/boost/spirit/home/support/attribute_transform.hpp:14,
from /usr/include/boost/spirit/home/qi/operator/sequence_base.hpp:11,
from /usr/include/boost/spirit/home/qi/operator/sequence.hpp:10,
from /usr/include/boost/spirit/home/qi/operator.hpp:10,
from /usr/include/boost/spirit/home/qi.hpp:13,
from /usr/include/boost/spirit/include/qi.hpp:11,
from ERMParser.cpp:2:
/usr/include/boost/variant/detail/apply_visitor_unary.hpp: In function ‘typename Visitor::result_type boost::apply_visitor(const Visitor&, Visitable&) [with Visitor = ERM::BodyOptionItemPrinterVisitor, Visitable = ERM::TBodyOptionItem]’:
ERMParser.cpp:470: instantiated from here
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:72: error: request for member ‘apply_visitor’ in ‘visitable’, which is of non-class type ‘int’
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:72: error: return-statement with a value, in function returning 'void'
/usr/include/boost/variant/detail/apply_visitor_unary.hpp: In function ‘typename Visitor::result_type boost::apply_visitor(const Visitor&, Visitable&) [with Visitor = ERM::LinePrinterVisitor, Visitable = const int]’:
ERMParser.cpp:539: instantiated from here
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:72: error: request for member ‘apply_visitor’ in ‘visitable’, which is of non-class type ‘const int’
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:72: error: return-statement with a value, in function returning 'void'
In file included from /usr/include/boost/spirit/home/qi/operator/alternative.hpp:11,
from /usr/include/boost/spirit/home/qi/operator.hpp:12,
from /usr/include/boost/spirit/home/qi.hpp:13,
from /usr/include/boost/spirit/include/qi.hpp:11,
from ERMParser.cpp:2:
/usr/include/boost/spirit/home/qi/detail/alternative_function.hpp: In member function ‘bool boost::spirit::qi::detail::alternative_function<Iterator, Context, Skipper, Attribute>::operator()(const Component&) [with Component = boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::nonterminal_director, boost::fusion::cons<boost::spirit::nonterminal_holder<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ERM::TVarExpNotMacro(), boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, 0l>, boost::fusion::unused_type>*, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ERM::TVarExpNotMacro(), boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, 0l>, boost::fusion::unused_type> >, boost::fusion::nil> >, Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Context = boost::fusion::vector<boost::fusion::vector<ERM::TVarpExp&, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::fusion::vector<boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, Skipper = boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::char_class<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, boost::fusion::nil>, Attribute = ERM:]’:
…
/usr/include/boost/spirit/home/qi/nonterminal/detail/rule.hpp:126: instantiated from ‘bool boost::spirit::qi::detail::virtual_component<Iterator, Component, Context, Skipper, Auto>::parse(Iterator&, const Iterator&, Context&, boost::spirit::qi::no_skipper) [with Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Component = boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::expect, boost::fusion::cons<boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::alternative, boost::fusion::cons<boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::nonterminal_director, boost::fusion::cons<boost::spirit::nonterminal_holder<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ERM::Tcommand(), boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, 0l>, boost::fusion::unused_type>*, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, ERM::Tcommand(), boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, 0l>, boost::fusion::unused_type> >, boost::fusion::nil> >, boost::fusion::cons<boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::nonterminal_director, boost::fusion::cons<boost::spirit::nonterminal_holder<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::string(), boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, 0l>, boost::fusion::unused_type>*, boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::string(), boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, 0l>, boost::fusion::unused_type> >, boost::fusion::nil> >, boost::fusion::cons<boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::eps_parser, boost::fusion::nil>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::component<boost::spirit::qi::domain, boost::spirit::qi::eoi_director, boost::fusion::cons<boost::spirit::tag::eoi, boost::fusion::nil> >, boost::fusion::nil> > >, Context = boost::fusion::vector<boost::fusion::vector<int&, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::fusion::vector<boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, Skipper = boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::char_class::key<boost::spirit::char_class::ascii, boost::spirit::char_class::tag::space> >, 0l>, Auto = mpl_::bool_<true>]’
ERMParser.cpp:875: instantiated from here
/usr/include/boost/spirit/home/qi/detail/alternative_function.hpp:41: error: cannot convert ‘boost::spirit::unused_type’ to ‘int’ in assignment
make[1]: *** [libvcmi_la-ERMParser.lo] Error 1
make[1]: Leaving directory `/home/mgol/Programs/vcmi/lib'
make: *** [all-recursive] Error 1