Utilizzando C ++ 11, Ubuntu 14.04, toolchain predefinito GCC .
Questo codice ha esito negativo:
constexpr std::string constString = "constString";
errore: il tipo 'const string {aka const std :: basic_string}' della variabile constexpr 'constString' non è letterale ... perché ... 'std :: basic_string' ha un distruttore non banale
È possibile utilizzare std::string
in un constexpr
? (apparentemente no ...) In tal caso, come? Esiste un modo alternativo di usare una stringa di caratteri in un constexpr
?
std::string
essere constexpr? ci sono diverse implementazioni di stringhe in fase di compilazione su SO. che senso ha chiedere se è possibile creare un tipo non letterale constexpr se si comprende un messaggio di errore e si sa che solo i tipi letterali possono essere resi constexpr? inoltre ci sono diversi motivi per cui si potrebbe desiderare di avere un'istanza constexpr, quindi ti suggerisco di chiarire la tua domanda
constexpr
implementazioni di stringhe là fuori. std::string
non è uno di questi.
std::string
non è un tipo letterale