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::stringen un constexpr? (aparentemente no ...) Si es así, ¿cómo? ¿Hay alguna forma alternativa de usar una cadena de caracteres en un constexpr?
std::stringser 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
constexprimplementaciones de cadenas por ahí. std::stringNo es uno de ellos.
std::stringno es un tipo literal