Рассмотрим следующий код. Что происходит при вызове doStuff(), но возвращаемое значение не используется? Создан ли SomeClass? Разумеется, само создание может иметь важные побочные эффекты, но поэтому они могут копировать-конструкторы, и они по-прежнему не указаны в RVO/copy-elision.
SomeClass doStuff(){
//...do stuff
return SomeClass( /**/);
}
SomeClass some_object = doStuff();
doStuff(); //What happens here?
(Edit: проверено это с помощью GCC -O3. Объект построен, а затем сразу же разрушен)