C++ 禁用";移动构造函数可用时删除复制构造函数";叮当声

C++ 禁用";移动构造函数可用时删除复制构造函数";叮当声,c++,c++11,clang,clang++,C++,C++11,Clang,Clang++,在这里查看StackOverflow,我发现在Clang++上使用C++11标准时,如果您定义了一个移动构造函数到类中,隐式构造函数生成将被禁用,即复制构造函数将被“显式删除” 有没有办法禁用此行为 还有,这种行为是否标准化?因为我在GCC中没有相同的行为 有没有办法禁用此行为 不,但你可以随时: A(const A&) = default; 尽管我不确定clang目前是否完全实现了默认的复制构造函数 还有,这种行为是否标准化 对。[class.copy]/p7: 如果类定义没有显式声

在这里查看StackOverflow,我发现在Clang++上使用C++11标准时,如果您定义了一个移动构造函数到类中,隐式构造函数生成将被禁用,即复制构造函数将被“显式删除”

有没有办法禁用此行为

还有,这种行为是否标准化?因为我在GCC中没有相同的行为

有没有办法禁用此行为

不,但你可以随时:

A(const A&) = default;
尽管我不确定clang目前是否完全实现了默认的复制构造函数

还有,这种行为是否标准化

对。[class.copy]/p7:

如果类定义没有显式声明副本 构造函数,则隐式声明一个。如果类定义 声明移动构造函数或移动赋值运算符 隐式声明的复制构造函数定义为已删除

因为我在GCC中没有相同的行为


哪个版本?我猜最新的gcc版本与clang有着相同的行为。但是我没有它可以进行实验。

Clang对默认函数的支持至少足够好,以至于他们声称支持他们的C++状态页面。通常你们不会列出还有大量工作要做的特性。如果move构造函数被定义为deleted,那么隐式声明的copy构造函数也会被定义为deleted吗?