
Sorry I didn't get to this sooner, but lexical cast has broken my source code. I have not tracked down the source of the crash because I currently have a release build, but looking at the diffs, I believe is it due to whitespace at the end of a string that I am attempting to convert to a number, this being caused by 151c157,166 < (stream >> std::ws).eof(); ---
stream.get() == #if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING) // GCC 2.9x lacks std::char_traits<>::eof(). // We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3 // configurations, which do provide std::char_traits<>::eof().
EOF; #else std::char_traits<char_type>::eof(); #endif
You'll note that stream >> std::ws is no longer called. One note that I must make is that I do not have the vanilla source for lexical_cast. From the last time lexical_cast broke my source, I've commented out stream.unsetf(std::ios::skipws); in the lexical_stream constructor (see http://lists.boost.org/MailArchives/boost-users/msg03656.php for the reason). I just recalled a unit test we have that would expose the problem (and it did). By adding a [stream >> std::ws &&] before the check for eof, my problem was resolved. Is there a reason we want to fail with trailing whitespace? Thanks, Tom