El conmutador C ++ no se compilará con la variable definida externamente utilizada como caso

Estoy escribiendo C ++ utilizando el compilador MinGW GNU y el problema se produce cuando intento usar una variable de enteros definida externamente como un caso en una declaración de switch. Me sale el siguiente error del compilador: "la etiqueta del caso no se reduce a una constante entera".

Como he definido la variable entera como externa, creo que debería compilarse, ¿alguien sabe cuál puede ser el problema?

A continuación se muestra un ejemplo:

test.cpp

#include <iostream>
#include "x_def.h"

int main()
{
   std::cout << "Main Entered" << std::endl;


   switch(0)
   {
      case test_int:
         std::cout << "Case X" << std::endl;
         break;
      default:
         std::cout << "Case Default" << std::endl;
         break;
   }

   return 0;
}

x_def.h

extern const int test_int;

x_def.cpp

const int test_int = 0;

Este código se compilará correctamente en Visual C ++ 2008. Además, un amigo mío de Montana comprobó el estándar ISO C ++ y parece que cualquier expresión const-integer debería funcionar. ¿Es esto posiblemente un error del compilador o me he perdido algo obvio?

Aquí está la información de la versión de mi compilador:

Leyendo las especificaciones de C: / MinGW / bin /../ lib / gcc / mingw32 / 3.4.5 / specs
Configurado con: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --with-gnu-as --host = mingw32 --target = mingw32 --prefix = / mingw --enable-threads --disable-nls --enable-languages ​​= c, c ++, f77, ada, objc, java --disable-win32-registry --disable-shared --enable-sjlj-exceptions - enable-libgcj --disable-java-awt --without-x --enable-java-gc = boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug
Modelo de hilo: win32
gcc versión 3.4.5 (mingw-vista special r3)

Respuestas a la pregunta(3)

Su respuesta a la pregunta