Бывалый

Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga
Репутация: 1 Всего: 3
|
Самый простой пример Код | #include <boost/config/warning_disable.hpp> #include <boost/spirit/include/qi.hpp>
#include <iostream> #include <string>
template <typename Iterator> bool parse_numbers(Iterator first, Iterator last) { bool result = boost::spirit::qi::phrase_parse( first, last, boost::spirit::qi::double_ [ [](double val) {std::cout << val << "\n";} // LAMBDA!!! ], boost::spirit::ascii::space ); if (first != last) return false; return result; }
int main(int argc, char* argv[]) { std::string str = "1234"; if (parse_numbers(str.begin(), str.end())) { std::cout << "OK" << std::endl; } else { std::cout << "FAIL" << std::endl; } return 0; }
|
получаем Цитата | In file included from boost/spirit/home/qi/action/action.hpp:21:0, from boost/spirit/home/qi/action.hpp:14, from boost/spirit/home/qi.hpp:14, from boost/spirit/include/qi.hpp:16, from source.cpp:3: boost/spirit/home/support/action_dispatch.hpp: In member function 'bool boost::spirit::traits::action_dispatch<Component>::operator()(const F&, Attribute&, Context&) [with F = parse_numbers(Iterator, Iterator) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >]::<lambda(double)>, Attribute = double, Context = const boost::fusion::unused_type, Component = boost::spirit::qi::real_parser_impl<double, boost::spirit::qi::real_policies<double> >]': boost/spirit/home/qi/action/action.hpp:67:17: instantiated from 'bool boost::spirit::qi::action<Subject, Action>::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, Context = const boost::fusion::unused_type, Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, Attribute = const boost::fusion::unused_type, Subject = boost::spirit::qi::real_parser_impl<double, boost::spirit::qi::real_policies<double> >, Action = parse_numbers(Iterator, Iterator) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >]::<lambda(double)>]' boost/spirit/home/qi/detail/parse.hpp:84:13: instantiated from 'static bool boost::spirit::qi::detail::phrase_parse_impl<Expr, typename boost::enable_if<boost::spirit::traits::matches<boost::spirit::qi::domain, Expr> >::type>::call(Iterator&, Iterator, const Expr&, const Skipper&, boost::spirit::qi::skip_flag) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, Skipper = boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0l>, Expr = boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::double_>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const parse_numbers(Iterator, Iterator) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >]::<lambda(double)>&>, 0l> >, 2l>]' boost/spirit/home/qi/parse.hpp:100:50: instantiated from 'bool boost::spirit::qi::phrase_parse(Iterator&, Iterator, const Expr&, const Skipper&, boost::spirit::qi::skip_flag) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >, Expr = boost::proto::exprns_::expr<boost::proto::tag::subscript, boost::proto::argsns_::list2<const boost::spirit::terminal<boost::spirit::tag::double_>&, boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<const parse_numbers(Iterator, Iterator) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >]::<lambda(double)>&>, 0l> >, 2l>, Skipper = boost::proto::exprns_::expr<boost::proto::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0l>]' source.cpp:18:49: instantiated from 'bool parse_numbers(Iterator, Iterator) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >]' source.cpp:26:43: instantiated from here boost/spirit/home/support/action_dispatch.hpp:29:13: error: no match for call to '(const parse_numbers(Iterator, Iterator) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >]::<lambda(double)>) (double&, const boost::fusion::unused_type&, bool&)' source.cpp:15:62: note: candidate is: parse_numbers(Iterator, Iterator) [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >]::<lambda(double)>
Build finished with errors |
http://liveworkspace.org/code/ec100e4c6fd6...b9836c526bf4dc6
|