mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 01:18:52 +08:00

test/std/containers/Emplaceable.h test/std/containers/NotConstructible.h test/support/counting_predicates.hpp Replace unary_function/binary_function inheritance with typedefs. test/std/depr/depr.function.objects/depr.base/binary_function.pass.cpp test/std/depr/depr.function.objects/depr.base/unary_function.pass.cpp test/std/utilities/function.objects/func.require/binary_function.pass.cpp test/std/utilities/function.objects/func.require/unary_function.pass.cpp Mark these tests as requiring 98/03/11/14 because 17 removed unary_function/binary_function. test/std/thread/futures/futures.task/futures.task.members/ctor_func_alloc.pass.cpp test/std/thread/futures/futures.task/futures.task.nonmembers/uses_allocator.pass.cpp Mark these tests as requiring 11/14 because 17 removed packaged_task allocator support. test/std/utilities/function.objects/func.wrap/func.wrap.func/derive_from.pass.cpp This test doesn't need to be skipped in C++17 mode. Only the construction of std::function from an allocator needs to be skipped in C++17 mode. test/std/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp test/std/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp test/std/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp test/std/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp When testing these reference_wrapper features, unary_function inheritance is totally irrelevant. test/std/utilities/function.objects/refwrap/weak_result.pass.cpp Define and use my_unary_function/my_binary_function to test the weak result type machinery (which is still present in C++17, although deprecated). test/support/msvc_stdlib_force_include.hpp Now we can test C++17 strictly, without enabling removed features. Fixes D36503. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@311705 91177308-0d34-0410-b5e6-96231b3b80d8
58 lines
1.0 KiB
C++
58 lines
1.0 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
// Source Licenses. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// <functional>
|
|
|
|
// reference_wrapper
|
|
|
|
// reference_wrapper& operator=(const reference_wrapper<T>& x);
|
|
|
|
#include <functional>
|
|
#include <cassert>
|
|
|
|
class functor1
|
|
{
|
|
};
|
|
|
|
template <class T>
|
|
void
|
|
test(T& t)
|
|
{
|
|
std::reference_wrapper<T> r(t);
|
|
T t2 = t;
|
|
std::reference_wrapper<T> r2(t2);
|
|
r2 = r;
|
|
assert(&r2.get() == &t);
|
|
}
|
|
|
|
void f() {}
|
|
void g() {}
|
|
|
|
void
|
|
test_function()
|
|
{
|
|
std::reference_wrapper<void ()> r(f);
|
|
std::reference_wrapper<void ()> r2(g);
|
|
r2 = r;
|
|
assert(&r2.get() == &f);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
void (*fp)() = f;
|
|
test(fp);
|
|
test_function();
|
|
functor1 f1;
|
|
test(f1);
|
|
int i = 0;
|
|
test(i);
|
|
const int j = 0;
|
|
test(j);
|
|
}
|