static_assert erkennt einen Template-Parameter const char * nicht als constexpr: g ++ bug?

8

Beachten Sie die folgenden Definitionen.

%Vor%

Der vollständige Fehler ist

  

../ main.cpp: 16: 3: Fehler: nicht konstante Bedingung für statische Assertion

     

../ main.cpp: 16: 3: error: '(((const char *) (& amp; Test :: falscher_string)) == ((const char *) (& amp; Test :: right_string)) ) 'ist kein konstanter Ausdruck

Ich glaube, das ist ein Compiler-Fehler, weil es keinen Sinn ergibt, dass sich die constexpr ness des Ausdrucks in static_assert entsprechend dem, was ich als Template-Parameter übergebe, ändert (ob Test::right_string oder% co_de) %).

Ich habe bereits festgestellt, dass g ++ 4.6 etwas fehlerhaft ist, wenn Adressen als Vorlagenparameter behandelt werden. Ist das eine Instanz des gleichen Fehlers?

    
Lorenzo Pistone 01.05.2012, 23:39
quelle

1 Antwort

2

Es ist ein g ++ Bug, behoben (zumindest) in 4.7.

    
Lorenzo Pistone 02.05.2012, 17:14
quelle