Ostrzeżenie C26410
Parametr "parameter" jest odwołaniem do const unikatowego wskaźnika, użyj
const T*
lubconst T&
zamiast niego (r.32)
Ogólnie rzecz biorąc, odwołania do const unikatowy wskaźnik są bez znaczenia. Można je bezpiecznie zastąpić nieprzetworzonym odwołaniem lub wskaźnikiem. To ostrzeżenie wymusza regułę podstawowych wytycznych języka C++ R.32.
Uwagi
Unikatowe kontrole wskaźników mają dość szerokie kryteria identyfikowania inteligentnych wskaźników. Podstawowa reguła wytycznych języka C++ R.31: jeśli masz inteligentne wskaźniki inne niż std, postępuj zgodnie ze wzorcem podstawowym ze std opisuje unikatowe koncepcje wskaźnika i wskaźnika współużytkowanego. Heurystyka jest prosta, ale może prowadzić do niespodzianek: inteligentny typ wskaźnika to dowolny typ, który definiuje wartość
operator->
luboperator*
. Typ z obsługą kopiowania (wskaźnik współużytkowany) musi mieć konstruktor kopii publicznej lub przeciążony operator przypisania, który zajmuje się parametrem referencyjnym innym niż Rvalue.Kod szablonu może generować hałaśliwe ostrzeżenia. Pamiętaj, że szablony mogą być tworzone przy użyciu różnych parametrów typu z różnymi poziomami pośrednimi, w tym odwołaniami. Niektóre ostrzeżenia mogą nie być oczywiste, a poprawki mogą wymagać pewnych przeróbek szablonów (na przykład jawnego usunięcia odwołania pośredniego). Jeśli kod szablonu jest celowo ogólny, ostrzeżenie można pominąć.
Nazwa analizy kodu: NO_REF_TO_CONST_UNIQUE_PTR
Przykład
Niepotrzebne odwołanie:
std::vector<std::unique_ptr<Tree>> roots = GetRoots();
std::for_each(
roots.begin(),
roots.end(),
[](const auto &root) { Rebalance(root.get()); }); // C26410
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla