Comment std :: vector attribue-t-il constexpr?

Sep 03 2020

Étant donné que le contenu actuel et la taille d'un vecteur peuvent être déterminés aléatoirement au moment de l'exécution, et que tout le contenu devra être détruit lors de l'appel à assign, comment la fonction membre assign de C ++ 20 peut-elle être constexpr ie. au moment de la compilation?

Réponses

3 metamorphosis Sep 03 2020 at 11:26

J'ai trouvé ma réponse ici . Citer,

Être une fonction constexpr ne signifie pas que la fonction est exécutée au moment de la compilation. Il dit que la fonction a le potentiel de s'exécuter au moment de la compilation. Une fonction constexpr peut également exécuter un runtime. C'est souvent une question de compilateur et de niveau d'optimisation si une fonction constexpr s'exécute au moment de la compilation ou de l'exécution.

Ergo, contrairement aux variables constexpr, qui doivent être déterminables au moment de la compilation, un appel d'une fonction constexpr donnée peut être exécuté au moment de la compilation, en fonction des circonstances de l'appel (par exemple un constexpr std :: vector) et un autre au moment de l'exécution (par exemple un non-constexpr std :: vector).