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

int main(){} 

Kompilowanie z gcc daje błąd:Błąd constexpr (GCC) - błąd: klamra zamkniętych inicjator nie jest dozwolone tutaj przed „{” żeton

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

Czy jest to niezgodne z prawem wykorzystanie constexpr ?

EDIT

próbowałem 3 różne wersje gcc, a opracowane na najnowszej 4.7.0 mam (Właśnie ściągnąłem go używam MinGW-W64), więc wygląda na naprawiony błąd (link do błędu byłby fajny!).

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

+0

@BenjaminLindley: Pobrałem nowszą wersję i zadziałało, więc wygląda na naprawiony błąd (zobacz moje zmiany). Dzięki! (Czy powinienem usunąć to pytanie?) –

+1

@Jesse: Wolałbym zostawić pytanie tutaj (chociaż poprawić tytuł, jeśli to możliwe, na przykład dodając komunikat o błędzie). W ten sposób kolejna osoba mająca ten problem będzie wiedzieć, aby zaktualizować. –

Odpowiedz

2

To jest błąd, który został naprawiony. Potwierdziłem, że kod kompiluje się z g++ 4.7.0 20120311 (prerelease).

Powiązane problemy