Uyarı C26410
'parameter' parametresi, sabit benzersiz işaretçiye başvurudur, veya
const T&
yerine (const T*
r.32)
Genellikle, sabit benzersiz işaretçi başvuruları anlamsızdır. Bunlar güvenli bir şekilde bir ham başvuru veya işaretçi ile değiştirilebilir. Bu uyarı, C++ Çekirdek Yönergeleri kuralı R.32'ye zorlar.
Açıklamalar
Benzersiz işaretçi denetimleri, akıllı işaretçileri tanımlamak için oldukça geniş ölçütlere sahiptir. C++ Çekirdek Yönergeleri kuralı R.31: Std olmayan akıllı işaretçileriniz varsa, benzersiz işaretçi ve paylaşılan işaretçi kavramlarını açıklayan std'den temel deseni izleyin. Buluşsal basit bir işlemdir ancak sürprizlere yol açabilir: Akıllı işaretçi türü, veya
operator*
'yi tanımlayanoperator->
herhangi bir türdür. Kopyalanabilen bir türün (paylaşılan işaretçi), Rvalue olmayan bir başvuru parametresiyle ilgilenen bir genel kopya oluşturucusna veya aşırı yüklenmiş atama işlecine sahip olması gerekir.Şablon kodu gürültülü uyarılar üretebilir. Şablonların, başvurular da dahil olmak üzere farklı dolaylı düzeylere sahip çeşitli tür parametreleriyle örnekleneebileceğini unutmayın. Bazı uyarılar belirgin olmayabilir ve düzeltmeler bazı şablonların yeniden çalışmasını gerektirebilir (örneğin, başvuru dolaylı işleminin açıkça kaldırılması). Şablon kodu kasıtlı olarak genelse uyarı gizlenebilir.
Kod analizi adı: NO_REF_TO_CONST_UNIQUE_PTR
Örnek
Gereksiz başvuru:
std::vector<std::unique_ptr<Tree>> roots = GetRoots();
std::for_each(
roots.begin(),
roots.end(),
[](const auto &root) { Rebalance(root.get()); }); // C26410