Misreading bool from istringstream

Martin Sebor sebor@roguewave.com
Tue Mar 12 09:06:00 GMT 2002


Phil Edwards wrote:
> 
> > i686-pc-linux-gnu g++ 3.0.4: 1#0010
> > i686-pc-linux-gnu g++ 2.95.4: 1#1000
> > sparc-sun-solaris2.7 CC 5.0: 0#0110
> > sparc-sun-solaris2.7 g++ 3.0.4: 1#0010
> > mswin-32 VC++ 6.0: 1#0110
> 
> Huh.  Looks like Sun's CC isn't handling the leading negative.

That's because of 22.2.2.1.2, p14:

    iter_type do_get (iter_type in, iter_type end, ios_base& str,
                      ios_base::iostate& err, bool& val) const;

    -14- Effects: If (str.flags() & ios_base::boolalpha) == 0 then
         input proceeds as it would for a long except that if a value
         is being stored into val, the value is determined according
         to the following:
         If the value to be stored is 0 then false is stored. If the
         value is 1 then true is stored. Otherwise err|=ios_base::failbit
         is performed and no value is stored.

Regards
Martin



More information about the Gcc-bugs mailing list