知识卡片

别迷信移动

普通读书笔记卡 · 1426

内容

移动未必存在或便宜:某些类型仍复制,内嵌存储可能需要逐元素搬迁,容器也可能因移动会抛异常而改用复制。未知泛型类型应按保守成本估计;已知类型则检查具体移动实现和调用路径,而不是仅凭出现 move 就宣称优化。

参考来源

- 位置:《Effective Modern C++》第5章《右值引用,移动语义,完美转发》,条款二十九:假定移动操作不存在,成本高,未被使用(源文件:_epub-src/EPUB/text/ch006.xhtml) - 结论依据:原文把移动缺失、成本高和未使用分开讨论,且允许已知类型根据具体事实判断。 - 原始内容:假定移动操作不存在,成本高,未被使用。 在已知的类型或者支持移动语义的代码中,就不需要上面的假设。