My code looks like
// definition of class 'Foo'
class Foo
{
  private:
    vector<Bar> v;
  public:
    ...
    Foo(Foo&&) = default; // move constructor
};
// definition of function 'f'
Foo f()
{
  Foo x;
  DoStuff(x);
  return x;
}
// Somewhere in main
result = f(); // I am aiming to move 'x' to 'result'
When I try to compile I receive
EAL_1.6.cpp:314:13: error: object of type 'Foo' cannot be assigned because its copy assignment operator is implicitly deleted
        x = f(x);
            ^
EAL_1.6.cpp:232:5: note: copy assignment operator is implicitly deleted because 'Foo' has a user-declared move constructor
    Foo(Foo&&) = default;
    ^
I was tempted to try
return move(x);
but it does not appear to be a clever solution according to this post. I understand that the cop constructor is deleted when defining a move constructor (as explained in this post) but I don't understand how to tell the compiler that I would like 'x' to be moved to 'result'.
 
     
    