Remove cv qualifiers from member pointers in the __member_pointer_traits test. This was causing a const-qualified bind result to malfunction. This was a recent regression due to the new use of __member_pointer_traits in restricting the __invokable and __invoke_of tests.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@181935 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e27e907403
commit
6287c65a03
@ -1653,7 +1653,7 @@ struct __member_pointer_traits_imp<_Rp _Class::*, false, true>
|
|||||||
|
|
||||||
template <class _MP>
|
template <class _MP>
|
||||||
struct __member_pointer_traits
|
struct __member_pointer_traits
|
||||||
: public __member_pointer_traits_imp<_MP,
|
: public __member_pointer_traits_imp<typename remove_cv<_MP>::type,
|
||||||
is_member_function_pointer<_MP>::value,
|
is_member_function_pointer<_MP>::value,
|
||||||
is_member_object_pointer<_MP>::value>
|
is_member_object_pointer<_MP>::value>
|
||||||
{
|
{
|
||||||
|
@ -260,6 +260,24 @@ test_void_2()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct TFENode
|
||||||
|
{
|
||||||
|
bool foo(unsigned long long) const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
test3()
|
||||||
|
{
|
||||||
|
using namespace std;
|
||||||
|
using namespace std::placeholders;
|
||||||
|
const auto f = bind(&TFENode::foo, _1, 0UL);
|
||||||
|
const TFENode n = TFENode{};
|
||||||
|
bool b = f(n);
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
test_void_1();
|
test_void_1();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user