Take:
int t;

int f = __builtin_constant_p(t) ? t : -1;

int h[__builtin_constant_p(t) ? t : 1];

--- CUT ---
This is accepted by the C front-end by rejected by the C++ front-end.  I would
assume the built-in function __builtin_constant_p would cause it to be
considered as an integer constant expression but for some reason it is not.
The manual does say this about using it in static intializers:
You may also use __builtin_constant_p in initializers for static 
data.
Which I had hoped it would cause it to be part of the constant integer
expression.


-- 
           Summary: __builtin_constant_p(t) ? t : 1 is not considered a
                    constant integer expression
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38377

Reply via email to