微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在所有类值副本上“以防万一”使用 std::move 是否是代码异味?

如何解决在所有类值副本上“以防万一”使用 std::move 是否是代码异味?

我有一个获取“配置”结构的函数,目前它只是一个包含数组的结构

class ShmConfig {
public:
   std::int64_t shellShmSize[ShellId_Count];
};

我用 std::move 将它传递给函数中的另一个函数,因为我希望复制它的所有代码位置都与它可以有效复制的事实无关。

m_allocator.setup(std::move(config));

如果稍后可以更有效地移动它(可能是因为我添加std::string),它会自动变得更高效。但是clang-tidy建议不要这样做

std::move 变量 'config' 的普通可复制类型 'ShmConfig' 无效;删除std::move()

我不明白为什么这是可取的。用 move 包装它有什么缺点吗?是否只有在定期运行 clang-tidy 时才能遵循这些建议,以便在稍后添加数据成员时发现 std::move 有意义的情况?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。