В следующем коде:Как избежать перемещения при выполнении временного значения?
Widget makeWidget()
{
return Widget();
}
void foo(Widget widget)
{
...
}
foo(makeWidget());
объект Widget всегда будет построен на месте (внутри функции Foo), поэтому не строительство движение происходит (по крайней мере, со всеми компиляторами я пробовал). Каковы простые примеры передачи временного значения функции по значению таким образом, что перемещение конструкции будет иметь место (без явного перемещения, т. Е. С помощью std :: move)?
Мне любопытно, почему вы хотите избежать движения ellision? – Borgleader
Я просто хочу лучше понять C++. –
Вы ищете gcc-флаги '-fno-elide-constructors'? – Jarod42