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

             Bug #: 50445
           Summary: Rejects use of constant expression using a pointer
                    non-type template parameter
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: schaub.johan...@googlemail.com


This is rejected by GCC:

extern int const values[] = { 1, 2, 3 }; 

template<int const *values> struct X { 
   static int const val0 = values[0]; 
}; 

int array[X<values>::val0];

GCC error message:

error: non-constant in-class initialization invalid for static member
'X<((const int*)(& values))>::val0'

However, as far as I can see, "values[0]" is a valid integral constant
expression.

Reply via email to