Разве C ++ не дает никаких гарантий относительно сохранения переменных в неизменном состоянии при сбое ввода? В более старых версиях gcc такая программа сохраняет значение -1 при неудаче (например, если вместо ввода числа вводится буква). В Ubuntu 10.10 (gcc 4.4.5) i сбрасывается на ноль в случае сбоя входа.
#include <iostream>
int main()
{
int i = -1;
std::cin >> i;
std::cout << "i = " << i << '\n';
return 0;
}
Такое поведение сильно нарушает мой код. Я полагаю, что gcc люди знают, что они делают, и это, вероятно, будет моей ошибкой. Если кто-нибудь знает стандарт, я хотел бы знать, что он говорит об этой ситуации.
Спасибо.