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?
Tags und Links c++ c++11 templates constexpr static-assert