Ne peut pas créer constexpr std::vector

Je peux créer constexpr std::array:

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};

Officiellement, c'est parce que vector constructeur n'est pas déclaré constexpr. Pourquoi n'est-il pas déclarée? Parce que vector constructeur a généralement besoin d'allouer de la mémoire sur le tas, ce qui, évidemment, ne peut être effectué au moment de l'exécution.
Tandetnik donc, il n'y a pas moyen de créer constexpr vecteur?
Non, il n'est pas. Pourquoi voudriez-vous? Il fait peu de sens pour moi. Le point de l'ensemble de vector est sa capacité à redimensionner dynamiquement. Si vous n'en avez pas besoin, il suffit d'utiliser std::array ou simple tableau.
Tandetnik. En fait, je suis en utilisant Qt et il n'y a rien comme std::array container, donc j'ai essayé d'utiliser QVector et QList et il ne fonctionne pas. Je ne veux pas mélanger Qt et stl conteneurs. Donc, je suppose que maintenant je
Il y a des cas d'utilisation, par exemple si vous avez un tableau global de la paire<enum, vector> où le vecteur peut être composé d'un nombre limité (mais variable) des nombres connus au moment de la compilation.

OriginalL'auteur Leo | 2015-10-20