VS2017怎么触发NRV优化?

qq_40162781 2020-04-22 02:41:08
VS2017怎么触发NRV优化?
...全文
319 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40162781 2020-04-23
  • 打赏
  • 举报
回复
引用 4 楼 真相重于对错 的回复:
另外,拷贝构造函数的存在并不是为了什么效率,而是正确性,以避免需要深拷贝的地方施行了浅拷贝。
对,所以我问的是不是已经不支持这样触发了,或是改变了触发方式
真相重于对错 2020-04-23
  • 打赏
  • 举报
回复
另外,拷贝构造函数的存在并不是为了什么效率,而是正确性,以避免需要深拷贝的地方施行了浅拷贝。
真相重于对错 2020-04-23
  • 打赏
  • 举报
回复
C艹标准中对你所说的优化明确规定非强制。所以编译器怎么都是对的。
sdghchj 2020-04-23
  • 打赏
  • 举报
回复
release编译
qq_40162781 2020-04-22
  • 打赏
  • 举报
回复
引用 1 楼 真相重于对错 的回复:
我的意思是使用拷贝构造函数触发的NRV优化 但是我使用vs2017并没进行优化 下面是我执行的代码,还是走了拷贝构造函数 所以性能比不实现拷贝构造函数的bitwise copy更差了 class test { friend test foo(double); public: test(const test &rhs) { cout << "copy constructor" << endl; memcpy(this, &rhs, sizeof(test)); } test() { memset(array, 0, 100 * sizeof(double)); } private: double array[100]; }; test foo(double val) { test local; local.array[0] = val; local.array[99] = val; return local; } int main() { for (int cnt = 0; cnt < 10000000; cnt++) { test t = foo(double(cnt)); } return 0; } vs2005 release好像可以触发NRV优化,现在版本是不是不支持了?
真相重于对错 2020-04-22
  • 打赏
  • 举报
回复
以一个临时变量构造一个对象,自动触发啊? 你是什么意思

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧