警告 C26410
参数“parameter”是对常量唯一指针的引用,请改用
const T*
或const T&
(r.32)
通常,对 const 唯一指针的引用毫无意义。 可以安全地将其替换为原始引用或指针。 此警告强制实施 C++ Core Guidelines 规则 R.32。
备注
唯一指针检查用以标识智能指针的条件相当宽泛。 C++ Core Guidelines 规则 R.31:如果你有非 std 智能指针,请按照 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