Mengapakah `static_assert`s dalam cabang `false` `constexpr if` tidak terbentuk?

Mary-Kate Olsen
Lepaskan: 2024-11-25 11:59:11
asal
914 orang telah melayarinya

Why are `static_assert`s in the `false` branch of a `constexpr if` ill-formed?

constexpr if with Failed Static_Assert in the False Branch

Soalan:

Walaupun cadangan itu kekurangan sebutan eksplisit static_assert, mengapa penggunaannya dalam cawangan yang tidak diambil daripada constexpr jika pernyataan dianggap tidak berbentuk?

Jawapan:

Mengikut peraturan untuk templat ([temp.res]/8), program tidak berfungsi -terbentuk NDR (tiada diagnostik diperlukan) jika:

  • Tiada pengkhususan yang sah boleh dijana untuk templat, atau substatement bagi pernyataan constexpr if dalam templat.
  • Templat tidak dibuat seketika.

Dalam kes static_assert dengan syarat tidak bergantung yang menilai kepada palsu, tiada pengkhususan yang sah boleh dijana untuk templat yang mengandungi static_assert. Oleh itu, program yang mengandungi pernyataan sedemikian adalah bentuk yang tidak betul.

Contoh:

`
void f() {
if constexpr (false)

static_assert(false);   // ill-formed
Salin selepas log masuk

}
`

Dalam ini contoh, static_assert dalam cabang tidak diambil bagi pernyataan constexpr if menjadikan keseluruhan fungsi tidak terbentuk, kerana tiada pengkhususan yang sah boleh dijana untuk templat yang mengandungi static_assert.

Walau bagaimanapun, peraturan ini tidak menjejaskan static_asserts dengan syarat bergantung yang boleh menilai kepada benar untuk sekurang-kurangnya satu jenis.

Atas ialah kandungan terperinci Mengapakah `static_assert`s dalam cabang `false` `constexpr if` tidak terbentuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan