Я хочу проанализировать строку с последовательностью двойных пар в std :: map с помощью Boost Spirit.
Я адаптировал пример из https://svn.boost.org/svn/boost/trunk/libs/spirit/example/qi/key_value_sequence.cpp, но у меня проблема с определением правильного qi :: rule для ключа и значения:
template <typename Iterator>
struct keys_and_values : qi::grammar<Iterator, std::map<double, double> >
{
keys_and_values()
: keys_and_values::base_type(query)
{
query = pair >> *(qi::lit(',') >> pair);
pair = key >> value;
key = qi::double_;
value = +qi::double_;
}
qi::rule<Iterator, std::map<double, double>()> query;
qi::rule<Iterator, std::pair<double, double>()> pair;
qi::rule<Iterator, std::string()> key, value;
};
Я не могу использовать double () для правил ключа и значения, а std :: string не может быть построен из двойника.