【发布时间】:2012-02-14 20:37:26
【问题描述】:
我想知道 C++ 中move semantics 的起源是什么?特别是它是专门为这种语言发明的,还是在其他语言中有类似的东西?在后一种情况下,您能否提供一些参考资料。
【问题讨论】:
-
也许 C++11 中移动语义最令人信服的原因之一是 C++03 中缺乏移动语义,这清楚地体现在
auto_ptr的黑客实现中。很明显,有人想做,但由于缺乏语言支持而无法干净利落地完成。 -
移动语义自从人们开始编程就已经存在,但它都是手动的。移动语义作为一种语言特性的引入是关于如何将“可移动性”的概念编码到类型系统中,以便编译器可以决定何时“移动”事物,以及用户定义的类型如何声明对他们意味着什么被移动。 C++ 中的移动语义是 C++ 强调在类型系统中编码信息的产物。我不知道早期的语言与 C++ 一样强调类型系统。
-
@bames53:这可能是一个很好的答案。
-
@LightnessRacesinOrbit 我只是对自己对历史语言的了解不够自信。您在回答中链接的提案不承认以前的语言这一事实似乎是很好的证据,所以我投票支持您的回答:)
-
C++ 狂热者对他们钟爱的语言不断受到攻击感到恼火。超值复制,因此他们发明了语义来避免某些复制并将其称为“移动”。 :)
标签: c++ history move-semantics