C ++ 11, Ubuntu 14.04, GCC varsayılan araç zinciri kullanılarak .
Bu kod başarısız:
constexpr std::string constString = "constString";
hata: 'constString' constexpr değişkeninin 'const dizesi {aka const std :: basic_string}' harfi değişmez ... çünkü ... 'std :: basic_string' önemsiz olmayan bir yıkıcıya sahip
Kullanmak mümkün mü std::string
bir de constexpr
? (görünüşe göre değil ...) Öyleyse, nasıl? A karakter dizgisini kullanmanın alternatif bir yolu var mı constexpr
?
std::string
constexpr olmak istiyorsunuz? SO üzerinde birkaç derleme zamanı dize uygulaması vardır. Hata mesajını anlar ve yalnızca değişmez türlerin constexpr yapılabileceğini biliyorsanız, değişmez bir tür constexpr yapıp yapamayacağınızı sormanın anlamı nedir? bir kişinin bir bağlam örneği olmasını isteyebilmesinin birkaç nedeni olabilir, bu yüzden sorunuzu netleştirmenizi öneririm
constexpr
dize uygulamaları var. std::string
onlardan biri değil.
std::string
gerçek bir tür değil