Usando C ++ 11, Ubuntu 14.04, cadeia de ferramentas padrão do GCC .
Este código falha:
constexpr std::string constString = "constString";
erro: o tipo 'const string {aka const std :: basic_string}' da variável constexpr 'constString' não é literal ... porque ... 'std :: basic_string' possui um destruidor não trivial
É possível usar std::string
em um constexpr
? (aparentemente não ...) Se sim, como? Existe uma maneira alternativa de usar uma cadeia de caracteres em um constexpr
?
std::string
ser constexpr? existem várias implementações de string em tempo de compilação no SO. qual é o sentido de perguntar se é possível criar um tipo não literal constexpr se você entende a mensagem de erro e sabe que apenas tipos literais podem ser constexpr? assim há várias razões pelas quais se pode querer ter uma instância constexpr, então eu sugiro que você esclarecer sua pergunta
constexpr
implementações de strings por aí. std::string
não é um deles.
std::string
não é um tipo literal #