Когда я пытаюсь использовать форму итератора для грамматики Spirit, я получаю аргумент, передающий ошибку преобразования типа итератора в const char * Как мне это исправить?
Есть некоторые ограничения. Я использую адаптер итератора для больших входных данных, поэтому я не могу преобразовать его в строку стиля C.
Вот пример кода, демонстрирующего проблему:
#include <boost/spirit/core.hpp>
#include <boost/spirit/iterator/file_iterator.hpp>
#include <vector>
#include <string>
using std;
using boost::spirit;
struct ex : public grammar<route_grammar> {
template <typename ScannerT> struct defintion {
definition(ex const& self) {
expression = real_p;
}
rule<ScannerT> expression;
rule<ScannerT> const& start() const { return expression; }
};
int main() {
file_iterator<char> first;
file_iterator<char> last = first.make_end();
ex ex_p;
parse_info<file_iterator<char> > info = parse(first, last, ex_p, space_p);
return 0;
}
Этот код разбивается на: error: невозможно преобразовать const boost::spirit::file_iterator<char_t, boost::spirit::fileiter_impl::mmap_file_iterator<char_t> >
в const char*
при передаче аргумента