【发布时间】:2012-10-10 01:01:04
【问题描述】:
在设计一个可以移动但不能复制的类时,很自然地会将复制构造函数声明为私有。当只有可移动和可简单复制的对象作为实例成员时,允许编译器隐式生成移动构造函数是有意义的。
但是,当同时支持 VS11 和 G++4.7 时,我发现不兼容:
- VS11 需要明确定义的移动构造函数
- G++ 要求显式移动构造函数具有匹配的公共复制构造函数或 noexcept 关键字。
- VS11 不支持 noexcept 关键字。
如您所见,这让我有点吃不消。我的班级不得被复制。我必须支持 VS11 和 MinGW / GCC。我需要我的班级可以移动。
是我误解了什么,还是有办法解决这个小问题?如果生成了对复制构造函数的调用,我可以使编译失败吗?有什么更好的办法解决这个问题?
【问题讨论】:
标签: c++ c++11 copy-constructor move-semantics