The point is that you shouldn't be using rvalue ref parameters, std::forward, etc. in most of your code. Even std::move should be fairly rare.
Passing std types across API boundaries is a code smell.
"I have created an object and will pass its unique ownership to you." -> std::unique_ptr
"This routine needs a function that takes two ints and returns a float (without putting all my code into headers)." -> std::function<float(int, int)>.
Can you elaborate in what circumstance you should not pass std::types across API boundaries?
std::function is useful in some situations, but "without putting all my code into headers" is not a good argument.
The point is that you shouldn't be using rvalue ref parameters, std::forward, etc. in most of your code. Even std::move should be fairly rare.