Penegasan statis digunakan untuk membuat pernyataan pada waktu kompilasi. Ketika pernyataan statis gagal, program tidak dapat dikompilasi. Ini berguna dalam situasi yang berbeda, seperti, misalnya, jika Anda menerapkan beberapa fungsionalitas dengan kode yang sangat bergantung pada unsigned int
objek yang memiliki persis 32 bit. Anda dapat menempatkan pernyataan statis seperti ini
static_assert(sizeof(unsigned int) * CHAR_BIT == 32);
dalam kode Anda. Di platform lain, dengan jenis ukuran yang berbeda unsigned int
, kompilasi akan gagal, sehingga menarik perhatian pengembang ke bagian kode yang bermasalah dan menyarankan mereka untuk menerapkan ulang atau memeriksanya kembali.
Untuk contoh lain, Anda mungkin ingin meneruskan beberapa nilai integral sebagai void *
pointer ke suatu fungsi (hack, tetapi kadang berguna) dan Anda ingin memastikan bahwa nilai integral akan sesuai dengan pointer
int i;
static_assert(sizeof(void *) >= sizeof i);
foo((void *) i);
Anda mungkin ingin aset char
jenis itu ditandatangani
static_assert(CHAR_MIN < 0);
atau pembagian integral dengan nilai negatif membulatkan ke arah nol
static_assert(-5 / 2 == -2);
Dan seterusnya.
Dalam banyak kasus, pernyataan run-time dapat digunakan sebagai pengganti pernyataan statis, tetapi pernyataan run-time hanya berfungsi pada waktu proses dan hanya jika kontrol melewati pernyataan. Karena alasan ini, pernyataan run-time yang gagal mungkin tidak aktif, tidak terdeteksi untuk waktu yang lama.
Tentu saja, ekspresi dalam pernyataan statis harus berupa konstanta waktu kompilasi. Ini tidak bisa menjadi nilai run-time. Untuk nilai run-time Anda tidak punya pilihan lain selain menggunakan yang biasa assert
.