Bolehkah Fungsi Lambda Digunakan dengan `constexpr` dalam C ?

Susan Sarandon
Lepaskan: 2024-11-02 09:51:02
asal
447 orang telah melayarinya

Can Lambda Functions Be Used with `constexpr` in C  ?

Fungsi dan Constexpr Lambda

Soalan: Adakah mungkin untuk menggunakan constexpr dengan fungsi lambda dalam C ?

Dalam contoh kod berikut, pengkompil melaporkan ralat yang berkaitan dengan memerlukan fungsi constexpr:

<code class="cpp">struct Test
{
  static const int value = []() -> int { return 0; } ();
};</code>
Salin selepas log masuk

Jawapan:

Kemas kini ( C 17): Mulai C 17, fungsi lambda dibenarkan dalam ungkapan malar.

Pra-C 17: Lambda tidak dibenarkan pada masa ini dalam ungkapan malar dalam C 14. Walau bagaimanapun , cadangan (N4487) telah dibuat untuk membenarkan ungkapan lambda dan objek penutupan tertentu muncul dalam ungkapan malar.

Jika cadangan ini diterima, ia akan memperkenalkan perubahan berikut:

  • Jenis penutupan akan dianggap sebagai jenis literal jika ahli data mereka adalah semua jenis literal.
  • Jika tiada penentu constexpr disediakan dalam pengisytihar lambda, operator panggilan fungsi yang dijana akan menjadi constexpr jika ia memenuhi keperluan untuk constexpr fungsi.

Perubahan ini akan sejajar dengan gelagat pembina yang ditakrifkan secara tersirat dan fungsi pengendali tugasan, yang boleh disimpulkan sebagai constexpr apabila sesuai.

Atas ialah kandungan terperinci Bolehkah Fungsi Lambda Digunakan dengan `constexpr` dalam C ?. 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