On 2005-04-27 12:29:53 +0100, Andrew Haley wrote:
> Vincent Lefevre writes:
> > The only two constraints in 6.6 are:
> >
> > [#3] Constant expressions shall not contain assignment,
> > increment, decrement, function-call, or comma operators,
> > except when they are contained within a subexpression that
> > is not evaluated.86)
> >
> > [#4] Each constant expression shall evaluate to a constant
> > that is in the range of representable values for its type.
> >
> > #3 doesn't include variables. #4 is OK if one considers that the
> > value cannot be modified.
> >
> > #6 adds other requirements, but this is out of the scope of the
> > given diagnostic (which complained about an expression not being a
> > constant -- not because it wasn't an integer constant expression).
>
> 6.7.8 Para 4. All the expressions for an initializer for an object
> that has static storage duration shall be constant expressions ...
^^^^^^^^^^^^^^^^^^^^
It is said "constant expressions", not "integer constant expressions".
> 6.6 Para 6. An integer constant expression shall have integer type
^^^^^^^^^^^^^^^^^^^^^^^^^^^
> and shall only have operands that are inetger constants, enumeration
> constants, character constants, sizeof expressions whose results are
> integer constants, and floating-point constans that are the
> immediate operands of casts ...
#6 is about an *integer* constant expression.
> > Couldn't the expression fall into #10 with some implementations?
>
> Probably, but that would be yet another gcc-local extension.
Yes, but the diagnostic should be more accurate.
--
Vincent Lef�vre <[EMAIL PROTECTED]> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA