https://releases.llvm.org/12.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/performance-no-automatic-move.html这里举出的例子:
StatusOr<std::vector<int>> Cool() {
std::vector<int> obj = ...;
return obj; // calls StatusOr::StatusOr(std::vector<int>&&)
}
StatusOr<std::vector<int>> NotCool() {
const std::vector<int> obj = ...;
return obj; // calls `StatusOr::StatusOr(const std::vector<int>&)`
}
事实上,声明了const,只会影响语法层面(比如类型必须要支持copy ctor,而不能仅仅是 move ctor),
但性能是完全没影响的,因为函数返回既不调用copy ctor,也不会调用move ctor
==================
感觉这是一个无效规则,就和早期的语法 const A &a = SomeReturnA();一样,现在都改成
A a = SomeReturnA();没有必要用const 引用了
--
FROM 120.244.162.*