具有返回值的就地功能

时间:2016-04-19 07:29:51

标签: c++ c++11 in-place

我有一个与此类似的行为的函数:

void process(const T& input,T& output){
    if(&input==&output){
        //Alter output directly
    }
    else{
        output=input; //Deep Copy
        //Alter output
    }
}

使用案例1:

T i;
//fill i
T o;
process(i,o);

用例2:

T io;
//fill io
process(io,io);

我想将此功能减速更改为更具可读性:

T process(const T& input){
   //What to do here?
}

使用案例1:

T i;
//fill i
auto o = process(i);

用例2:

T io;
//fill io
io=process(io);

问题:我如何模仿以前处理就地案件的方法?我该如何实施呢?当它是同一个对象时,我需要避免深度复制。

0 个答案:

没有答案