Оптимизировать инициализацию объекта

Есть функция, которая принимает константную ссылку на объект

void test(const CMyObject & obj);

И есть две функции: одна возвращает существующий объект

const CMyObject & getExists();

а вторая конструирует новый объект

CMyObject createNew();

Вопрос: можно ли как-то изменить такой код

if (objExists)
  test(getExists());
else
  test(createNew());

чтобы вызов функции test() был только один, а содержимое объекта не копировалось и не создавался пустой объект?

CMyObject obj;  // создали пустой объект
if (objExists)
  obj = getExists(); // скопировали содержимое
else
  obj = createNew(); // создали еще один объект и скопировали содержимое
test(obj);

Описание функции test() я менять не могу


Ответы (1 шт):

Автор решения: Harry

Ну, если сохранять создаваемый объект не нужно, он чисто временный - затычка для test(), то, пожалуй, можно

test(objExists?getExists():(const CMyObject&)createNew());
→ Ссылка