Mengapa constexpr harus statis?
Setelah membaca ini dan ini saya masih merasa bingung dengan ungkapan seperti ini:
static constexpr int = 0;
AFAIK, dalam C ++:
staticmemastikan alamat memori seumur hidup di sepanjang eksekusi dan inisialisasi yang aman dengan thread bersamaanconstexprmemastikan evaluasi kompilasi waktu sebagai nilai r, yang berarti tidak memiliki alamat memori
Mereka tampak kontradiktif bagi saya. staticmemastikan variabel akan memiliki alamat memori yang lama sementara constexprmemastikan asumsi yang berlawanan. Anehnya, pembahasan di tautan pertama menyebutkan ini:
constexpr int x = 3;
const int* p = &x;
Bagaimana kita bisa mendapatkan alamat memori xjika itu adalah nilai r?
Adakah yang bisa menjelaskannya? Terima kasih sebelumnya
Jawaban
staticmemiliki sejumlah arti. Di kelas (per komentar Anda), itu berarti bahwa anggota tersebut terkait dengan kelas, dan bukan contoh spesifik (objek) dari kelas itu.
Untuk a constexpr, itu sangat masuk akal. Itu biasanya diinisialisasi oleh nilai yang dikenal oleh kompilator, dan bukan dari argumen ctor.