//////////////////////////////////////////////
template<int i>
class A
{
public:
    static double const VAL = 0.5;

    enum
    {
        COS = (int)(A::VAL)
    };
};

int main()
{
    A<5>::COS;
    return 0;
}
//////////////////////////////////////////////

This returns following error:
pom.cpp: In instantiation of 'A<5>':
pom.cpp:15:   instantiated from here
pom.cpp:7: error: enumerator value for 'COS' not integer constant

>$ g++ -v -save-temps pom.cpp
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.0 --enable-__cxa_atexit --enable-libstdcxx-allocator=mt
--enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm
--enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr
--disable-werror --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.2
 /usr/lib/gcc/i486-linux-gnu/4.0.2/cc1plus -E -quiet -v -D_GNU_SOURCE pom.cpp
-mtune=i486 -fpch-preprocess -o pom.ii
ignoring nonexistent directory
"/usr/lib/gcc/i486-linux-gnu/4.0.2/../../../../i486-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i486-linux-gnu/4.0.2/../../../../include/c++/4.0.2
 /usr/lib/gcc/i486-linux-gnu/4.0.2/../../../../include/c++/4.0.2/i486-linux-gnu
 /usr/lib/gcc/i486-linux-gnu/4.0.2/../../../../include/c++/4.0.2/backward
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.0.2/include
 /usr/include
End of search list.
 /usr/lib/gcc/i486-linux-gnu/4.0.2/cc1plus -fpreprocessed pom.ii -quiet
-dumpbase pom.cpp -mtune=i486 -auxbase pom -version -o pom.s
GNU C++ version 4.0.2 (i486-linux-gnu)
        compiled by GNU C version 4.0.2.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072


-- 
           Summary: not integer constant error while casting static double
                    const member to int in enum at compile-time
           Product: gcc
           Version: 4.0.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pkgm at o2 dot pl
 GCC build triplet: i486-linux-gnu
  GCC host triplet: i486-linux-gnu
GCC target triplet: i486-linux-gnu


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

Reply via email to