Valor armazenado quando a leitura do istream falha

Código de amostra:

#include <iostream>

int main()
{
    int x = 5;
    std::cin >> x;
    std::cout << x << '\n';
}

Emuma implementação particular o seguinte comportamento ocorre:

Entrada:6; resultado6Entrada:a; resultado:0Entrada: (fim do arquivo); resultado5Entrada: (espaço em branco seguido pelo final do arquivo); resultado5

Então, em caso de falha, ocin >> x está atribuindo0 parax se houve falha na conversão do texto em int; mas não está atribuindo0 se a falha ocorreu devido ao final do arquivo.

Esse comportamento é correto? Caso contrário, qual é o comportamento correto, de acordo com o padrão C ++?

Tenho uma lembrança de discutir anteriormente sobre o SO que todos os casos devem escrever0 desde C ++ 11, mas não encontrei nada usando o recurso de pesquisa; e a seção iostreams do padrão C ++ é bastante pesada.

questionAnswers(2)

yourAnswerToTheQuestion