【发布时间】:2015-07-06 23:29:45
【问题描述】:
如果我将移动构造函数(或移动赋值运算符)添加到我的库中,我会破坏二进制兼容性吗?该添加会以任何方式破坏用户的代码吗?
class Foo {
public:
Foo();
Foo(Foo const&);
Foo& operator=(Foo const&);
// new methods:
Foo(Foo&&);
Foo& operator=(Foo&&);
};
【问题讨论】:
-
如果是的话,它会首先进入标准吗?
-
这不是特定于编译器的吗?没有提到编译器。
-
我们的库 (jsoncpp) 支持许多编译器。我很确定我们在二进制兼容性方面没问题,但也许存在移动语义的极端情况,它可能会以其他方式破坏现有的源代码。
标签: c++ c++11 move binary-compatibility