В следующем коде:
Widget makeWidget()
{
return Widget();
}
void foo(Widget widget)
{
...
}
foo(makeWidget());
объект Widget всегда будет создаваться на месте (внутри функции foo), поэтому не происходит построения перемещения (по крайней мере, со всеми компиляторами, которые я пробовал). Каковы простые примеры передачи временного объекта в функцию по значению таким образом, чтобы построение перемещения действительно имело место (без явного перемещения, т.е. с использованием std::move)?
-fno-elide-constructors
? - person Jarod42   schedule 08.04.2015