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

Attachment: fix_invoke.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to