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::string
dans 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
constexpr
des implémentations de chaînes. std::string
n'en fait pas partie.
std::string
n'est pas un type littéral