Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Fungsi Lambda Digunakan dalam Ungkapan `constexpr`?

Bolehkah Fungsi Lambda Digunakan dalam Ungkapan `constexpr`?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 01:15:28456semak imbas

Can Lambda Functions Be Used in `constexpr` Expressions?

Sokongan Constexpr untuk Fungsi Lambda

Soalan Asal:

Bolehkah fungsi lambda menggunakan constexpr kata kunci?

Respons:

Dalam C 14, fungsi lambda tidak disokong oleh constexpr. Walau bagaimanapun, ini ditetapkan untuk berubah dengan penggunaan N4487. Cadangan ini akan membenarkan operasi jenis penutupan lambda dan khusus dalam ungkapan malar.

Penjelasan:

Di bawah [expr.const]/(2.6) piawai C 14, lambdas dikecualikan daripada ungkapan malar. Had ini digariskan dalam N4487:

"Cadangan ini mencadangkan membenarkan **ungkapan-lambda** dalam ungkapan malar, mengalih keluar sekatan sedia ada. Pengarang mencadangkan bahawa **ungkapan-lambda**s dan operasi tertentu pada objek penutupan tertentu dibenarkan muncul dalam ungkapan malar."

Selain itu, cadangan menyatakan bahawa:

  • Jenis penutupan dianggap sebagai jenis literal jika ahli datanya adalah semua jenis literal.
  • Jika penentu constexpr diabaikan daripada pengisytihar lambda, operator panggilan fungsi yang dijana menjadi constexpr selagi ia memenuhi keperluan fungsi constexpr. Tingkah laku ini serupa dengan inferens constexpr untuk pembina dan pengendali tugasan yang ditakrifkan secara tersirat.

Atas ialah kandungan terperinci Bolehkah Fungsi Lambda Digunakan dalam Ungkapan `constexpr`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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