Bagaimanakah Fungsi Alamat C Lebih Muatan Berdasarkan Argumen Constexpr?

DDD
Lepaskan: 2024-10-26 11:49:02
asal
182 orang telah melayarinya

How Did C   Address Function Overloading Based on Constexpr Arguments?

Melebihi Fungsi Berdasarkan Argumen Constexpr

Melebihi beban fungsi berdasarkan konstexprness argumen adalah batasan yang dihadapi oleh pengaturcara dalam C 11. Ini bermakna bahawa tidak mungkin untuk mentakrifkan dua fungsi dengan tandatangan yang sama, tetapi satu adalah constexpr dan satu lagi bukan constexpr.

Pelaksanaan C 11 yang mematuhi piawai tidak membenarkan beban berlebihan sedemikian dan pengehadan ini sengaja dikuatkuasakan. Walau bagaimanapun, isu itu telah diiktiraf dan ditangani dalam versi standard C yang terkemudian.

Dalam C 17, konsep "constexpr lambdas" telah diperkenalkan, menyediakan penyelesaian untuk isu ini. Constexpr lambdas membenarkan penciptaan fungsi tanpa nama yang boleh dilaksanakan pada masa penyusunan dan boleh menerima argumen constexpr.

Selain itu, bermula dengan C 20, satu set peraturan peleraian beban lampau baharu yang dikenali sebagai "pencarian dua fasa" telah dilaksanakan. Peraturan ini mengutamakan fungsi constexpr apabila memanggil fungsi dengan argumen constexpr, mensimulasikan lebihan fungsi secara berkesan berdasarkan constexprness.

Dengan memanfaatkan constexpr lambdas atau mematuhi peraturan resolusi beban lampau baharu dalam C 20 dan kemudian, pengaturcara boleh mencapai fungsi mereka inginkan.

Contoh:

  • std::string Constructors: Dalam C 11, std::string constructors tidak membezakan antara argumen constexpr dan bukan constexpr. Walau bagaimanapun, menggunakan lambda constexpr dalam C 17 atau peraturan carian dua fasa dalam C 20, adalah mungkin untuk mentakrifkan pembina constexpr yang hanya mengambil argumen constexpr.
  • Fungsi Dioptimumkan dengan Keadaan: Dalam C 11, sukar untuk mencipta fungsi cekap yang boleh memanfaatkan keadaan sambil mengekalkan tingkah laku konstexpr. Walau bagaimanapun, dalam C 20, peraturan carian dua fasa membenarkan penciptaan fungsi bukan constexpr yang dipanggil hanya apabila perlu, mengekalkan semantik constexpr apabila boleh.

Atas ialah kandungan terperinci Bagaimanakah Fungsi Alamat C Lebih Muatan Berdasarkan Argumen 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!