У меня есть функция, которая имеет похожее поведение этого:
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);
Вопрос: Как я могу подражать предыдущей методологии работы с делами на месте? Как мне это реализовать? Мне нужно избегать глубокого копирования, когда это один и тот же объект.
Задача ещё не решена.
Других решений пока нет …