Mengapa rujukan universal berkongsi sintaks (T&&) yang sama seperti rujukan rvalue ? Bukankah ini mengelirukan?
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.
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!