Que efeito o LWG2349 teria?

Enquanto libstdc ++ não, libc ++ segueo padrão que afirma essa passagemios_base::failbit parabasic_istream::exceptions não tem efeito na entrada formatada. Por exemplo, este código:

istringstream is{"ASD"};    
double foo;

is.exceptions(istream::failbit);

try {
    is >> foo;
    cout << foo << endl;
} catch(ios_base::failure& fail) {
    cout << "ouch\n";
}

Resultaria em:

"ai" no libstdc ++"0" na libc ++

Minha leitura deLWG2349 é que isso causariabasic_istream para não lançar nenhuma entrada formatada.

Por exemplo, o LWG2349 propõe uma alteração no padrão 27.7.2.3 [istream] / 1, que foi citado com referência aa invalidação de um bug que faria a libc ++ se comportar como libstdc ++. A mudança está em negrito e segue abaixo:

Se uma exceção, exceto os lançados declear(), caso existam, é lançado durante a entrada, em seguidaios::badbit está ligado*thisEstado de erro.(Exceções lançadas debasic_ios<>::clear() não são capturados ou relançados.) E se(exceptions()&badbit) != 0 então a exceção é reapresentada.

Eu entendi aquilobasic_istream::clear é o que lança em reação à entrada mal formatada então eu estou interpretando mal o LWG2349 ou de fato vai pararbasic_istream de lançar algum erro?

questionAnswers(1)

yourAnswerToTheQuestion