Używając C ++ 11, Ubuntu 14.04, domyślnego łańcucha narzędzi GCC .
Ten kod nie działa:
constexpr std::string constString = "constString";
błąd: typ 'const string {aka const std :: basic_string}' zmiennej constexpr 'constString' nie jest dosłowny ... ponieważ ... 'std :: basic_string' ma nietrywialny destruktor
Czy można użyć std::string
w constexpr
? (najwyraźniej nie ...) Jeśli tak, to jak? Czy istnieje alternatywny sposób użycia ciągu znaków w constexpr
?
std::string
być constexpr? istnieje kilka implementacji ciągu znaków czasu kompilacji w SO. Jaki jest sens w pytaniu, czy możesz utworzyć nieliteralny typ constexpr, jeśli rozumiesz komunikat o błędzie i wiesz, że tylko typy literalne mogą być konstruowane jako constexpr? Jest też kilka powodów, dla których warto mieć instancję constexpr, więc proponuję wyjaśnić swoje pytanie
constexpr
implementacje stringów. std::string
nie jest jednym z nich.
std::string
nie jest typem dosłownym