2012-03-28 2 views
6
struct X { 
constexpr static char a1[] = "hello"; // Okay 
constexpr static const char* a2[] = {"hello"}; // Error 
}; 

int main(){} 

mit gcc kompilieren gibt den Fehler:Fehler bei constexpr (gcc) - Fehler: ein in geschweiften Klammern stehenden Initialisierer hier nicht erlaubt ist, bevor ‚{‘ token

error: a brace-enclosed initializer is not allowed here before '{' token

Ist dies eine illegale Verwendung von constexpr ?

EDIT

habe ich versucht, 3 verschiedene Versionen von gcc, und auf dem neuesten 4.7.0 kompiliert Ich habe (ich es gerade heruntergeladen, ich mingw-w64 bin mit), so dass es sein schaut ein behobener Fehler (ein Link zum Bug wäre aber nett!).

4.7.0 20120311 (prerelease) // Okay
4.6.4 20120305 (prerelease) // Error
4.7.0 20110829 (experimental) // Error

+0

@BenjaminLindley: Ich habe eine neuere Version heruntergeladen und es hat funktioniert, also scheint es sich um einen behobenen Fehler (siehe meine Änderungen). Vielen Dank! (Sollte ich diese Frage löschen?) –

+1

@Jesse: Ich würde die Frage lieber hier belassen (wenn auch den Titel verbessern, wenn möglich, zB die Fehlermeldung hinzufügen). Auf diese Weise weiß die nächste Person, die dieses Problem hat, zu aktualisieren. –

Antwort

2

Dies ist ein Fehler, der behoben wurde. Ich habe bestätigt, dass der Code mit g++ 4.7.0 20120311 (prerelease) kompiliert.

Verwandte Themen