Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Lambdas Digunakan dalam Ungkapan Malar dalam C?

Bolehkah Lambdas Digunakan dalam Ungkapan Malar dalam C?

Barbara Streisand
Barbara Streisandasal
2024-10-30 00:12:29445semak imbas

Can Lambdas Be Used in Constant Expressions in C  ?

Bolehkah Lambdas Menggunakan constexpr?

Dalam versi C terdahulu, kemasukan fungsi lambda dalam ungkapan malar telah dihadkan, seperti yang digariskan dalam [ expr.const]/(2.6). Walau bagaimanapun, N4487, termasuk dalam draf kerja N4582, memperkenalkan perubahan yang membolehkan lambda digunakan dalam ungkapan ini.

Sintaks untuk Constexpr Lambdas

Perubahan yang dicadangkan dalam N4487 menyediakan garis panduan untuk sintaks yang betul apabila menggunakan lambda dalam ungkapan malar:

  • Ungkapan lambda tertentu dibenarkan dalam ungkapan malar.
  • Operasi yang dilakukan pada objek penutupan tertentu dibenarkan dalam ungkapan malar.
  • Jenis penutupan dianggap jenis literal jika setiap ahli data mereka juga jenis literal.
  • Jika penentu constexpr tidak disediakan dalam pengisytihar lambda, operator panggilan fungsi yang dijana akan dipertimbangkan constexpr jika ia memenuhi keperluan fungsi constexpr. Tingkah laku ini sejajar dengan inferens konstexpr tersirat untuk pembina dan fungsi pengendali tugasan.

Penyelesaian untuk Versi C Terdahulu

Untuk versi C sebelum pelaksanaan N4487 , pendekatan alternatif diperlukan untuk menggunakan lambdas dalam ungkapan malar. Satu penyelesaian melibatkan penggunaan teknik pengaturcaraan meta templat untuk mencapai kefungsian yang diingini.

Atas ialah kandungan terperinci Bolehkah Lambdas Digunakan dalam Ungkapan Malar dalam C?. 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