mogę utworzyć constexpr
std :: tablicy:Nie można utworzyć std :: vector constexpr
constexpr std::array<int,5> values {1,2,3,4,5};
to działa dobrze. Ale nie mogę tworzyć constexpr
Vector:
constexpr std::vector<int> vec = {1,2,3,4,5};
Daje mi błąd:
the type 'const std::vector<int>' of constexpr variable 'vec' is not literal constexpr std::vector<int> vec = {1,2,3,4,5};
Formalnie jest tak dlatego, że konstruktor 'wektor' nie jest deklarowany' constexpr'. Dlaczego tak się nie deklaruje? Ponieważ konstruktor 'vector' zwykle musi alokować pamięć na stercie, co oczywiście może być wykonane tylko w czasie wykonywania. –
@Igor Tandetnik, więc nie ma sposobu na stworzenie wektora constexpr? – Leo
Nie, nie ma. Dlaczego chcesz? Nie ma dla mnie większego sensu. Cały punkt "wektora" to jego zdolność do dynamicznej zmiany rozmiaru. Jeśli tego nie potrzebujesz, po prostu użyj 'std :: array' lub zwykłej tablicy. –