これは非常に明白かもしれませんが、ブーストのストリームベースの解析で最後の文字が複製されるのはなぜですか? 私は何か間違ったことをしているに違いありません:
#include <iostream>
#include <sstream>
#include <boost/spirit/include/qi.hpp>
namespace qi = boost::spirit::qi;
int main() {
std::string input = "hello";
std::stringstream ss(input);
std::string r1, r2;
boost::spirit::istream_iterator first(ss), last;
qi::phrase_parse(input.begin(), input.end(), qi::lexeme[qi::alpha >> *qi::alnum], qi::space, r1);
std::cout << r1 << std::endl; // prints "hello"
qi::phrase_parse(first, last, qi::lexeme[qi::alpha >> *qi::alnum], qi::space, r2);
std::cout << r2 << std::endl; // prints "helloo"
}
XCode 5.0 および Boost 1.54.0 でテスト済み。
編集: この問題は libc++ に固有のようです。確認するためにClangケアを使用している人はいますか?