[问题] 关于Rvalue与RVO

楼主: DeepFapping (凤凰)   2021-04-09 17:18:15
-
作者: nh60211as   2021-04-09 17:30:00
是不是还有Copy elision要考虑,我现在没办法测试
楼主: DeepFapping (凤凰)   2021-04-09 17:47:00
卧槽,刚查了一下,我没学过这东西,所以这是编译器优化的问题,设中断点也看不到的结果,不知遇到这种问题要如何学习?感谢。以试过,g++结果跟Visual C++一样了,但是仍然跟我想的不一样= ="
作者: Lipraxde (Lipraxde)   2021-04-09 18:08:00
先从怎么把所有相关的优化关掉开始学
作者: s4300026 (s4300026)   2021-04-09 18:29:00
左边的啊
作者: g0010726 (Kevin)   2021-04-10 06:30:00
楼楼上说的关掉优化在c++17后应该也没用了 有些rvo变成强制的 规则可以在cppreference翻一下抱歉 应该说 copy elision 比较准确
作者: Lipraxde (Lipraxde)   2021-04-10 13:53:00
是吗?我有点忘记以前试的时候是不是用 c++17 了。
作者: a27417332 (等号卡比)   2021-04-10 19:24:00
Copy Elision或RVO发生的时候根本连Move都不会有另外,右值引用通常是不会加const的,跟初衷矛盾第一个分隔线前的Deep Copy实际上也没复制到member,但你好像期待他会输出解构a?
作者: hunandy14 (Charlott.HonG)   2021-04-20 12:31:00
应该单纯只是两家的 复制省略 策略不同而已
作者: MartinJ40 (Martin J-40)   2021-04-20 15:21:00
优化条件不一样阿 vs开用release跑就变右边没有不一样阿function return会变成move所以不要在return call moveeffective modern c++有写 所以右边是正确的抱歉不是move 是copy elision编译器的实作是c会就地变成reference指向RVOrvo生命周期就变成c的生命周期推 g0010726: 楼楼上说的关掉优化在c++17后应该也没用跟优化无关

Links booklink

Contact Us: admin [ a t ] ucptt.com