gcc4.4 を使用する Ubuntu 10.04 でも同じ問題が発生します。gcc4.1 を使用する RH 5.5 でも同じコードが正常に動作します。
#include <sstream>
#include <iostream>
int main(int argc, char** argv) {
std::stringstream myStream;
myStream << "-123";
unsigned int myUInt;
myStream >> myUInt;
if(myStream.fail()) {
std::cout << "FAILED" << std::endl;
}
}
は FAILED を与えません、私はすでにこれを見つけました:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39802
gcc4.1で修正されたと記載されていますが、そのミスの振る舞いが(何かが欠けていない限り)同じ問題に関連しているかどうかはわかりません。