Implement the resolution of LWG2993. Replace a deleted constructor with a constructor that SFINAEs away in appropriate circumstances.
Also, now that the constructor is templated, we must have an explicit deduction guide to make CTAD work.
Some tests have been merged in from D40259. I discovered the existence of D40259 only after finishing the <__functional_base> patch itself, though; my impression is that my approach looks simpler than what @K-ballo did in that PR.
These two new tests fail before this patch, in C++11-through-C++20 modes:
std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor.pass.cpp
std/utilities/function.objects/refwrap/refwrap.const/type_conv_ctor2.pass.cpp
The diffs in type_ctor.pass.cpp and copy_assign.pass.cpp are due to D40259, but have always been green (this patch doesn't affect their validity). I have no objection to removing those diffs, if requested, but I assumed they were in D40259 for some reason.
Is there a difference between your approach, i.e. putting this in the ctor's body, and putting it into the initializer list?