Implement LWG issue 2219 - support reference_wrapper in INVOKE
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@266590 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -172,6 +172,32 @@ void bullet_one_two_tests() {
|
||||
test_b12<int volatile&&(NonCopyable&&) volatile &&, int volatile&&>(std::move(cl));
|
||||
test_b12<int const volatile&&(NonCopyable&&) const volatile &&, int const volatile&&>(std::move(cl));
|
||||
}
|
||||
{
|
||||
TestClass cl_obj(42);
|
||||
std::reference_wrapper<TestClass> cl(cl_obj);
|
||||
test_b12<int&(NonCopyable&&) &, int&>(cl);
|
||||
test_b12<int const&(NonCopyable&&) const &, int const&>(cl);
|
||||
test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl);
|
||||
test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl);
|
||||
|
||||
test_b12<int&(NonCopyable&&) &, int&>(std::move(cl));
|
||||
test_b12<int const&(NonCopyable&&) const &, int const&>(std::move(cl));
|
||||
test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(std::move(cl));
|
||||
test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(std::move(cl));
|
||||
}
|
||||
{
|
||||
DerivedFromTestClass cl_obj(42);
|
||||
std::reference_wrapper<DerivedFromTestClass> cl(cl_obj);
|
||||
test_b12<int&(NonCopyable&&) &, int&>(cl);
|
||||
test_b12<int const&(NonCopyable&&) const &, int const&>(cl);
|
||||
test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl);
|
||||
test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl);
|
||||
|
||||
test_b12<int&(NonCopyable&&) &, int&>(std::move(cl));
|
||||
test_b12<int const&(NonCopyable&&) const &, int const&>(std::move(cl));
|
||||
test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(std::move(cl));
|
||||
test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(std::move(cl));
|
||||
}
|
||||
{
|
||||
TestClass cl_obj(42);
|
||||
TestClass *cl = &cl_obj;
|
||||
@@ -217,6 +243,22 @@ void bullet_three_four_tests() {
|
||||
test_b34<int volatile&&>(static_cast<Fn volatile&&>(cl));
|
||||
test_b34<int const volatile&&>(static_cast<Fn const volatile&&>(cl));
|
||||
}
|
||||
{
|
||||
typedef TestClass Fn;
|
||||
Fn cl(42);
|
||||
test_b34<int&>(std::reference_wrapper<Fn>(cl));
|
||||
test_b34<int const&>(std::reference_wrapper<Fn const>(cl));
|
||||
test_b34<int volatile&>(std::reference_wrapper<Fn volatile>(cl));
|
||||
test_b34<int const volatile&>(std::reference_wrapper<Fn const volatile>(cl));
|
||||
}
|
||||
{
|
||||
typedef DerivedFromTestClass Fn;
|
||||
Fn cl(42);
|
||||
test_b34<int&>(std::reference_wrapper<Fn>(cl));
|
||||
test_b34<int const&>(std::reference_wrapper<Fn const>(cl));
|
||||
test_b34<int volatile&>(std::reference_wrapper<Fn volatile>(cl));
|
||||
test_b34<int const volatile&>(std::reference_wrapper<Fn const volatile>(cl));
|
||||
}
|
||||
{
|
||||
typedef TestClass Fn;
|
||||
Fn cl_obj(42);
|
||||
|
||||
Reference in New Issue
Block a user