Utilisation de C ++ 11, Ubuntu 14.04, la chaîne d'outils par défaut de GCC .
Ce code échoue:
constexpr std::string constString = "constString";
erreur: le type 'const string {aka const std :: basic_string}' de la variable constexpr 'constString' n'est pas littéral ... parce que ... 'std :: basic_string' a un destructeur non trivial
Est-il possible d'utiliser std::stringdans un constexpr? (apparemment pas ...) Si oui, comment? Y at - il une autre façon d'utiliser une chaîne de caractères dans un constexpr?
std::stringêtre constexpr? il existe plusieurs implémentations de chaînes au moment de la compilation sur SO. quel est l'intérêt de demander si vous pouvez créer un type non littéral constexpr si vous comprenez le message d'erreur et savez que seuls les types littéraux peuvent être créés constexpr? De plus, il y a plusieurs raisons pour lesquelles on peut vouloir avoir une instance constexpr, donc je vous suggère de clarifier votre question
constexprdes implémentations de chaînes. std::stringn'en fait pas partie.
std::stringn'est pas un type littéral