posso creare constexpr
std :: array:Impossibile creare std :: vector constexpr
constexpr std::array<int,5> values {1,2,3,4,5};
Funziona benissimo. Ma non posso creare constexpr
vettore:
constexpr std::vector<int> vec = {1,2,3,4,5};
Mi dà un errore:
the type 'const std::vector<int>' of constexpr variable 'vec' is not literal constexpr std::vector<int> vec = {1,2,3,4,5};
Formalmente, questo è dovuto al fatto che il costruttore 'vector' non è dichiarato' constexpr'. Perché non è così dichiarato? Poiché il costruttore 'vector' in genere ha bisogno di allocare memoria sull'heap, che ovviamente può essere fatto solo in fase di esecuzione. –
@Igor Tandetnik quindi, non c'è modo di creare il vettore di constexpr? – Leo
No, non c'è. Perché vorresti? Ha poco senso per me. L'intero punto di 'vector' è la sua capacità di ridimensionare dinamicamente. Se non ti serve, usa semplicemente 'std :: array' o plain array. –