C++ 禁用";移动构造函数可用时删除复制构造函数";叮当声
在这里查看StackOverflow,我发现在Clang++上使用C++11标准时,如果您定义了一个移动构造函数到类中,隐式构造函数生成将被禁用,即复制构造函数将被“显式删除” 有没有办法禁用此行为 还有,这种行为是否标准化?因为我在GCC中没有相同的行为 有没有办法禁用此行为 不,但你可以随时:C++ 禁用";移动构造函数可用时删除复制构造函数";叮当声,c++,c++11,clang,clang++,C++,C++11,Clang,Clang++,在这里查看StackOverflow,我发现在Clang++上使用C++11标准时,如果您定义了一个移动构造函数到类中,隐式构造函数生成将被禁用,即复制构造函数将被“显式删除” 有没有办法禁用此行为 还有,这种行为是否标准化?因为我在GCC中没有相同的行为 有没有办法禁用此行为 不,但你可以随时: A(const A&) = default; 尽管我不确定clang目前是否完全实现了默认的复制构造函数 还有,这种行为是否标准化 对。[class.copy]/p7: 如果类定义没有显式声
A(const A&) = default;
尽管我不确定clang目前是否完全实现了默认的复制构造函数
还有,这种行为是否标准化
对。[class.copy]/p7:
如果类定义没有显式声明副本
构造函数,则隐式声明一个。如果类定义
声明移动构造函数或移动赋值运算符
隐式声明的复制构造函数定义为已删除
因为我在GCC中没有相同的行为
哪个版本?我猜最新的gcc版本与clang有着相同的行为。但是我没有它可以进行实验。 Clang对默认函数的支持至少足够好,以至于他们声称支持他们的C++状态页面。通常你们不会列出还有大量工作要做的特性。如果move构造函数被定义为deleted,那么隐式声明的copy构造函数也会被定义为deleted吗?