Si, capisco la tua perplessità. Ma se tutti e tre i dati sono necessari, basta che uno solo non sia letto correttamente per rendere incoerente l'oggetto; a meno che i tre dati non abbiano un valore di default da ripristinare in seguito a un fallimento.
Facciamo una mera ipotesi: la prima lettura riesce, la seconda no, la terza misteriosamente si. Il tuo oggetto sarebbe coerente (a prescindere dalle variabili temporanee che poi assegni in caso la lettura riesca)?
Inoltre, se le letture non riescono e l'oggetto è coerente, è usabile?
E' corretto usare variabili temporanee in lettura (il mio commento di prima si riferiva a un caso triviale), pero' bisogna anche vedere in concreto di cosa si parla. Altrimenti ci si perde in troppi forse e troppi ma.
Qui c'è l'esempio. Basta impostare i flag che si vogliono controllare.Perdona l'ignoranza, ma come si fa?
http://en.cppreference.com/w/cpp/io/...ios/exceptions