Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A "paraméter" paraméter az egyedi mutató konstansára, használatára
const T*vagyconst T&helyette (r.32) való hivatkozás.
A const egyedi mutatóra mutató hivatkozások általában értelmetlenek. Biztonságosan helyettesíthetők nyers hivatkozással vagy mutatóval. Ez a figyelmeztetés az R.32 C++ alapvető irányelvszabályt kényszeríti ki.
Megjegyzések
Az egyedi mutató-ellenőrzések meglehetősen széles feltételeknek megfelelnek az intelligens mutatók azonosításához. A C++ alapvető irányelvek R.31 szabálya: Ha nem std intelligens mutatókkal rendelkezik, kövesse az std alapmintáját, amely az egyedi mutatót és a megosztott mutató fogalmait ismerteti. A heurisztikus egyszerű, de meglepetésekhez vezethet: az intelligens mutatótípus bármilyen típus, amely meghatározza vagy
operator->operator*. A másolásra képes típusnak (megosztott mutatónak) nyilvános másolási konstruktorral vagy túlterhelt hozzárendelési operátorral kell rendelkeznie, amely nem Rvalue referenciaparaméterrel foglalkozik.A sablonkód zajos figyelmeztetéseket okozhat. Ne feledje, hogy a sablonok különböző típusú paraméterekkel hozhatók létre különböző indirektségi szintekkel, beleértve a hivatkozásokat is. Előfordulhat, hogy egyes figyelmeztetések nem egyértelműek, és a javítások szükségessé tehetik a sablonok újradolgozását (például a hivatkozás közvetett eltávolítását). Ha a sablonkód szándékosan általános, a figyelmeztetés mellőzhető.
Kódelemzés neve: NO_REF_TO_CONST_UNIQUE_PTR.
példa
Szükségtelen hivatkozás:
std::vector<std::unique_ptr<Tree>> roots = GetRoots();
std::for_each(
roots.begin(),
roots.end(),
[](const auto &root) { Rebalance(root.get()); }); // C26410