Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nie przypisuj ani
gsl::spannie przypisujstd::string_viewodwołania. Są tanie do konstruowania i nie są właścicielami danych bazowych. (gsl.view)
Odwołanie do gsl::span lub std::string_view może być wskazaniem problemu z okresem istnienia.
podstawowe wytyczne dotyczące języka C++
Ta reguła przechwytuje subtelne problemy z okresem istnienia, które mogą wystąpić w kodzie migrowanym ze standardowych kontenerów do nowych typów zakresu i wyświetlania. Takie typy można traktować jako "odwołania do". Użycie odwołania do zakresu lub widoku powoduje utworzenie dodatkowej warstwy pośredniej. Takie pośredniczenie jest często niepotrzebne i może być mylące dla opiekunów. Zakresy są tanie do kopiowania i mogą być zwracane przez wartość z wywołań funkcji. Oczywiście takie wyniki wywołań nigdy nie powinny być przywoływały.
Uwagi
- Reguła wykrywa odwołania do biblioteki gsl::span<>, gsl::basic_string_span<> i std::basic_string_view<> (w tym aliasy do wystąpień).
- Obecnie ostrzeżenia są emitowane tylko w deklaracjach i instrukcjach return. Ta reguła może zostać rozszerzona w przyszłości w celu flagowania parametrów funkcji.
- Implementacja tej reguły jest uproszczona, nie próbuje śledzić rzeczywistych okresów istnienia. Używanie odwołań może nadal mieć sens w niektórych scenariuszach. W takich przypadkach wyniki fałszywie dodatnie można bezpiecznie pominąć.
Nazwa analizy kodu: NO_SPAN_REF
Przykład
Odwołanie do tymczasowego:
// Old API - uses string reference to avoid data copy.
const std::string& get_working_directory() noexcept;
// New API - after migration to C++17 it uses string view.
std::string_view get_working_directory() noexcept;
// ...
// Client code which places an explicit reference in a declaration with auto specifier.
const auto &wd = get_working_directory(); // C26445 after API update.