Usando C ++ 11, Ubuntu 14.04, cadena de herramientas predeterminada de GCC .
Este código falla:
constexpr std::string constString = "constString";
error: el tipo 'const string {aka const std :: basic_string}' de la variable constexpr 'constString' no es literal ... porque ... 'std :: basic_string' tiene un destructor no trivial
¿Es posible usar std::string
en un constexpr
? (aparentemente no ...) Si es así, ¿cómo? ¿Hay alguna forma alternativa de usar una cadena de caracteres en un constexpr
?
std::string
ser constexpr? Hay varias implementaciones de cadenas en tiempo de compilación en SO. ¿Cuál es el punto de preguntar si puede hacer un constexpr de tipo no literal si comprende el mensaje de error y sabe que solo los tipos literales se pueden hacer constexpr? así que hay varias razones por las cuales uno puede querer tener una instancia constexpr, por lo que sugiero a aclarar su pregunta
constexpr
implementaciones de cadenas por ahí. std::string
No es uno de ellos.
std::string
no es un tipo literal