When using std::bind to bind a member function, the first argument is the objects this pointer. However it works passing the object both as a point
std::bind
this
There is a difference. As rytis put forward, passing by value doesn't see the changes made to my_foo. For example, in case my_foo is a class, passing by value doesn't see a change made to a member data of my_foo.