The types of the functions will have to be the ref-qualified types that were introduced in C++11. You can't use the older non-ref-qualified types because the implicit object parameter of the non-ref-qualified non-const-qualified type has a peculiar behavior
that is different from a normal lvalue reference (it binds an rvalue even though it is not a reference to const).
The features you listed do not require passing the object parameter by value, except of course for the "pass-by-value" feature. This latter feature does not justify introducing a new function type.