Warum statische const-Member in einem konstanten Ausdruck wie 'switch' nicht vorkommen können

Ich habe die folgende Deklaration einiger statischer const-Mitglieder

.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

Irgendwann möchte ich diesen Wert in einem Schalter verwenden wie:

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

Aber ich bekomme folgenden Compiler-Fehler:Fehler: 'MyClass :: sInvalid' kann nicht in einem Konstantenausdruck erscheinen.

Ich habe andere Sachen gelesen, bei denen Switches nicht als konstant erscheinen können, und habe keine Antwort für mich gefunden, da ich nicht verstehe, warum diesestatic const unsigned char sind keine konstanten Ausdrücke.

Ich benutze gcc 4.5.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage