Re: [问题] unique_ptr与move、type conversion、return statement

楼主: Caesar08 (Caesar)   2016-08-13 23:27:58
※ 引述《james732 (好人超)》之铭言:
: 标题: [问题] unique_ptr与move
: 时间: Wed Aug 10 23:25:24 2016
:
: 问题(Question):
: https://www.chromium.org/rvalue-references
:
: 在上面这个网页里,看到这段叙述
:
: However, if the types of the variable and the return type do not match
: exactly, then you will have to use std::move() in order to convert without
: creating an extra temporary.
:
: std::unique_ptr<MyType> MakeMyType()
: {
: std::unique_ptr<ChildClassOfMyType> ptr;
: // This call to std::move() is needed to convert from a pointer-to-the
: // child class to a pointer-to-the parent.
: return std::move(ptr);
: }
:
: 我看不懂的是…为什么这样写可以减少extra temporary呢?
: 如果不这么写的话又会造成什么问题?
: (想知道这个写法的反例?)
:
:
作者: firose (guest也是也是也是也是也)   2016-08-13 23:55:00
由此看来 extra object 应该是 (2) implicit 建构的物件关键点还是在 c++14 把它先视为 rvalue @@说错了 @@ 应是(1)产生物件 然后再(2)move回去如果加 move 就直接 2 回去
作者: Sidney0503 (Sidney0503)   2016-08-14 09:48:00
自己发文自己回 教你啦 开分身回文比较不孤单
作者: james732 (好人超)   2016-08-14 15:20:00
推,好像有点懂了
作者: bluesoul (忙死你老爸)   2016-08-15 23:11:00
move可能会破坏RVO
作者: g0010726 (Kevin)   2016-08-16 00:05:00
你说的好像是这条standard, 我不是很确定http://goo.gl/kTSQDp

Links booklink

Contact Us: admin [ a t ] ucptt.com