In the lazy_repeat evaluator, a nested call to evaluate() looks like this:
evaluate(begin, inner_result.get_end_position(), last, ...);
The type of last/EndIterator is utf8_iterator::sentinel, but inner_result.get_end_position() returns a const char8_t*, and these types are not equality-comparable.
Possibly needs a static_cast<Itertaor> around the call to get_end_position? I'm not sure if this would have some other unintended effects, or if there are other points in the code that will need to be similarly modified.
The following example reproduces the error:
In the
lazy_repeat
evaluator, a nested call toevaluate()
looks like this:The type of
last
/EndIterator
isutf8_iterator::sentinel
, butinner_result.get_end_position()
returns aconst char8_t*
, and these types are not equality-comparable.Possibly needs a
static_cast<Itertaor>
around the call toget_end_position
? I'm not sure if this would have some other unintended effects, or if there are other points in the code that will need to be similarly modified.