Je peux créer constexpr
std :: tableau:Impossible de créer constexpr std :: vector
constexpr std::array<int,5> values {1,2,3,4,5};
Il fonctionne très bien. Mais je ne peux pas créer constexpr
vecteur:
constexpr std::vector<int> vec = {1,2,3,4,5};
Il me donne une erreur:
the type 'const std::vector<int>' of constexpr variable 'vec' is not literal constexpr std::vector<int> vec = {1,2,3,4,5};
Formellement, c'est parce que le constructeur 'vector' n'est pas déclaré' constexpr'. Pourquoi n'est-il pas ainsi déclaré? Parce que le constructeur 'vector' doit généralement allouer de la mémoire sur le tas, ce qui bien sûr ne peut être fait que lors de l'exécution. –
@Igor Tandetnik donc, il n'y a aucun moyen de créer un vecteur constexpr? – Leo
Non, il n'y en a pas. Pourquoi voudriez-vous? Cela n'a aucun sens pour moi. Le point entier de 'vector' est sa capacité à redimensionner dynamiquement. Si vous n'en avez pas besoin, utilisez simplement std :: array ou plain array. –