Bagaimana C ++ 20 std :: vector assign constexpr?

Sep 03 2020

Mengingat bahwa konten saat ini dan ukuran vektor dapat ditentukan secara acak pada waktu proses, dan semua konten harus dihancurkan saat memanggil assign, bagaimana C ++ 20's assign fungsi anggota menjadi constexpr ie. waktu kompilasi?

Jawaban

3 metamorphosis Sep 03 2020 at 11:26

Temukan jawaban saya di sini . Kutipan,

Menjadi fungsi constexpr tidak berarti bahwa fungsi tersebut dijalankan pada waktu kompilasi. Dikatakan, bahwa fungsi tersebut berpotensi untuk dijalankan pada waktu kompilasi. Fungsi constexpr juga dapat menjalankan runtime. Ini sering menjadi pertanyaan tentang compiler dan level pengoptimalan jika fungsi constexpr berjalan pada waktu kompilasi atau runtime.

Ergo, tidak seperti variabel constexpr, yang harus dapat ditentukan pada waktu kompilasi, satu panggilan dari fungsi constexpr tertentu dapat dijalankan pada waktu kompilasi, bergantung pada keadaan pemanggilan (misalnya, sebuah constexpr std :: vector) dan panggilan lainnya pada waktu proses (misalnya, a. non-constexpr std :: vector).