> You want to discard literally every use case of this feature *except*
> deduplication of `const` or other qualified parameters. You want a
> feature focused specifically on just that. It's still going to have to
> use templates to generate the various overloads, but you want it to
> only work in that use case. So we give up recursive lambdas, better
> CRTP, by-value members, SFINAE-friendly callables.
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.