Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Параметр "parameter" — это ссылка на уникальный указатель констант, использовать
const T*илиconst T&вместо него (r.32)
Как правило, ссылки на константный уникальный указатель бессмысленны. Их можно безопасно заменить необработанной ссылкой или указателем. Это предупреждение применяет правило основных рекомендаций C++ R.32.
Замечания
Уникальные проверки указателя имеют довольно широкие критерии для определения смарт-указателей. Правило основных рекомендаций C++ R.31: если у вас есть не std smart pointers, следуйте базовому шаблону из std описывает уникальные указатели и общие понятия указателя. Эвристика проста, но может привести к сюрпризам: умный тип указателя является любым типом, который определяет либо
operator->.operator*Тип с поддержкой копирования (общий указатель) должен иметь либо открытый конструктор копирования, либо перегруженный оператор назначения, который имеет дело с параметром ссылки, отличного от Rvalue.Код шаблона может создавать шумные предупреждения. Помните, что шаблоны можно создать с различными параметрами типа с различными уровнями косвенного обращения, включая ссылки. Некоторые предупреждения могут не быть очевидными, и исправления могут потребовать некоторых переработок шаблонов (например, явное удаление ссылочного косвенного обращения). Если код шаблона намеренно универсальный, предупреждение можно отключить.
Имя анализа кода: NO_REF_TO_CONST_UNIQUE_PTR
Пример
Ненужная ссылка:
std::vector<std::unique_ptr<Tree>> roots = GetRoots();
std::for_each(
roots.begin(),
roots.end(),
[](const auto &root) { Rebalance(root.get()); }); // C26410