Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Parameter 'parameter' adalah referensi untuk mengkonsumsi pointer unik, gunakan
const T*atauconst T&sebagai gantinya (r.32)
Umumnya, referensi ke const unique pointer tidak ada artinya. Mereka dapat dengan aman digantikan oleh referensi mentah atau pointer. Peringatan ini memberlakukan aturan Pedoman Inti C++ R.32.
Keterangan
Pemeriksaan pointer unik memiliki kriteria yang agak luas untuk mengidentifikasi penunjuk pintar. Aturan Pedoman Inti C++ R.31: Jika Anda memiliki penunjuk cerdas non-std, ikuti pola dasar dari std menjelaskan konsep pointer dan pointer bersama yang unik. Heuristiknya sederhana, tetapi dapat menyebabkan kejutan: jenis penunjuk cerdas adalah jenis apa pun yang mendefinisikan atau
operator->operator*. Jenis yang dapat disalin (penunjuk bersama) harus memiliki konstruktor salinan publik atau operator penugasan yang kelebihan beban yang berkaitan dengan parameter referensi non-Rvalue.Kode templat dapat menghasilkan peringatan yang bising. Perlu diingat bahwa templat dapat dibuat dengan berbagai parameter jenis dengan tingkat tidak langsung yang berbeda, termasuk referensi. Beberapa peringatan mungkin tidak jelas dan perbaikan mungkin memerlukan beberapa pengerjaan ulang templat (misalnya, penghapusan eksplisit tidak langsung referensi). Jika kode templat sengaja generik, peringatan dapat ditekan.
Nama analisis kode: NO_REF_TO_CONST_UNIQUE_PTR
Contoh
Referensi yang tidak perlu:
std::vector<std::unique_ptr<Tree>> roots = GetRoots();
std::for_each(
roots.begin(),
roots.end(),
[](const auto &root) { Rebalance(root.get()); }); // C26410