Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa C Menggunakan Sintaks (T&&) yang Sama untuk Mengirim Rujukan dan Rujukan Rvalue?

Mengapa C Menggunakan Sintaks (T&&) yang Sama untuk Mengirim Rujukan dan Rujukan Rvalue?

Linda Hamilton
Linda Hamiltonasal
2024-11-06 06:31:02735semak imbas

Why Does C   Use the Same Syntax (T&&) for Forwarding References and Rvalue References?

Rasional Di Sebalik Sintaks Dikongsi oleh Pemajuan dan Rujukan Rvalue

Soalan Asal

Mengapa rujukan universal berkongsi sintaks (T&&) yang sama seperti rujukan rvalue ? Bukankah ini mengelirukan?

Jawapan

Rujukan universal (T&&) boleh menyimpulkan T sebagai "jenis objek" atau "jenis rujukan." Apabila lulus nilai r, T deduksi kepada int, menghasilkan parameter int&&. Apabila lulus nilai, T deduksi kepada int&, runtuh kepada int& disebabkan oleh peraturan rujukan runtuh.

Apabila T tidak boleh disimpulkan (cth., dalam contoh X::baz), ia bukan rujukan universal.

Rasional

Menggunakan sintaks yang sama untuk rujukan universal dan rujukan rnilai memperkemas potongan hujah templat dan peraturan runtuh rujukan. Tweak yang dicadangkan membolehkan parameter templat disimpulkan sebagai jenis rujukan, menangani masalah pemajuan.

Sintaks alternatif, seperti T&&&&&, T@ atau T&42, telah dipertimbangkan tetapi ditolak. Mereka akan menimbulkan kekeliruan kerana pengisytihar T&&&@ tidak dapat mewakili jenis sebenar (ia akan sentiasa merujuk kepada int&& atau int&).

Sintaks semasa sejajar dengan sistem jenis yang lebih luas: apabila T ialah rujukan nilai, T&& juga. Peraturan adalah konsisten dan mengelakkan kerumitan yang tidak perlu.

Atas ialah kandungan terperinci Mengapa C Menggunakan Sintaks (T&&) yang Sama untuk Mengirim Rujukan dan Rujukan Rvalue?. 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