Використовуючи C ++ 11, Ubuntu 14.04, GCC за замовчуванням .
Цей код не вдається:
constexpr std::string constString = "constString";
помилка: тип 'const string {aka const std :: basic_string}' змінної constexpr 'constString' не є буквальним ... тому що ... 'std :: basic_string' має нетривіальний деструктор
Чи можливо використовувати std::string
в constexpr
? (мабуть, ні ...) Якщо так, то як? Чи є альтернативний спосіб використання символьного рядка в constexpr
?
std::string
бути constexpr? Є кілька реалізацій рядка компіляції в часі на SO. який сенс запитати, чи можна зробити constexpr нелітерального типу, якщо ви розумієте повідомлення про помилку і знаєте, що може бути зроблений constexpr? а також є кілька причин, чому можна захотіти мати екземпляр constexpr, тому я пропоную вам уточнити своє запитання
constexpr
реалізація рядків. std::string
не одна з них.
std::string
- це не буквальний тип