c++: fix __is_invocable for std::reference_wrapper [PR121055]
Our implementation of the INVOKE spec ([func.require]) was incorrectly
treating reference_wrapper<T>::get() as returning T instead of T&, which
notably makes a difference when invoking a ref-qualified memfn pointer.
PR c++/121055
gcc/cp/ChangeLog:
* method.cc (build_invoke): Correct reference_wrapper handling.
gcc/testsuite/ChangeLog:
* g++.dg/ext/is_invocable5.C: New test.
Reviewed-by: Jason Merrill <jason@redhat.com>
(cherry picked from commit
04a176a1d84a84c630cfd4d232736c12b105957a)