std :: istream operator exception reset / nicht geworfen

Ich bin nicht sicher, wie man @ benutstd::istream::exception nach dem Standard, lassenstd::istream::operator>> eine Ausnahme auslösen, wenn die Eingabe nicht in eine Variable eingelesen werden kann, z. doppelt. Der folgende Code hat ein anderes Verhalten mit clang / libc ++ und gcc / libstdc ++:

#include <iostream>
#include <cassert>

int main () {
    double foo,bar;
    std::istream& is = std::cin;

    is.exceptions(std::istream::failbit);
    is >> foo; //throws exception as expected with gcc/libstdc++ with input "ASD"
    std::cout << foo;
    is >> bar;
    std::cout << bar;
    assert(is); //failed with clang/libc++ after input "ASD"

    std::cout << foo << " " << bar << std::endl;

}

Istis.exceptions(std::istream::failbit); Recht für den Zweck, @ zu lassoperator>> werfen, nach dem C ++ Standard?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage