Erstellen kann constexpr std::vector

Kann ich constexpr std::array:

constexpr std::array<int,5> values {1,2,3,4,5};

Funktioniert es einwandfrei. Aber ich kann keine erstellen constexpr Vektor:

constexpr std::vector<int> vec = {1,2,3,4,5};

Es gibt mir eine Fehlermeldung:

the type 'const std::vector<int>' of constexpr variable 'vec' is not literal constexpr std::vector<int> vec = {1,2,3,4,5};

  • Formal ist das so, weil vector Konstruktor ist nicht deklariert constexpr. Warum ist es dann nicht so deklariert? Da vector Konstruktor in der Regel benötigt, um Speicher auf dem heap, das kann nur zur Laufzeit geschehen.
  • Tandetnik so, es gibt keinen Weg, um erstellen Sie constexpr Vektor?
  • Nein gibt es nicht. Warum würden Sie wollen? Es macht wenig Sinn für mich. Der springende Punkt bei der vector ist seine Fähigkeit, die Größe dynamisch. Wenn Sie nicht brauchen, dass, nur verwenden std::array oder einfaches array übergeben werden.
  • Tandetnik. Eigentlich bin ich mit Qt und es gibt nichts, wie std::array container, also habe ich versucht zu verwenden QVector und QList und es funktioniert nicht. Ich will nicht zu mischen Qt und stl Container. Also, ich denke, jetzt habe ich zu
  • Es gibt Anwendungsfälle, zum Beispiel, wenn Sie eine Globale Palette von paar<enum, Vektor - > wo kann der Vektor bestehen aus einer begrenzten (aber Variablen) zahlen zur Kompilierzeit bekannt ist.
InformationsquelleAutor Leo | 2015-10-20
Schreibe einen Kommentar