C++ PATCH: Disallow floating-point literals in integral-constant expressions
Mark Mitchell
mark@codesourcery.com
Tue Feb 1 01:52:00 GMT 2005
Mike Stump wrote:
> On Jan 31, 2005, at 5:02 PM, Mark Mitchell wrote:
>
>> The standard says that floating-point literals are only allowed in
>> integral constant expressions if they are immediately cast to an
>> integral or enumeration type. When I implemented checks for integral
>> constant-expressions, I failed to check this case. Remedied with the
>> attached patch.
>
>
> If users have this in their code, then this can be seen as a removal of
> a feature by them. In that case, we should warn about it for a release,
> then make it an error, or put it under -fpermissive.
We have checks for virtually all invalid integral constant expressions
in GCC 3.4; we missed this case. So, we're fixing that bug.
It is not true that if GCC X accepted a piece of code, but GCC X + 1
does not, then we have removed a feature and must deprecate, etc. There
is nothing wrong with diagnosing invalid code, unless the invalid code
was part of an intentional (and usually documented) GNU extension.
Other C++ compilers (like EDG) do the same thing: the guarantee from
release-to-release is that documented extensions and conforming code
will continue to work, not that all bugs will go through the deprecation
cycle.
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304
More information about the Gcc-patches
mailing list