Por qué los miembros const de static no pueden aparecer en una expresión constante como 'switch'

Tengo la siguiente declaración de algunos miembros const constantes

.h

class MyClass : public MyBase
{
public:
    static const unsigned char sInvalid;
    static const unsigned char sOutside;
    static const unsigned char sInside;
    //(41 more ...)
}

.cpp

const unsigned char MyClass::sInvalid = 0;
const unsigned char MyClass::sOutside = 1;
const unsigned char MyClass::sInside = 2;
//and so on

En algún momento quiero usar esos valores en un interruptor como:

unsigned char value;
...
switch(value) {
    case MyClass::sInvalid : /*Do some ;*/ break;
    case MyClass::sOutside : /*Do some ;*/ break;
    ...
}

Pero me sale el siguiente error del compilador:error: 'MyClass :: sInvalid' no puede aparecer en una expresión constante.

He leído otras cosas que cambian y no aparecen constantemente y no encontré una respuesta para mí, ya que no entiendo por qué esasstatic const unsigned char No son expresiones constantes.

Estoy usando gcc 4.5.

Respuestas a la pregunta(3)

Su respuesta a la pregunta