Konsep pemajuan rujukan dan rujukan rnilai yang berkongsi sintaks yang sama dalam C telah menimbulkan persoalan dalam kalangan pembangun. Mari kita selidiki rasional di sebalik keputusan ini dan terokai sintaks secara terperinci.
Rujukan pemajuan, dilambangkan dengan T&&, dan rujukan rnilai, juga dilambangkan dengan T&&, tidak terikat pada lnilai. Walau bagaimanapun, rujukan universal, yang dilambangkan dengan sintaks yang sama, boleh mengikat kedua-dua nilai r dan lnilai. Tingkah laku dwi ini mungkin kelihatan mengelirukan, jadi mari kita jelaskan mekanisme yang mendasarinya.
Rujukan universal, seperti T&&, mempunyai keupayaan untuk menyimpulkan T sebagai sama ada "jenis objek" atau "jenis rujukan." Apabila melepasi nilai r, T boleh disimpulkan sebagai jenis objek, menghasilkan parameter fungsi jenis T&&. Sebagai alternatif, apabila lulus nilai, T membuat kesimpulan sebagai jenis rujukan, secara berkesan runtuh kepada T& berdasarkan peraturan rujukan runtuh.
Tingkah laku ini disepadukan dengan lancar dengan potongan hujah templat dan peraturan runtuh rujukan, dengan pengecualian kecil bahawa a parameter templat kini boleh disimpulkan sebagai jenis rujukan. Sintaks untuk rujukan universal sejajar dengan mekanisme potongan ini, membenarkan sistem jenis yang konsisten merentas templat dan seluruh bahasa.
Jawatankuasa C mempertimbangkan sintaks alternatif dengan teliti tetapi akhirnya memutuskan untuk menentangnya. Cadangan seperti T&&&&&&, T*&, T@, dan T&42 telah dipertimbangkan, tetapi ia dianggap tidak perlu dan berkemungkinan lebih mengelirukan.
Sintaksis T&& untuk rujukan universal memastikan keserasian dengan peraturan rujukan yang runtuh, memberikan sintaksis secara sintaksis cara yang konsisten untuk mengendalikan jenis objek dan jenis rujukan. Dengan menggunakan sintaks yang sama untuk memajukan rujukan dan rujukan nilai, bahasa mengekalkan kesederhanaan dan meminimumkan kekeliruan.
Atas ialah kandungan terperinci Mengapa Rujukan C Forwarding dan Rujukan Rvalue Berkongsi Sintaks yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!