предположим, что функция возвращает объект класса A по значению.
A f();
Предположим, у нас есть позднее назначение / копирование c’tor:
a = f(); //a is of type A - assignment
A aa = f(); // copy c'tor
d’or возвращенного объекта вызывается после присваивания / инициализации?
Если возвращаемый объект будет уничтожен до инициализации копирования, вы должны скопировать в aa
разрушенный объект. Это что-то странное.
Оптимизация возвращаемого значения также может иметь место, поэтому нет необходимости копировать возвращаемый объект и уничтожать его.