首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保在移动构造函数存在时从未调用复制构造函数

确保在移动构造函数存在时从未调用复制构造函数
EN

Stack Overflow用户
提问于 2012-10-19 11:58:29
回答 1查看 353关注 0票数 5

当设计一个可以移动但不能复制的类时,将复制构造函数声明为私有是很自然的。当只有可移动和琐碎的可复制对象作为实例成员时,允许编译器隐式地生成移动构造函数是有意义的。

但是,当同时支持VS11和G++4.7时,我发现了一个不兼容的地方:

  • VS11需要显式定义的移动构造函数
  • G++需要显式移动构造函数才能使匹配公共副本构造函数或no以外关键字
  • VS11不支持‘t以外关键字。

正如你所看到的,这让我陷入了困境。我的课不能抄袭。我必须同时支持VS11和MinGW / GCC。我需要我的课是可以移动的。

我有误解什么吗,还是有办法解决这个小问题?如果生成对复制构造函数的调用,我能否使编译失败?这个问题有什么更好的解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 13:02:19

如果将其添加到源文件中

代码语言:javascript
复制
#ifdef _MSC_VER
#define noexcept
#endif

您可以将其定义为GCC上的noexcept,但VC++将忽略noexcept

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12973815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档