id summary reporter owner description type status milestone component version severity resolution keywords cc 3999 multi_pass cannot deal with all input iterators Sebastian Redl Hartmut Kaiser "multi_pass has trouble with various input iterators. First, Microsoft's istreambuf_iterator, because it doesn't implement DR445, reports its reference as Char&, but its operator* returns Char. This causes compilation errors all over the place. Second, a standards-conformant istreambuf_iterator post-DR445 (i.e. C++0x) has both operator* return type and reference as Char. This compiles but is unsafe because InputPolicy::get_value is specified to return a const Value&, and this reference binds to the temporary returned by operator*. InputPolicy::get_value should return MultiPass::reference. This would also make the Value template parameter to this function superfluous. Doing this change allows Spirit to compile with my own istreambuf_iterator replacement. I have no idea what to do about Microsoft's istreambuf_iterator, though. A workaround for that problem would be nice, since using istreambuf_iterator is far preferable over using istream_iterator, since the latter is subject to the skipws flag and thus easily leads to hard-to-find bugs. (By the way, the documentation should prominently mention the danger of skipws.)" Bugs closed Boost 1.43.0 spirit Boost 1.42.0 Problem fixed