[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #1 from paolo dot carlini at oracle dot com 2010-08-13 20:15 --- Yes, this is intended. We even have testcases about that. -- paolo dot carlini at oracle dot com changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #2 from lpsmith at u dot washington dot edu 2010-08-13 20:22 --- Is the reasoning explained somewhere? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #3 from paolo dot carlini at oracle dot com 2010-08-13 20:23 --- By the way, if you read 22.2.3.1 in C++98, it's clear that 'e' is *not* just any other character: after 'e', a sign is optional but at least a digit is compulsory. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #4 from lpsmith at u dot washington dot edu 2010-08-13 20:34 --- Yes, exactly! Which is why the 'e' should not be parsed at all unless there is an optional sign and a compulsory digit following it. The 'e' in general is not compulsory. '59' is a valid double. The context is that I am parsing (among other things) chemical reactions. It is perfectly valid to have something like: 2EtOH - EtOHX -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #5 from lpsmith at u dot washington dot edu 2010-08-13 20:56 --- Followup: This still fails even if you're trying to pipe it into an integer and not a double. Integers, as per 22.2.3.1 in C++98, do not have an optional 'e' after them. (Though of course you could *cast* a floating point value to an integer.) Given that, I hope you won't mind if I reopen the bug. -- lpsmith at u dot washington dot edu changed: What|Removed |Added Status|RESOLVED|UNCONFIRMED Resolution|INVALID | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #6 from paolo dot carlini at oracle dot com 2010-08-13 21:00 --- You are of course wrong. Parsing something like 59e as an integer type of course succeeds and gives 59. Really, we have *tons* of testcases about that in the testsuite. We know what we are doing ;) -- paolo dot carlini at oracle dot com changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution||INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #7 from lpsmith at u dot washington dot edu 2010-08-13 21:14 --- You're right! Sorry; I apparently jumped to a conclusion while testing (but I did test!) I still disagree that an 'e' with no digit following can be reasonably construed as part of an improperly-formatted float, and think it should instead be considered not part of the float at all, since properly-formatted floats have both the e and the digit. I think you are erring on the side of assuming an error when a valid interpretation exists. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #8 from paolo dot carlini at oracle dot com 2010-08-13 21:20 --- I'm not erring. We changes this behavior on purpose, after having also checked that *2* other, completely independent, implementations agree (ie, Dinkumware and Roguewave). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #9 from lpsmith at u dot washington dot edu 2010-08-13 21:40 --- Fair enough! I still disagree, but I guess my task now is to get Dinkumware and Roguewave to change their implementations, and come back. I don't suppose you'd be swayed by Microsoft? I didn't think so ;-) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280
[Bug libstdc++/45280] Stream parsing of digit-then-e (with no exponent) now fails
--- Comment #10 from lpsmith at u dot washington dot edu 2010-08-13 21:41 --- Whoops, duh, dinkumware is ms. Never mind, it was a dumb joke anyway. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45280