Bolehkah Fungsi Lambda Digunakan dalam Konteks `constexpr`?

DDD
Lepaskan: 2024-10-31 00:30:29
asal
977 orang telah melayarinya

 Can Lambda Functions Be Used in `constexpr` Contexts?

Sokongan constexpr untuk Fungsi Lambda

sokongan constexpr untuk fungsi lambda telah menjadi topik yang dibincangkan secara meluas dalam komuniti C. Walaupun lambda pada masa ini tidak dibenarkan dalam ungkapan tetap mengikut [expr.const]/(2.6), N4487, yang disertakan dalam draf kerja N4582, bercadang untuk mengalih keluar sekatan ini.

Cadangan lambda- perubahan berkaitan:

  • Benarkan lambda dalam ungkapan tetap.
  • Pertimbangkan jenis penutupan sebagai jenis literal jika semua ahli datanya adalah jenis literal.
  • Jika penentu constexpr diabaikan dalam pengisytihar lambda, operator panggilan fungsi yang dijana dianggap constexpr jika ia memenuhi keperluan fungsi constexpr.

Contoh:

Contoh berikut akan sah setelah N4487 diterima:

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

Penyelesaian:

Sebagai penyelesaian sebelum sokongan constexpr ditambahkan secara rasmi, anda boleh menggunakan templat fungsi dan bukannya lambda:

<code class="c++">struct Test
{
  template <typename>
  static const int value = 0;
};</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bolehkah Fungsi Lambda Digunakan dalam Konteks `constexpr`?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!