Unter Verwendung von C ++ 11, Ubuntu 14.04, GCC Standard-Toolchain .
Dieser Code schlägt fehl:
constexpr std::string constString = "constString";
Fehler: Der Typ 'const string {aka const std :: basic_string}' der constexpr-Variablen 'constString' ist nicht wörtlich ... weil ... 'std :: basic_string' einen nicht trivialen Destruktor hat
Ist es möglich, std::string
in einem zu verwenden constexpr
? (anscheinend nicht ...) Wenn ja, wie? Gibt es eine alternative Möglichkeit, eine Zeichenfolge in a zu verwenden constexpr
?
std::string
constexpr sein willst? Auf SO gibt es mehrere Implementierungen von Zeichenfolgen zur Kompilierungszeit. Was bringt es, zu fragen, ob Sie einen nicht-wörtlichen Typ constexpr erstellen können, wenn Sie die Fehlermeldung verstehen und wissen, dass nur wörtliche Typen constexpr erstellt werden können? Es gibt auch mehrere Gründe, warum man eine constexpr-Instanz haben möchte, daher schlage ich vor, dass Sie Ihre Frage klären
constexpr
String-Implementierungen da draußen. std::string
ist keiner von ihnen.
std::string
ist kein wörtlicher Typ