id summary reporter owner description type status milestone component version severity resolution keywords cc 7538 boost::spirit::istream_iterator does not handle incrememt correctly at the end zhuo.qiang@… Joel de Guzman "{{{boost::spirit::istream_iterator}}} (or its super class {{{multi_pass}}} )does not handle incrememt correctly at the end position. One more end char will be yielded which is incorrect: {{{ #!cpp #include #include #include int test_main(int, char*[]) { std::istringstream in(""12""); boost::spirit::istream_iterator it(in), end; BOOST_CHECK(*it++ == '1'); BOOST_CHECK(*it++ == '2'); // it should be end now, however it failed BOOST_CHECK(it == end); // !failed here // and yield the last char once more BOOST_CHECK(*it != '2'); // !failed here // only after another dereference will it really equal to end BOOST_CHECK(it == end); return 0; } }}} The output is: {{{ test.cpp(14): test it == end failed in function: 'int test_main(int, char **)' test.cpp(16): test *it != '2' failed in function: 'int test_main(int, char **)' **** 2 errors detected }}} #6750 may be a duplicated issue. Reproducable under: * Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn) * Target: x86_64-apple-darwin12.2.0 * With C++ 11 turn on: ""-std=c++11 -stdlib=libc++"" * Boost 1.52 and Boost Trunk rev.81030 " Bugs new To Be Determined spirit Boost 1.52.0 Showstopper spirit, istream_iterator, multi_pass