Since `__member_pointer_traits<MemFunPtr>::_ClassType` preserves the ref qualifier of `MemFunPtr`, the following `enable_if` (used in `__invoke`)
class = typename enable_if<
is_member_function_pointer<typename remove_reference<_Fp>::type>::value
&& is_base_of<
typename __member_pointer_traits<typename
remove_reference<_Fp>::type>::_ClassType
, typename remove_reference<_A0>::type
>::value
>::type
always fails when `_Fp` has a ref qualifier.
This behavior of `__invoke` is incorrect w.r.t. [func.require] p1 bullet 1.
A patch attached to fix this issue.
It also adds a test case.
(This patch is the same one as in PR17606
http://llvm.org/bugs/show_bug.cgi?id=17606 .)
Regards,
Michel
fix_invoke.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
