undefined behaviour somewhere in boost::spirit::qi::phrase_parse
You cannot use auto to store parser expressions¹ Either you need to evaluate from the temporary expression directly, or you need to assign to a rule/grammar: const qi::rule<std::string::const_iterator, qi::space_type> doubles_parser_local = qi::double_ >> *(‘,’ >> qi::double_); You can have your cake and eat it too on most recent BOost versions (possibly the dev branch) there … Read more