Учитывая следующий код C ++:
struct foo {
// Some definition with copy constructor.
};
const foo &getData();
const foo &alt1(getData());
const foo &alt2 = getData();
Будет ли разумный компилятор производить другой код для alt1
и alt2
?Другими словами, alt1
вызовет запуск конструктора копирования, или компилятору позволено оптимизировать это и назначить ссылку напрямую?