Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 StackOverflow 上查看这里我发现在 Clang++ 上使用 C++11 标准时,如果您已为您的类定义了移动构造函数,则隐式构造函数生成被禁用,即复制构造函数被“显式删除”。
有什么办法可以禁用这种行为?
另外,这种行为是否标准化?因为我在 GCC 中没有相同的行为。
不,但您始终可以:
A(const A&) = default;
虽然我不确定 clang 当前是否完全实现了默认的复制构造函数。
另外,这种行为是否标准化?
是的。[class.copy]/p7:
如果类定义没有显式声明复制构造函数,则隐式声明。如果类定义声明了移动构造函数或移动赋值运算符,则隐式声明的复制构造函数定义为已删除;...
...
因为我在 GCC 中没有相同的行为。
哪个版本?我猜到最新的 gcc 版本具有与 clang 相同的行为。但我没有它可供试验。