Passing rvalues through std::bind
The reason this fails is because when you specify foo<Movable>, the function you’re binding to is: void foo(Movable&&) // *must* be an rvalue { } However, the value passed by std::bind will not be an rvalue, but an lvalue (stored as a member somewhere in the resulting bind functor). That, is the generated functor is … Read more