id summary reporter owner description type status milestone component version severity resolution keywords cc 7371 boost::spirit::classic::char_parser::parse is incrementing the scanner's first iterator directly instead of using the provided iterator_policy mhilferink@… Joel de Guzman "In boost\spirit\home\classic\core\primitives\primitives.hpp boost::spirit::classic::char_parser::parse is defined to increment the scanner's first iterator directly instead of using the provided iterator_policy. I'm using a scanner with an iterator that doesn't have a ++ operator and provided an iteration policy with redefined advance, get, and at_end methods. This works fine if the following patch is implemented in boost\spirit\home\classic\core\primitives\primitives.hpp: {{{ if (!scan.at_end()) { value_t ch = *scan; if (this->derived().test(ch)) { iterator_t save(scan.first); - ++scan.first; + ++scan; return scan.create_match(1, ch, save, scan.first); } } }}} This patch forwards the increment request to scanner_policies::advance to let it do its thing with scan.first I've seen this (and corrected it locally) at least in boost.sprit from boost version 1.40.0 and 1.51.0 Can somebody with RW access to boost.spirit implement this? Or tell me I should adapt my iterator objects directly. I'm new to GIT and not a spirit developer, but I can try to make a git pull request if that is the way to send-in change requests." Bugs closed To Be Determined spirit Boost 1.51.0 Problem fixed scanner iterator_policy