Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Parameter dan Jenis Pengembalian Ungkapan C Lambda?

Bagaimanakah Saya Boleh Menentukan Parameter dan Jenis Pengembalian Ungkapan C Lambda?

Barbara Streisand
Lepaskan: 2024-12-31 07:09:09
asal
696 orang telah melayarinya

How Can I Determine the Parameter and Return Types of a C   Lambda Expression?

Menentukan Parameter dan Jenis Pengembalian Ungkapan Lambda

Memandangkan ungkapan lambda, sukar untuk memastikan parameter dan jenis pengembaliannya. Artikel ini meneroka cara mengekstrak maklumat ini menggunakan ciri lambda.

Dalam C 11, ungkapan lambda diperkenalkan dan boleh digunakan dalam pelbagai senario. Satu kes penggunaan yang berpotensi adalah untuk menghantar lambda sebagai argumen kepada templat berfungsi, tetapi untuk berjaya melakukannya, mengetahui parameter lambda dan jenis pengembalian adalah penting.

Pada mulanya, percubaan untuk menggunakan std::function untuk mewakili ungkapan lambda yang ditemui kesilapan. Walau bagaimanapun, pengenalan lambda_traits menyediakan penyelesaian yang lebih mantap. Menggunakan decltype operator lambda(), lambda_traits boleh menentukan jenis parameter.

Coretan kod berikut menggambarkan cara ciri lambda boleh digunakan untuk mengekstrak maklumat jenis daripada ungkapan lambda:

template <typename TLambda>
void f(TLambda lambda)
{
   typedef typename lambda_traits<TLambda>::param_type  P;
   typedef typename lambda_traits<TLambda>::return_type R;

   std::function<R(P)> fun = lambda; // Construct the std::function object
}
Salin selepas log masuk

Dalam senario contoh ini, templat fungsi f menerima lambda sebagai hujah dan menggunakan ciri lambda untuk menyimpulkan parameternya dan jenis pengembalian.

Untuk lambda generik yang tidak menyatakan jenis eksplisit, seperti [](auto x) {}, pendekatan ini tidak akan berfungsi. Namun begitu, ciri lambda terbukti berkesan untuk lambda dengan parameter yang ditentukan dan jenis pulangan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Parameter dan Jenis Pengembalian Ungkapan C Lambda?. 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