Por que membros estáticos constantes não podem aparecer em uma expressão constante como 'switch'

Eu tenho a seguinte declaração de alguns membros const estáticos

.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

Em algum momento eu quero usar esses valores em um switch como:

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

Mas recebo o seguinte erro do compilador:erro: 'MyClass :: sInvalid' não pode aparecer em uma expressão constante.

Eu li outras coisas que não podem aparecer constantemente e não encontrei uma resposta para mim, já que não entendo por questatic const unsigned char não são expressão constante.

Eu estou usando o gcc 4.5.

questionAnswers(3)

yourAnswerToTheQuestion