summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities/function.objects
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/utilities/function.objects')
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp37
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp37
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp37
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp37
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp37
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp37
-rw-r--r--libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp61
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp35
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp53
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp286
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp266
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp59
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp51
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp32
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp41
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp36
-rw-r--r--libcxx/test/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp12
-rw-r--r--libcxx/test/utilities/function.objects/bind/nothing_to_do.pass.cpp12
-rw-r--r--libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp57
-rw-r--r--libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp46
-rw-r--r--libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp57
-rw-r--r--libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp57
-rw-r--r--libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp51
-rw-r--r--libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp39
-rw-r--r--libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp43
-rw-r--r--libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp43
-rw-r--r--libcxx/test/utilities/function.objects/comparisons/less.pass.cpp43
-rw-r--r--libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp43
-rw-r--r--libcxx/test/utilities/function.objects/comparisons/not_equal_to.pass.cpp41
-rw-r--r--libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp61
-rw-r--r--libcxx/test/utilities/function.objects/func.def/nothing_to_do.pass.cpp12
-rw-r--r--libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp42
-rw-r--r--libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp43
-rw-r--r--libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp72
-rw-r--r--libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp78
-rw-r--r--libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp78
-rw-r--r--libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp78
-rw-r--r--libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp23
-rw-r--r--libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp50
-rw-r--r--libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp22
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp26
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp20
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp137
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp29
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp100
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp107
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp29
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp25
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp90
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp115
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp25
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp83
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp133
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp125
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp23
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp24
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp23
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp88
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp46
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp335
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp58
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp67
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp60
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp136
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp41
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp89
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp61
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp49
-rw-r--r--libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp12
-rw-r--r--libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp48
-rw-r--r--libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp39
-rw-r--r--libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp47
-rw-r--r--libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp46
-rw-r--r--libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp27
-rw-r--r--libcxx/test/utilities/function.objects/negators/not1.pass.cpp22
-rw-r--r--libcxx/test/utilities/function.objects/negators/not2.pass.cpp24
-rw-r--r--libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp25
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp80
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp46
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp58
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp46
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp22
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp45
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp24
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp25
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp27
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp24
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp43
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp52
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp329
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp76
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp68
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/type.pass.cpp37
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/type_properties.pass.cpp58
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp78
-rw-r--r--libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp82
-rw-r--r--libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp24
-rw-r--r--libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp63
-rw-r--r--libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp68
-rw-r--r--libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp58
-rw-r--r--libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp42
-rw-r--r--libcxx/test/utilities/function.objects/version.pass.cpp20
102 files changed, 0 insertions, 6174 deletions
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp
deleted file mode 100644
index 74298f23b7c..00000000000
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/divides.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// divides
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::divides<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(36, 4) == 9);
-#if _LIBCPP_STD_VER > 11
- typedef std::divides<> F2;
- const F2 f2 = F2();
- assert(f2(36, 4) == 9);
- assert(f2(36.0, 4) == 9);
- assert(f2(18, 4.0) == 4.5); // exact in binary
-
- constexpr int foo = std::divides<int> () (3, 2);
- static_assert ( foo == 1, "" );
-
- constexpr int bar = std::divides<> () (3.0, 2);
- static_assert ( bar == 1, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp
deleted file mode 100644
index 9a496a8066c..00000000000
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/minus.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// minus
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::minus<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(3, 2) == 1);
-#if _LIBCPP_STD_VER > 11
- typedef std::minus<> F2;
- const F2 f2 = F2();
- assert(f2(3,2) == 1);
- assert(f2(3.0, 2) == 1);
- assert(f2(3, 2.5) == 0.5);
-
- constexpr int foo = std::minus<int> () (3, 2);
- static_assert ( foo == 1, "" );
-
- constexpr int bar = std::minus<> () (3.0, 2);
- static_assert ( bar == 1, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp
deleted file mode 100644
index 3c178819231..00000000000
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/modulus.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// modulus
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::modulus<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(36, 8) == 4);
-#if _LIBCPP_STD_VER > 11
- typedef std::modulus<> F2;
- const F2 f2 = F2();
- assert(f2(36, 8) == 4);
- assert(f2(36L, 8) == 4);
- assert(f2(36, 8L) == 4);
-
- constexpr int foo = std::modulus<int> () (3, 2);
- static_assert ( foo == 1, "" );
-
- constexpr int bar = std::modulus<> () (3L, 2);
- static_assert ( bar == 1, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp
deleted file mode 100644
index 97287e6c8da..00000000000
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/multiplies.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// multiplies
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::multiplies<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(3, 2) == 6);
-#if _LIBCPP_STD_VER > 11
- typedef std::multiplies<> F2;
- const F2 f2 = F2();
- assert(f2(3,2) == 6);
- assert(f2(3.0, 2) == 6);
- assert(f2(3, 2.5) == 7.5); // exact in binary
-
- constexpr int foo = std::multiplies<int> () (3, 2);
- static_assert ( foo == 6, "" );
-
- constexpr int bar = std::multiplies<> () (3.0, 2);
- static_assert ( bar == 6, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp
deleted file mode 100644
index 3ffb7051bfd..00000000000
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/negate.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// negate
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::negate<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::unary_function<int, int>, F>::value), "");
- assert(f(36) == -36);
-#if _LIBCPP_STD_VER > 11
- typedef std::negate<> F2;
- const F2 f2 = F2();
- assert(f2(36) == -36);
- assert(f2(36L) == -36);
- assert(f2(36.0) == -36);
-
- constexpr int foo = std::negate<int> () (3);
- static_assert ( foo == -3, "" );
-
- constexpr int bar = std::negate<> () (3.0);
- static_assert ( bar == -3, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp
deleted file mode 100644
index 44001a0e5f4..00000000000
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/plus.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// plus
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::plus<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(3, 2) == 5);
-#if _LIBCPP_STD_VER > 11
- typedef std::plus<> F2;
- const F2 f2 = F2();
- assert(f2(3,2) == 5);
- assert(f2(3.0, 2) == 5);
- assert(f2(3, 2.5) == 5.5);
-
- constexpr int foo = std::plus<int> () (3, 2);
- static_assert ( foo == 5, "" );
-
- constexpr int bar = std::plus<> () (3.0, 2);
- static_assert ( bar == 5, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp b/libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp
deleted file mode 100644
index 72b4b4a0a1f..00000000000
--- a/libcxx/test/utilities/function.objects/arithmetic.operations/transparent.pass.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-#include <functional>
-#include <string>
-
-template <class _Tp>
-struct is_transparent
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::is_transparent* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
-
-
-int main () {
-#if _LIBCPP_STD_VER > 11
-
- static_assert ( !is_transparent<std::plus<int>>::value, "" );
- static_assert ( !is_transparent<std::plus<std::string>>::value, "" );
- static_assert ( is_transparent<std::plus<void>>::value, "" );
- static_assert ( is_transparent<std::plus<>>::value, "" );
-
- static_assert ( !is_transparent<std::minus<int>>::value, "" );
- static_assert ( !is_transparent<std::minus<std::string>>::value, "" );
- static_assert ( is_transparent<std::minus<void>>::value, "" );
- static_assert ( is_transparent<std::minus<>>::value, "" );
-
- static_assert ( !is_transparent<std::multiplies<int>>::value, "" );
- static_assert ( !is_transparent<std::multiplies<std::string>>::value, "" );
- static_assert ( is_transparent<std::multiplies<void>>::value, "" );
- static_assert ( is_transparent<std::multiplies<>>::value, "" );
-
- static_assert ( !is_transparent<std::divides<int>>::value, "" );
- static_assert ( !is_transparent<std::divides<std::string>>::value, "" );
- static_assert ( is_transparent<std::divides<void>>::value, "" );
- static_assert ( is_transparent<std::divides<>>::value, "" );
-
- static_assert ( !is_transparent<std::modulus<int>>::value, "" );
- static_assert ( !is_transparent<std::modulus<std::string>>::value, "" );
- static_assert ( is_transparent<std::modulus<void>>::value, "" );
- static_assert ( is_transparent<std::modulus<>>::value, "" );
-
- static_assert ( !is_transparent<std::negate<int>>::value, "" );
- static_assert ( !is_transparent<std::negate<std::string>>::value, "" );
- static_assert ( is_transparent<std::negate<void>>::value, "" );
- static_assert ( is_transparent<std::negate<>>::value, "" );
-
-#endif
-
- return 0;
- }
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp
deleted file mode 100644
index 6315598125c..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/copy.pass.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-
-// http://llvm.org/bugs/show_bug.cgi?id=16385
-
-#include <functional>
-#include <cmath>
-#include <cassert>
-
-float _pow(float a, float b)
-{
- return std::pow(a, b);
-}
-
-int main()
-{
- std::function<float(float, float)> fnc = _pow;
- auto task = std::bind(fnc, 2.f, 4.f);
- auto task2(task);
- assert(task() == 16);
- assert(task2() == 16);
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp
deleted file mode 100644
index ab4dd59534d..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_int_0.pass.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-
-#include <functional>
-#include <cassert>
-
-template <class R, class F>
-void
-test(F f, R expected)
-{
- assert(f() == expected);
-}
-
-template <class R, class F>
-void
-test_const(const F& f, R expected)
-{
- assert(f() == expected);
-}
-
-int f() {return 1;}
-
-struct A_int_0
-{
- int operator()() {return 4;}
- int operator()() const {return 5;}
-};
-
-int main()
-{
- test(std::bind(f), 1);
- test(std::bind(&f), 1);
- test(std::bind(A_int_0()), 4);
- test_const(std::bind(A_int_0()), 5);
-
- test(std::bind<int>(f), 1);
- test(std::bind<int>(&f), 1);
- test(std::bind<int>(A_int_0()), 4);
- test_const(std::bind<int>(A_int_0()), 5);
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp
deleted file mode 100644
index 1125844a1f3..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_lvalue.pass.cpp
+++ /dev/null
@@ -1,286 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-
-#include <stdio.h>
-
-#include <functional>
-#include <cassert>
-
-int count = 0;
-
-// 1 arg, return void
-
-void f_void_1(int i)
-{
- count += i;
-}
-
-struct A_void_1
-{
- void operator()(int i)
- {
- count += i;
- }
-
- void mem1() {++count;}
- void mem2() const {count += 2;}
-};
-
-void
-test_void_1()
-{
- using namespace std::placeholders;
- int save_count = count;
- // function
- {
- int i = 2;
- std::bind(f_void_1, _1)(i);
- assert(count == save_count + 2);
- save_count = count;
- }
- {
- int i = 2;
- std::bind(f_void_1, i)();
- assert(count == save_count + 2);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)(int) = f_void_1;
- int i = 3;
- std::bind(fp, _1)(i);
- assert(count == save_count+3);
- save_count = count;
- }
- {
- void (*fp)(int) = f_void_1;
- int i = 3;
- std::bind(fp, i)();
- assert(count == save_count+3);
- save_count = count;
- }
- // functor
- {
- A_void_1 a0;
- int i = 4;
- std::bind(a0, _1)(i);
- assert(count == save_count+4);
- save_count = count;
- }
- {
- A_void_1 a0;
- int i = 4;
- std::bind(a0, i)();
- assert(count == save_count+4);
- save_count = count;
- }
- // member function pointer
- {
- void (A_void_1::*fp)() = &A_void_1::mem1;
- A_void_1 a;
- std::bind(fp, _1)(a);
- assert(count == save_count+1);
- save_count = count;
- A_void_1* ap = &a;
- std::bind(fp, _1)(ap);
- assert(count == save_count+1);
- save_count = count;
- }
- {
- void (A_void_1::*fp)() = &A_void_1::mem1;
- A_void_1 a;
- std::bind(fp, a)();
- assert(count == save_count+1);
- save_count = count;
- A_void_1* ap = &a;
- std::bind(fp, ap)();
- assert(count == save_count+1);
- save_count = count;
- }
- // const member function pointer
- {
- void (A_void_1::*fp)() const = &A_void_1::mem2;
- A_void_1 a;
- std::bind(fp, _1)(a);
- assert(count == save_count+2);
- save_count = count;
- A_void_1* ap = &a;
- std::bind(fp, _1)(ap);
- assert(count == save_count+2);
- save_count = count;
- }
- {
- void (A_void_1::*fp)() const = &A_void_1::mem2;
- A_void_1 a;
- std::bind(fp, a)();
- assert(count == save_count+2);
- save_count = count;
- A_void_1* ap = &a;
- std::bind(fp, ap)();
- assert(count == save_count+2);
- save_count = count;
- }
-}
-
-// 1 arg, return int
-
-int f_int_1(int i)
-{
- return i + 1;
-}
-
-struct A_int_1
-{
- A_int_1() : data_(5) {}
- int operator()(int i)
- {
- return i - 1;
- }
-
- int mem1() {return 3;}
- int mem2() const {return 4;}
- int data_;
-};
-
-void
-test_int_1()
-{
- using namespace std::placeholders;
- // function
- {
- int i = 2;
- assert(std::bind(f_int_1, _1)(i) == 3);
- assert(std::bind(f_int_1, i)() == 3);
- }
- // function pointer
- {
- int (*fp)(int) = f_int_1;
- int i = 3;
- assert(std::bind(fp, _1)(i) == 4);
- assert(std::bind(fp, i)() == 4);
- }
- // functor
- {
- int i = 4;
- assert(std::bind(A_int_1(), _1)(i) == 3);
- assert(std::bind(A_int_1(), i)() == 3);
- }
- // member function pointer
- {
- A_int_1 a;
- assert(std::bind(&A_int_1::mem1, _1)(a) == 3);
- assert(std::bind(&A_int_1::mem1, a)() == 3);
- A_int_1* ap = &a;
- assert(std::bind(&A_int_1::mem1, _1)(ap) == 3);
- assert(std::bind(&A_int_1::mem1, ap)() == 3);
- }
- // const member function pointer
- {
- A_int_1 a;
- assert(std::bind(&A_int_1::mem2, _1)(A_int_1()) == 4);
- assert(std::bind(&A_int_1::mem2, A_int_1())() == 4);
- A_int_1* ap = &a;
- assert(std::bind(&A_int_1::mem2, _1)(ap) == 4);
- assert(std::bind(&A_int_1::mem2, ap)() == 4);
- }
- // member data pointer
- {
- A_int_1 a;
- assert(std::bind(&A_int_1::data_, _1)(a) == 5);
- assert(std::bind(&A_int_1::data_, a)() == 5);
- A_int_1* ap = &a;
- assert(std::bind(&A_int_1::data_, _1)(a) == 5);
- std::bind(&A_int_1::data_, _1)(a) = 6;
- assert(std::bind(&A_int_1::data_, _1)(a) == 6);
- assert(std::bind(&A_int_1::data_, _1)(ap) == 6);
- std::bind(&A_int_1::data_, _1)(ap) = 7;
- assert(std::bind(&A_int_1::data_, _1)(ap) == 7);
- }
-}
-
-// 2 arg, return void
-
-void f_void_2(int i, int j)
-{
- count += i+j;
-}
-
-struct A_void_2
-{
- void operator()(int i, int j)
- {
- count += i+j;
- }
-
- void mem1(int i) {count += i;}
- void mem2(int i) const {count += i;}
-};
-
-void
-test_void_2()
-{
- using namespace std::placeholders;
- int save_count = count;
- // function
- {
- int i = 2;
- int j = 3;
- std::bind(f_void_2, _1, _2)(i, j);
- assert(count == save_count+5);
- save_count = count;
- std::bind(f_void_2, i, _1)(j);
- assert(count == save_count+5);
- save_count = count;
- std::bind(f_void_2, i, j)();
- assert(count == save_count+5);
- save_count = count;
- }
- // member function pointer
- {
- int j = 3;
- std::bind(&A_void_2::mem1, _1, _2)(A_void_2(), j);
- assert(count == save_count+3);
- save_count = count;
- std::bind(&A_void_2::mem1, _2, _1)(j, A_void_2());
- assert(count == save_count+3);
- save_count = count;
- }
-}
-
-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()
-{
- test_void_1();
- test_int_1();
- test_void_2();
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp
deleted file mode 100644
index 4913a510c36..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_rvalue.pass.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-
-#include <stdio.h>
-
-#include <functional>
-#include <cassert>
-
-int count = 0;
-
-// 1 arg, return void
-
-void f_void_1(int i)
-{
- count += i;
-}
-
-struct A_void_1
-{
- void operator()(int i)
- {
- count += i;
- }
-
- void mem1() {++count;}
- void mem2() const {count += 2;}
-};
-
-void
-test_void_1()
-{
- using namespace std::placeholders;
- int save_count = count;
- // function
- {
- std::bind(f_void_1, _1)(2);
- assert(count == save_count + 2);
- save_count = count;
- }
- {
- std::bind(f_void_1, 2)();
- assert(count == save_count + 2);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)(int) = f_void_1;
- std::bind(fp, _1)(3);
- assert(count == save_count+3);
- save_count = count;
- }
- {
- void (*fp)(int) = f_void_1;
- std::bind(fp, 3)();
- assert(count == save_count+3);
- save_count = count;
- }
- // functor
- {
- A_void_1 a0;
- std::bind(a0, _1)(4);
- assert(count == save_count+4);
- save_count = count;
- }
- {
- A_void_1 a0;
- std::bind(a0, 4)();
- assert(count == save_count+4);
- save_count = count;
- }
- // member function pointer
- {
- void (A_void_1::*fp)() = &A_void_1::mem1;
- std::bind(fp, _1)(A_void_1());
- assert(count == save_count+1);
- save_count = count;
- A_void_1 a;
- std::bind(fp, _1)(&a);
- assert(count == save_count+1);
- save_count = count;
- }
- {
- void (A_void_1::*fp)() = &A_void_1::mem1;
- std::bind(fp, A_void_1())();
- assert(count == save_count+1);
- save_count = count;
- A_void_1 a;
- std::bind(fp, &a)();
- assert(count == save_count+1);
- save_count = count;
- }
- // const member function pointer
- {
- void (A_void_1::*fp)() const = &A_void_1::mem2;
- std::bind(fp, _1)(A_void_1());
- assert(count == save_count+2);
- save_count = count;
- A_void_1 a;
- std::bind(fp, _1)(&a);
- assert(count == save_count+2);
- save_count = count;
- }
- {
- void (A_void_1::*fp)() const = &A_void_1::mem2;
- std::bind(fp, A_void_1())();
- assert(count == save_count+2);
- save_count = count;
- A_void_1 a;
- std::bind(fp, &a)();
- assert(count == save_count+2);
- save_count = count;
- }
-}
-
-// 1 arg, return int
-
-int f_int_1(int i)
-{
- return i + 1;
-}
-
-struct A_int_1
-{
- A_int_1() : data_(5) {}
- int operator()(int i)
- {
- return i - 1;
- }
-
- int mem1() {return 3;}
- int mem2() const {return 4;}
- int data_;
-};
-
-void
-test_int_1()
-{
- using namespace std::placeholders;
- // function
- {
- assert(std::bind(f_int_1, _1)(2) == 3);
- assert(std::bind(f_int_1, 2)() == 3);
- }
- // function pointer
- {
- int (*fp)(int) = f_int_1;
- assert(std::bind(fp, _1)(3) == 4);
- assert(std::bind(fp, 3)() == 4);
- }
- // functor
- {
- assert(std::bind(A_int_1(), _1)(4) == 3);
- assert(std::bind(A_int_1(), 4)() == 3);
- }
- // member function pointer
- {
- assert(std::bind(&A_int_1::mem1, _1)(A_int_1()) == 3);
- assert(std::bind(&A_int_1::mem1, A_int_1())() == 3);
- A_int_1 a;
- assert(std::bind(&A_int_1::mem1, _1)(&a) == 3);
- assert(std::bind(&A_int_1::mem1, &a)() == 3);
- }
- // const member function pointer
- {
- assert(std::bind(&A_int_1::mem2, _1)(A_int_1()) == 4);
- assert(std::bind(&A_int_1::mem2, A_int_1())() == 4);
- A_int_1 a;
- assert(std::bind(&A_int_1::mem2, _1)(&a) == 4);
- assert(std::bind(&A_int_1::mem2, &a)() == 4);
- }
- // member data pointer
- {
- assert(std::bind(&A_int_1::data_, _1)(A_int_1()) == 5);
- assert(std::bind(&A_int_1::data_, A_int_1())() == 5);
- A_int_1 a;
- assert(std::bind(&A_int_1::data_, _1)(a) == 5);
- std::bind(&A_int_1::data_, _1)(a) = 6;
- assert(std::bind(&A_int_1::data_, _1)(a) == 6);
- assert(std::bind(&A_int_1::data_, _1)(&a) == 6);
- std::bind(&A_int_1::data_, _1)(&a) = 7;
- assert(std::bind(&A_int_1::data_, _1)(&a) == 7);
- }
-}
-
-// 2 arg, return void
-
-void f_void_2(int i, int j)
-{
- count += i+j;
-}
-
-struct A_void_2
-{
- void operator()(int i, int j)
- {
- count += i+j;
- }
-
- void mem1(int i) {count += i;}
- void mem2(int i) const {count += i;}
-};
-
-void
-test_void_2()
-{
- using namespace std::placeholders;
- int save_count = count;
- // function
- {
- std::bind(f_void_2, _1, _2)(2, 3);
- assert(count == save_count+5);
- save_count = count;
- std::bind(f_void_2, 2, _1)(3);
- assert(count == save_count+5);
- save_count = count;
- std::bind(f_void_2, 2, 3)();
- assert(count == save_count+5);
- save_count = count;
- }
- // member function pointer
- {
- std::bind(&A_void_2::mem1, _1, _2)(A_void_2(), 3);
- assert(count == save_count+3);
- save_count = count;
- std::bind(&A_void_2::mem1, _2, _1)(3, A_void_2());
- assert(count == save_count+3);
- save_count = count;
- }
-}
-
-int f_nested(int i)
-{
- return i+1;
-}
-
-int g_nested(int i)
-{
- return i*10;
-}
-
-void test_nested()
-{
- using namespace std::placeholders;
- assert(std::bind(f_nested, std::bind(g_nested, _1))(3) == 31);
-}
-
-int main()
-{
- test_void_1();
- test_int_1();
- test_void_2();
- test_nested();
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp
deleted file mode 100644
index 03447db33de..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/invoke_void_0.pass.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-
-#include <functional>
-#include <cassert>
-
-int count = 0;
-
-template <class F>
-void
-test(F f)
-{
- int save_count = count;
- f();
- assert(count == save_count + 1);
-}
-
-template <class F>
-void
-test_const(const F& f)
-{
- int save_count = count;
- f();
- assert(count == save_count + 2);
-}
-
-void f() {++count;}
-
-struct A_int_0
-{
- void operator()() {++count;}
- void operator()() const {count += 2;}
-};
-
-int main()
-{
- test(std::bind(f));
- test(std::bind(&f));
- test(std::bind(A_int_0()));
- test_const(std::bind(A_int_0()));
-
- test(std::bind<void>(f));
- test(std::bind<void>(&f));
- test(std::bind<void>(A_int_0()));
- test_const(std::bind<void>(A_int_0()));
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp
deleted file mode 100644
index 12720f7b550..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.bind/nested.pass.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-// template<Returnable R, CopyConstructible Fn, CopyConstructible... Types>
-// unspecified bind(Fn, Types...);
-
-// http://llvm.org/bugs/show_bug.cgi?id=16343
-
-#include <cmath>
-#include <functional>
-#include <cassert>
-
-struct power
-{
- template <typename T>
- T
- operator()(T a, T b)
- {
- return std::pow(a, b);
- }
-};
-
-struct plus_one
-{
- template <typename T>
- T
- operator()(T a)
- {
- return a + 1;
- }
-};
-
-int
-main()
-{
- using std::placeholders::_1;
-
- auto g = std::bind(power(), 2, _1);
- assert(g(5) == 32);
- assert(std::bind(plus_one(), g)(5) == 33);
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp
deleted file mode 100644
index 7f8dd4a98d2..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_bind_expression.pass.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<class T> struct is_bind_expression
-
-#include <functional>
-
-template <bool Expected, class T>
-void
-test(const T&)
-{
- static_assert(std::is_bind_expression<T>::value == Expected, "");
-}
-
-struct C {};
-
-int main()
-{
- test<true>(std::bind(C()));
- test<true>(std::bind(C(), std::placeholders::_2));
- test<true>(std::bind<int>(C()));
- test<false>(1);
- test<false>(std::placeholders::_2);
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp
deleted file mode 100644
index 6a52bd1848e..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.isbind/is_placeholder.pass.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// struct is_placeholder
-
-#include <functional>
-
-template <int Expected, class T>
-void
-test(const T&)
-{
- static_assert(std::is_placeholder<T>::value == Expected, "");
-}
-
-struct C {};
-
-int main()
-{
- test<1>(std::placeholders::_1);
- test<2>(std::placeholders::_2);
- test<3>(std::placeholders::_3);
- test<4>(std::placeholders::_4);
- test<5>(std::placeholders::_5);
- test<6>(std::placeholders::_6);
- test<7>(std::placeholders::_7);
- test<8>(std::placeholders::_8);
- test<9>(std::placeholders::_9);
- test<10>(std::placeholders::_10);
- test<0>(4);
- test<0>(5.5);
- test<0>('a');
- test<0>(C());
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp
deleted file mode 100644
index fa791d46ff5..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/func.bind.place/placeholders.pass.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// placeholders
-
-#include <functional>
-
-template <class T>
-void
-test(const T& t)
-{
- T t2;
- T t3 = t;
-}
-
-int main()
-{
- test(std::placeholders::_1);
- test(std::placeholders::_2);
- test(std::placeholders::_3);
- test(std::placeholders::_4);
- test(std::placeholders::_5);
- test(std::placeholders::_6);
- test(std::placeholders::_7);
- test(std::placeholders::_8);
- test(std::placeholders::_9);
- test(std::placeholders::_10);
-}
diff --git a/libcxx/test/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp
deleted file mode 100644
index b58f5c55b64..00000000000
--- a/libcxx/test/utilities/function.objects/bind/func.bind/nothing_to_do.pass.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-int main()
-{
-}
diff --git a/libcxx/test/utilities/function.objects/bind/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/bind/nothing_to_do.pass.cpp
deleted file mode 100644
index b58f5c55b64..00000000000
--- a/libcxx/test/utilities/function.objects/bind/nothing_to_do.pass.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-int main()
-{
-}
diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp
deleted file mode 100644
index 66544781d9d..00000000000
--- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_and.pass.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// bit_and
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::bit_and<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(0xEA95, 0xEA95) == 0xEA95);
- assert(f(0xEA95, 0x58D3) == 0x4891);
- assert(f(0x58D3, 0xEA95) == 0x4891);
- assert(f(0x58D3, 0) == 0);
- assert(f(0xFFFF, 0x58D3) == 0x58D3);
-#if _LIBCPP_STD_VER > 11
- typedef std::bit_and<> F2;
- const F2 f2 = F2();
- assert(f2(0xEA95, 0xEA95) == 0xEA95);
- assert(f2(0xEA95L, 0xEA95) == 0xEA95);
- assert(f2(0xEA95, 0xEA95L) == 0xEA95);
-
- assert(f2(0xEA95, 0x58D3) == 0x4891);
- assert(f2(0xEA95L, 0x58D3) == 0x4891);
- assert(f2(0xEA95, 0x58D3L) == 0x4891);
-
- assert(f2(0x58D3, 0xEA95) == 0x4891);
- assert(f2(0x58D3L, 0xEA95) == 0x4891);
- assert(f2(0x58D3, 0xEA95L) == 0x4891);
-
- assert(f2(0x58D3, 0) == 0);
- assert(f2(0x58D3L, 0) == 0);
- assert(f2(0x58D3, 0L) == 0);
-
- assert(f2(0xFFFF, 0x58D3) == 0x58D3);
- assert(f2(0xFFFFL, 0x58D3) == 0x58D3);
- assert(f2(0xFFFF, 0x58D3L) == 0x58D3);
-
- constexpr int foo = std::bit_and<int> () (0x58D3, 0xEA95);
- static_assert ( foo == 0x4891, "" );
-
- constexpr int bar = std::bit_and<> () (0x58D3L, 0xEA95);
- static_assert ( bar == 0x4891, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp
deleted file mode 100644
index 82efcbc29fa..00000000000
--- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_not.pass.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// bit_not
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
-#if _LIBCPP_STD_VER > 11
- typedef std::bit_not<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::unary_function<int, int>, F>::value), "");
- assert((f(0xEA95) & 0xFFFF ) == 0x156A);
- assert((f(0x58D3) & 0xFFFF ) == 0xA72C);
- assert((f(0) & 0xFFFF ) == 0xFFFF);
- assert((f(0xFFFF) & 0xFFFF ) == 0);
-
- typedef std::bit_not<> F2;
- const F2 f2 = F2();
- assert((f2(0xEA95) & 0xFFFF ) == 0x156A);
- assert((f2(0xEA95L) & 0xFFFF ) == 0x156A);
- assert((f2(0x58D3) & 0xFFFF ) == 0xA72C);
- assert((f2(0x58D3L) & 0xFFFF ) == 0xA72C);
- assert((f2(0) & 0xFFFF ) == 0xFFFF);
- assert((f2(0L) & 0xFFFF ) == 0xFFFF);
- assert((f2(0xFFFF) & 0xFFFF ) == 0);
- assert((f2(0xFFFFL) & 0xFFFF ) == 0);
-
- constexpr int foo = std::bit_not<int> () (0xEA95) & 0xFFFF;
- static_assert ( foo == 0x156A, "" );
-
- constexpr int bar = std::bit_not<> () (0xEA95) & 0xFFFF;
- static_assert ( bar == 0x156A, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp
deleted file mode 100644
index 6ae3c3ac978..00000000000
--- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_or.pass.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// bit_or
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::bit_or<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(0xEA95, 0xEA95) == 0xEA95);
- assert(f(0xEA95, 0x58D3) == 0xFAD7);
- assert(f(0x58D3, 0xEA95) == 0xFAD7);
- assert(f(0x58D3, 0) == 0x58D3);
- assert(f(0xFFFF, 0x58D3) == 0xFFFF);
-#if _LIBCPP_STD_VER > 11
- typedef std::bit_or<> F2;
- const F2 f2 = F2();
- assert(f2(0xEA95, 0xEA95) == 0xEA95);
- assert(f2(0xEA95L, 0xEA95) == 0xEA95);
- assert(f2(0xEA95, 0xEA95L) == 0xEA95);
-
- assert(f2(0xEA95, 0x58D3) == 0xFAD7);
- assert(f2(0xEA95L, 0x58D3) == 0xFAD7);
- assert(f2(0xEA95, 0x58D3L) == 0xFAD7);
-
- assert(f2(0x58D3, 0xEA95) == 0xFAD7);
- assert(f2(0x58D3L, 0xEA95) == 0xFAD7);
- assert(f2(0x58D3, 0xEA95L) == 0xFAD7);
-
- assert(f2(0x58D3, 0) == 0x58D3);
- assert(f2(0x58D3L, 0) == 0x58D3);
- assert(f2(0x58D3, 0L) == 0x58D3);
-
- assert(f2(0xFFFF, 0x58D3) == 0xFFFF);
- assert(f2(0xFFFFL, 0x58D3) == 0xFFFF);
- assert(f2(0xFFFF, 0x58D3L) == 0xFFFF);
-
- constexpr int foo = std::bit_or<int> () (0x58D3, 0xEA95);
- static_assert ( foo == 0xFAD7, "" );
-
- constexpr int bar = std::bit_or<> () (0x58D3L, 0xEA95);
- static_assert ( bar == 0xFAD7, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp
deleted file mode 100644
index e7bb5e49f94..00000000000
--- a/libcxx/test/utilities/function.objects/bitwise.operations/bit_xor.pass.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// bit_xor
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::bit_xor<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, int>, F>::value), "");
- assert(f(0xEA95, 0xEA95) == 0);
- assert(f(0xEA95, 0x58D3) == 0xB246);
- assert(f(0x58D3, 0xEA95) == 0xB246);
- assert(f(0x58D3, 0) == 0x58D3);
- assert(f(0xFFFF, 0x58D3) == 0xA72C);
-#if _LIBCPP_STD_VER > 11
- typedef std::bit_xor<> F2;
- const F2 f2 = F2();
- assert(f(0xEA95, 0xEA95) == 0);
- assert(f(0xEA95L, 0xEA95) == 0);
- assert(f(0xEA95, 0xEA95L) == 0);
-
- assert(f(0xEA95, 0x58D3) == 0xB246);
- assert(f(0xEA95L, 0x58D3) == 0xB246);
- assert(f(0xEA95, 0x58D3L) == 0xB246);
-
- assert(f(0x58D3, 0xEA95) == 0xB246);
- assert(f(0x58D3L, 0xEA95) == 0xB246);
- assert(f(0x58D3, 0xEA95L) == 0xB246);
-
- assert(f(0x58D3, 0) == 0x58D3);
- assert(f(0x58D3L, 0) == 0x58D3);
- assert(f(0x58D3, 0L) == 0x58D3);
-
- assert(f(0xFFFF, 0x58D3) == 0xA72C);
- assert(f(0xFFFFL, 0x58D3) == 0xA72C);
- assert(f(0xFFFF, 0x58D3L) == 0xA72C);
-
- constexpr int foo = std::bit_xor<int> () (0x58D3, 0xEA95);
- static_assert ( foo == 0xB246, "" );
-
- constexpr int bar = std::bit_xor<> () (0x58D3L, 0xEA95);
- static_assert ( bar == 0xB246, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp b/libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp
deleted file mode 100644
index 9f8e15dd55f..00000000000
--- a/libcxx/test/utilities/function.objects/bitwise.operations/transparent.pass.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-#include <functional>
-#include <string>
-
-template <class _Tp>
-struct is_transparent
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::is_transparent* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
-
-
-int main () {
-#if _LIBCPP_STD_VER > 11
-
- static_assert ( !is_transparent<std::bit_and<int>>::value, "" );
- static_assert ( !is_transparent<std::bit_and<std::string>>::value, "" );
- static_assert ( is_transparent<std::bit_and<void>>::value, "" );
- static_assert ( is_transparent<std::bit_and<>>::value, "" );
-
- static_assert ( !is_transparent<std::bit_or<int>>::value, "" );
- static_assert ( !is_transparent<std::bit_or<std::string>>::value, "" );
- static_assert ( is_transparent<std::bit_or<void>>::value, "" );
- static_assert ( is_transparent<std::bit_or<>>::value, "" );
-
- static_assert ( !is_transparent<std::bit_xor<int>>::value, "" );
- static_assert ( !is_transparent<std::bit_xor<std::string>>::value, "" );
- static_assert ( is_transparent<std::bit_xor<void>>::value, "" );
- static_assert ( is_transparent<std::bit_xor<>>::value, "" );
-
- static_assert ( !is_transparent<std::bit_not<int>>::value, "" );
- static_assert ( !is_transparent<std::bit_not<std::string>>::value, "" );
- static_assert ( is_transparent<std::bit_not<void>>::value, "" );
- static_assert ( is_transparent<std::bit_not<>>::value, "" );
-
-#endif
-
- return 0;
- }
diff --git a/libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp
deleted file mode 100644
index 3d1c0b5cecd..00000000000
--- a/libcxx/test/utilities/function.objects/comparisons/equal_to.pass.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// equal_to
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::equal_to<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(f(36, 36));
- assert(!f(36, 6));
-#if _LIBCPP_STD_VER > 11
- typedef std::equal_to<> F2;
- const F2 f2 = F2();
- assert(f2(36, 36));
- assert(!f2(36, 6));
- assert(f2(36, 36.0));
- assert(f2(36.0, 36L));
-
- constexpr bool foo = std::equal_to<int> () (36, 36);
- static_assert ( foo, "" );
-
- constexpr bool bar = std::equal_to<> () (36.0, 36);
- static_assert ( bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp
deleted file mode 100644
index 5a88f4362dc..00000000000
--- a/libcxx/test/utilities/function.objects/comparisons/greater.pass.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// greater
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::greater<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(!f(36, 36));
- assert(f(36, 6));
- assert(!f(6, 36));
-#if _LIBCPP_STD_VER > 11
- typedef std::greater<> F2;
- const F2 f2 = F2();
- assert(!f2(36, 36));
- assert(f2(36, 6));
- assert(!f2(6, 36));
- assert( f2(36, 6.0));
- assert( f2(36.0, 6));
- assert(!f2(6, 36.0));
- assert(!f2(6.0, 36));
-
- constexpr bool foo = std::greater<int> () (36, 36);
- static_assert ( !foo, "" );
-
- constexpr bool bar = std::greater<> () (36.0, 36);
- static_assert ( !bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp
deleted file mode 100644
index 22444c79420..00000000000
--- a/libcxx/test/utilities/function.objects/comparisons/greater_equal.pass.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// greater_equal
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::greater_equal<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(f(36, 36));
- assert(f(36, 6));
- assert(!f(6, 36));
-#if _LIBCPP_STD_VER > 11
- typedef std::greater_equal<> F2;
- const F2 f2 = F2();
- assert(f2(36, 36));
- assert(f2(36, 6));
- assert(!f2(6, 36));
- assert( f2(36, 6.0));
- assert( f2(36.0, 6));
- assert(!f2(6, 36.0));
- assert(!f2(6.0, 36));
-
- constexpr bool foo = std::greater_equal<int> () (36, 36);
- static_assert ( foo, "" );
-
- constexpr bool bar = std::greater_equal<> () (36.0, 36);
- static_assert ( bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/comparisons/less.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/less.pass.cpp
deleted file mode 100644
index 99cdd1291bb..00000000000
--- a/libcxx/test/utilities/function.objects/comparisons/less.pass.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// less
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::less<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(!f(36, 36));
- assert(!f(36, 6));
- assert(f(6, 36));
-#if _LIBCPP_STD_VER > 11
- typedef std::less<> F2;
- const F2 f2 = F2();
- assert(!f2(36, 36));
- assert(!f2(36, 6));
- assert( f2(6, 36));
- assert(!f2(36, 6.0));
- assert(!f2(36.0, 6));
- assert( f2(6, 36.0));
- assert( f2(6.0, 36));
-
- constexpr bool foo = std::less<int> () (36, 36);
- static_assert ( !foo, "" );
-
- constexpr bool bar = std::less<> () (36.0, 36);
- static_assert ( !bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp
deleted file mode 100644
index 116906eaafe..00000000000
--- a/libcxx/test/utilities/function.objects/comparisons/less_equal.pass.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// less_equal
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::less_equal<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(f(36, 36));
- assert(!f(36, 6));
- assert(f(6, 36));
-#if _LIBCPP_STD_VER > 11
- typedef std::less_equal<> F2;
- const F2 f2 = F2();
- assert( f2(36, 36));
- assert(!f2(36, 6));
- assert( f2(6, 36));
- assert(!f2(36, 6.0));
- assert(!f2(36.0, 6));
- assert( f2(6, 36.0));
- assert( f2(6.0, 36));
-
- constexpr bool foo = std::less_equal<int> () (36, 36);
- static_assert ( foo, "" );
-
- constexpr bool bar = std::less_equal<> () (36.0, 36);
- static_assert ( bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/comparisons/not_equal_to.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/not_equal_to.pass.cpp
deleted file mode 100644
index 4b61bf8b838..00000000000
--- a/libcxx/test/utilities/function.objects/comparisons/not_equal_to.pass.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// not_equal_to
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::not_equal_to<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(!f(36, 36));
- assert(f(36, 6));
-#if _LIBCPP_STD_VER > 11
- typedef std::not_equal_to<> F2;
- const F2 f2 = F2();
- assert(!f2(36, 36));
- assert( f2(36, 6));
- assert( f2(36, 6.0));
- assert( f2(36.0, 6));
- assert(!f2(36.0, 36));
- assert(!f2(36, 36.0));
-
- constexpr bool foo = std::not_equal_to<int> () (36, 36);
- static_assert ( !foo, "" );
-
- constexpr bool bar = std::not_equal_to<> () (36.0, 36);
- static_assert ( !bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp b/libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp
deleted file mode 100644
index 41ce4bcae65..00000000000
--- a/libcxx/test/utilities/function.objects/comparisons/transparent.pass.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-#include <functional>
-#include <string>
-
-template <class _Tp>
-struct is_transparent
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::is_transparent* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
-
-
-int main () {
-#if _LIBCPP_STD_VER > 11
-
- static_assert ( !is_transparent<std::less<int>>::value, "" );
- static_assert ( !is_transparent<std::less<std::string>>::value, "" );
- static_assert ( is_transparent<std::less<void>>::value, "" );
- static_assert ( is_transparent<std::less<>>::value, "" );
-
- static_assert ( !is_transparent<std::less_equal<int>>::value, "" );
- static_assert ( !is_transparent<std::less_equal<std::string>>::value, "" );
- static_assert ( is_transparent<std::less_equal<void>>::value, "" );
- static_assert ( is_transparent<std::less_equal<>>::value, "" );
-
- static_assert ( !is_transparent<std::equal_to<int>>::value, "" );
- static_assert ( !is_transparent<std::equal_to<std::string>>::value, "" );
- static_assert ( is_transparent<std::equal_to<void>>::value, "" );
- static_assert ( is_transparent<std::equal_to<>>::value, "" );
-
- static_assert ( !is_transparent<std::not_equal_to<int>>::value, "" );
- static_assert ( !is_transparent<std::not_equal_to<std::string>>::value, "" );
- static_assert ( is_transparent<std::not_equal_to<void>>::value, "" );
- static_assert ( is_transparent<std::not_equal_to<>>::value, "" );
-
- static_assert ( !is_transparent<std::greater<int>>::value, "" );
- static_assert ( !is_transparent<std::greater<std::string>>::value, "" );
- static_assert ( is_transparent<std::greater<void>>::value, "" );
- static_assert ( is_transparent<std::greater<>>::value, "" );
-
- static_assert ( !is_transparent<std::greater_equal<int>>::value, "" );
- static_assert ( !is_transparent<std::greater_equal<std::string>>::value, "" );
- static_assert ( is_transparent<std::greater_equal<void>>::value, "" );
- static_assert ( is_transparent<std::greater_equal<>>::value, "" );
-
-#endif
-
- return 0;
- }
diff --git a/libcxx/test/utilities/function.objects/func.def/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/func.def/nothing_to_do.pass.cpp
deleted file mode 100644
index b58f5c55b64..00000000000
--- a/libcxx/test/utilities/function.objects/func.def/nothing_to_do.pass.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-int main()
-{
-}
diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp
deleted file mode 100644
index 5e748c93b9e..00000000000
--- a/libcxx/test/utilities/function.objects/func.memfn/member_data.fail.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<Returnable R, class T> unspecified mem_fn(R T::* pm);
-
-#include <functional>
-#include <cassert>
-
-struct A
-{
- double data_;
-};
-
-template <class F>
-void
-test(F f)
-{
- {
- A a;
- f(a) = 5;
- assert(a.data_ == 5);
- A* ap = &a;
- f(ap) = 6;
- assert(a.data_ == 6);
- const A* cap = ap;
- assert(f(cap) == f(ap));
- f(cap) = 7;
- }
-}
-
-int main()
-{
- test(std::mem_fn(&A::data_));
-}
diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp
deleted file mode 100644
index dff211c6057..00000000000
--- a/libcxx/test/utilities/function.objects/func.memfn/member_data.pass.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<Returnable R, class T> unspecified mem_fn(R T::* pm);
-
-#include <functional>
-#include <cassert>
-
-struct A
-{
- double data_;
-};
-
-template <class F>
-void
-test(F f)
-{
- {
- A a;
- f(a) = 5;
- assert(a.data_ == 5);
- A* ap = &a;
- f(ap) = 6;
- assert(a.data_ == 6);
- const A* cap = ap;
- assert(f(cap) == f(ap));
- const F& cf = f;
- assert(cf(ap) == f(ap));
- }
-}
-
-int main()
-{
- test(std::mem_fn(&A::data_));
-}
diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp
deleted file mode 100644
index 4096bd81442..00000000000
--- a/libcxx/test/utilities/function.objects/func.memfn/member_function.pass.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<Returnable R, class T, CopyConstructible... Args>
-// unspecified mem_fn(R (T::* pm)(Args...));
-
-#include <functional>
-#include <cassert>
-
-struct A
-{
- char test0() {return 'a';}
- char test1(int) {return 'b';}
- char test2(int, double) {return 'c';}
-};
-
-template <class F>
-void
-test0(F f)
-{
- {
- A a;
- assert(f(a) == 'a');
- A* ap = &a;
- assert(f(ap) == 'a');
- const F& cf = f;
- assert(cf(ap) == 'a');
- }
-}
-
-template <class F>
-void
-test1(F f)
-{
- {
- A a;
- assert(f(a, 1) == 'b');
- A* ap = &a;
- assert(f(ap, 2) == 'b');
- const F& cf = f;
- assert(cf(ap, 2) == 'b');
- }
-}
-
-template <class F>
-void
-test2(F f)
-{
- {
- A a;
- assert(f(a, 1, 2) == 'c');
- A* ap = &a;
- assert(f(ap, 2, 3.5) == 'c');
- const F& cf = f;
- assert(cf(ap, 2, 3.5) == 'c');
- }
-}
-
-int main()
-{
- test0(std::mem_fn(&A::test0));
- test1(std::mem_fn(&A::test1));
- test2(std::mem_fn(&A::test2));
-}
diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp
deleted file mode 100644
index be22443e954..00000000000
--- a/libcxx/test/utilities/function.objects/func.memfn/member_function_const.pass.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<Returnable R, class T, CopyConstructible... Args>
-// unspecified mem_fn(R (T::* pm)(Args...) const);
-
-#include <functional>
-#include <cassert>
-
-struct A
-{
- char test0() const {return 'a';}
- char test1(int) const {return 'b';}
- char test2(int, double) const {return 'c';}
-};
-
-template <class F>
-void
-test0(F f)
-{
- {
- A a;
- assert(f(a) == 'a');
- A* ap = &a;
- assert(f(ap) == 'a');
- const A* cap = &a;
- assert(f(cap) == 'a');
- const F& cf = f;
- assert(cf(ap) == 'a');
- }
-}
-
-template <class F>
-void
-test1(F f)
-{
- {
- A a;
- assert(f(a, 1) == 'b');
- A* ap = &a;
- assert(f(ap, 2) == 'b');
- const A* cap = &a;
- assert(f(cap, 2) == 'b');
- const F& cf = f;
- assert(cf(ap, 2) == 'b');
- }
-}
-
-template <class F>
-void
-test2(F f)
-{
- {
- A a;
- assert(f(a, 1, 2) == 'c');
- A* ap = &a;
- assert(f(ap, 2, 3.5) == 'c');
- const A* cap = &a;
- assert(f(cap, 2, 3.5) == 'c');
- const F& cf = f;
- assert(cf(ap, 2, 3.5) == 'c');
- }
-}
-
-int main()
-{
- test0(std::mem_fn(&A::test0));
- test1(std::mem_fn(&A::test1));
- test2(std::mem_fn(&A::test2));
-}
diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp
deleted file mode 100644
index 329ac16a86d..00000000000
--- a/libcxx/test/utilities/function.objects/func.memfn/member_function_const_volatile.pass.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<Returnable R, class T, CopyConstructible... Args>
-// unspecified mem_fn(R (T::* pm)(Args...) const volatile);
-
-#include <functional>
-#include <cassert>
-
-struct A
-{
- char test0() const volatile {return 'a';}
- char test1(int) const volatile {return 'b';}
- char test2(int, double) const volatile {return 'c';}
-};
-
-template <class F>
-void
-test0(F f)
-{
- {
- A a;
- assert(f(a) == 'a');
- A* ap = &a;
- assert(f(ap) == 'a');
- const volatile A* cap = &a;
- assert(f(cap) == 'a');
- const F& cf = f;
- assert(cf(ap) == 'a');
- }
-}
-
-template <class F>
-void
-test1(F f)
-{
- {
- A a;
- assert(f(a, 1) == 'b');
- A* ap = &a;
- assert(f(ap, 2) == 'b');
- const volatile A* cap = &a;
- assert(f(cap, 2) == 'b');
- const F& cf = f;
- assert(cf(ap, 2) == 'b');
- }
-}
-
-template <class F>
-void
-test2(F f)
-{
- {
- A a;
- assert(f(a, 1, 2) == 'c');
- A* ap = &a;
- assert(f(ap, 2, 3.5) == 'c');
- const volatile A* cap = &a;
- assert(f(cap, 2, 3.5) == 'c');
- const F& cf = f;
- assert(cf(ap, 2, 3.5) == 'c');
- }
-}
-
-int main()
-{
- test0(std::mem_fn(&A::test0));
- test1(std::mem_fn(&A::test1));
- test2(std::mem_fn(&A::test2));
-}
diff --git a/libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp b/libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp
deleted file mode 100644
index 743ded9944a..00000000000
--- a/libcxx/test/utilities/function.objects/func.memfn/member_function_volatile.pass.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<Returnable R, class T, CopyConstructible... Args>
-// unspecified mem_fn(R (T::* pm)(Args...) volatile);
-
-#include <functional>
-#include <cassert>
-
-struct A
-{
- char test0() volatile {return 'a';}
- char test1(int) volatile {return 'b';}
- char test2(int, double) volatile {return 'c';}
-};
-
-template <class F>
-void
-test0(F f)
-{
- {
- A a;
- assert(f(a) == 'a');
- A* ap = &a;
- assert(f(ap) == 'a');
- volatile A* cap = &a;
- assert(f(cap) == 'a');
- const F& cf = f;
- assert(cf(ap) == 'a');
- }
-}
-
-template <class F>
-void
-test1(F f)
-{
- {
- A a;
- assert(f(a, 1) == 'b');
- A* ap = &a;
- assert(f(ap, 2) == 'b');
- volatile A* cap = &a;
- assert(f(cap, 2) == 'b');
- const F& cf = f;
- assert(cf(ap, 2) == 'b');
- }
-}
-
-template <class F>
-void
-test2(F f)
-{
- {
- A a;
- assert(f(a, 1, 2) == 'c');
- A* ap = &a;
- assert(f(ap, 2, 3.5) == 'c');
- volatile A* cap = &a;
- assert(f(cap, 2, 3.5) == 'c');
- const F& cf = f;
- assert(cf(ap, 2, 3.5) == 'c');
- }
-}
-
-int main()
-{
- test0(std::mem_fn(&A::test0));
- test1(std::mem_fn(&A::test1));
- test2(std::mem_fn(&A::test2));
-}
diff --git a/libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp b/libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp
deleted file mode 100644
index fa7afb2e7b9..00000000000
--- a/libcxx/test/utilities/function.objects/func.require/binary_function.pass.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// binary_function
-
-#include <functional>
-#include <type_traits>
-
-int main()
-{
- typedef std::binary_function<int, short, bool> bf;
- static_assert((std::is_same<bf::first_argument_type, int>::value), "");
- static_assert((std::is_same<bf::second_argument_type, short>::value), "");
- static_assert((std::is_same<bf::result_type, bool>::value), "");
-}
diff --git a/libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp b/libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp
deleted file mode 100644
index 25681630a80..00000000000
--- a/libcxx/test/utilities/function.objects/func.require/invoke.pass.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-// [func.require]
-
-// INVOKE
-#if __cplusplus < 201103L
-int main () {} // no __invoke in C++03
-#else
-
-#include <type_traits>
-
-template <typename T, int N>
-struct Array
-{
- typedef T type[N];
-};
-
-struct Type
-{
- Array<char, 1>::type& f1();
- Array<char, 2>::type& f2() const;
-
- Array<char, 1>::type& g1() &;
- Array<char, 2>::type& g2() const &;
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
- Array<char, 3>::type& g3() &&;
- Array<char, 4>::type& g4() const &&;
-#endif
-};
-
-int main()
-{
- static_assert(sizeof(std::__invoke(&Type::f1, std::declval<Type >())) == 1, "");
- static_assert(sizeof(std::__invoke(&Type::f2, std::declval<Type const >())) == 2, "");
-
- static_assert(sizeof(std::__invoke(&Type::g1, std::declval<Type &>())) == 1, "");
- static_assert(sizeof(std::__invoke(&Type::g2, std::declval<Type const &>())) == 2, "");
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
- static_assert(sizeof(std::__invoke(&Type::g3, std::declval<Type &&>())) == 3, "");
- static_assert(sizeof(std::__invoke(&Type::g4, std::declval<Type const&&>())) == 4, "");
-#endif
-}
-#endif
diff --git a/libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp b/libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp
deleted file mode 100644
index f14b2d3a2ce..00000000000
--- a/libcxx/test/utilities/function.objects/func.require/unary_function.pass.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// unary_function
-
-#include <functional>
-#include <type_traits>
-
-int main()
-{
- typedef std::unary_function<int, bool> uf;
- static_assert((std::is_same<uf::argument_type, int>::value), "");
- static_assert((std::is_same<uf::result_type, bool>::value), "");
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp
deleted file mode 100644
index 357a3b48eae..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/bad_function_call.pass.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-// Class bad_function_call
-
-// class bad_function_call
-// : public exception
-// {
-// public:
-// // 20.7.16.1.1, constructor:
-// bad_function_call();
-// };
-
-#include <functional>
-#include <type_traits>
-
-int main()
-{
- static_assert((std::is_base_of<std::exception, std::bad_function_call>::value), "");
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp
deleted file mode 100644
index f5ab9487532..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.badcall/func.wrap.badcall.const/bad_function_call_ctor.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-// Class bad_function_call
-
-// bad_function_call();
-
-#include <functional>
-#include <type_traits>
-
-int main()
-{
- std::bad_function_call ex;
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp
deleted file mode 100644
index b8995bffe0f..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template <MoveConstructible R, MoveConstructible ... ArgTypes>
-// void swap(function<R(ArgTypes...)>&, function<R(ArgTypes...)>&);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- explicit A(int j)
- {
- ++count;
- data_[0] = j;
- }
-
- A(const A& a)
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = a.data_[i];
- }
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int id() const {return data_[0];}
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-int h(int) {return 1;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = A(1);
- std::function<int(int)> f2 = A(2);
- assert(A::count == 2);
- assert(new_called == 2);
- assert(f1.target<A>()->id() == 1);
- assert(f2.target<A>()->id() == 2);
- swap(f1, f2);
- assert(A::count == 2);
- assert(new_called == 2);
- assert(f1.target<A>()->id() == 2);
- assert(f2.target<A>()->id() == 1);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = A(1);
- std::function<int(int)> f2 = g;
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f1.target<A>()->id() == 1);
- assert(*f2.target<int(*)(int)>() == g);
- swap(f1, f2);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(*f1.target<int(*)(int)>() == g);
- assert(f2.target<A>()->id() == 1);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = g;
- std::function<int(int)> f2 = A(1);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(*f1.target<int(*)(int)>() == g);
- assert(f2.target<A>()->id() == 1);
- swap(f1, f2);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f1.target<A>()->id() == 1);
- assert(*f2.target<int(*)(int)>() == g);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = g;
- std::function<int(int)> f2 = h;
- assert(A::count == 0);
- assert(new_called == 0);
- assert(*f1.target<int(*)(int)>() == g);
- assert(*f2.target<int(*)(int)>() == h);
- swap(f1, f2);
- assert(A::count == 0);
- assert(new_called == 0);
- assert(*f1.target<int(*)(int)>() == h);
- assert(*f2.target<int(*)(int)>() == g);
- }
- assert(A::count == 0);
- assert(new_called == 0);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp
deleted file mode 100644
index 829763f79d8..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.cap/operator_bool.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// explicit operator bool() const
-
-#include <functional>
-#include <cassert>
-
-int g(int) {return 0;}
-
-int main()
-{
- {
- std::function<int(int)> f;
- assert(!f);
- f = g;
- assert(f);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp
deleted file mode 100644
index 3a43be73f7a..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// function(nullptr_t);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int foo(int) const {return 1;}
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f = g;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- }
- assert(new_called == 0);
- {
- std::function<int(int)> f = (int (*)(int))0;
- assert(!f);
- assert(new_called == 0);
- assert(f.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- }
- {
- std::function<int(const A*, int)> f = &A::foo;
- assert(f);
- assert(new_called == 0);
- assert(f.target<int (A::*)(int) const>() != 0);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp
deleted file mode 100644
index ba65cd3330b..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class F>
-// requires CopyConstructible<F> && Callable<F, ArgTypes..>
-// && Convertible<Callable<F, ArgTypes...>::result_type
-// operator=(F f);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int foo(int) const {return 1;}
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f;
- f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f;
- f = g;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- }
- assert(new_called == 0);
- {
- std::function<int(int)> f;
- f = (int (*)(int))0;
- assert(!f);
- assert(new_called == 0);
- assert(f.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- }
- {
- std::function<int(const A*, int)> f;
- f = &A::foo;
- assert(f);
- assert(new_called == 0);
- assert(f.target<int (A::*)(int) const>() != 0);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp
deleted file mode 100644
index c8f4178a26b..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_incomplete.pass.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class F> function(F);
-
-// Allow incomplete argument types in the __is_callable check
-
-#include <functional>
-
-struct X{
- typedef std::function<void(X&)> callback_type;
- virtual ~X() {}
-private:
- callback_type _cb;
-};
-
-int main()
-{
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp
deleted file mode 100644
index 4feac30c300..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc.pass.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class A> function(allocator_arg_t, const A&);
-
-#include <functional>
-#include <cassert>
-
-#include "test_allocator.h"
-
-int main()
-{
- std::function<int(int)> f(std::allocator_arg, test_allocator<int>());
- assert(!f);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp
deleted file mode 100644
index 599092258da..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_F.pass.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class F, class A> function(allocator_arg_t, const A&, F);
-
-#include <functional>
-#include <cassert>
-
-#include "test_allocator.h"
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int foo(int) const {return 1;}
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-class Foo {
-public:
- void bar(int k) { }
-};
-
-int main()
-{
- {
- std::function<int(int)> f(std::allocator_arg, test_allocator<A>(), A());
- assert(A::count == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- {
- std::function<int(int)> f(std::allocator_arg, test_allocator<int(*)(int)>(), g);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- }
- {
- std::function<int(int)> f(std::allocator_arg, test_allocator<int(*)(int)>(),
- (int (*)(int))0);
- assert(!f);
- assert(f.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- }
- {
- std::function<int(const A*, int)> f(std::allocator_arg,
- test_allocator<int(A::*)(int)const>(),
- &A::foo);
- assert(f);
- assert(f.target<int (A::*)(int) const>() != 0);
- }
- {
- Foo f;
- std::function<void(int)> fun = std::bind(&Foo::bar, &f, std::placeholders::_1);
- fun(10);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp
deleted file mode 100644
index 38e65fc845f..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_function.pass.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class A> function(allocator_arg_t, const A&, const function&);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-#include "test_allocator.h"
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- std::function<int(int)> f2(std::allocator_arg, test_allocator<A>(), f);
- assert(A::count == 2);
- assert(new_called == 2);
- assert(f2.target<A>());
- assert(f2.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f = g;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- std::function<int(int)> f2(std::allocator_arg, test_allocator<int(*)(int)>(), f);
- assert(new_called == 0);
- assert(f2.target<int(*)(int)>());
- assert(f2.target<A>() == 0);
- }
- assert(new_called == 0);
- {
- assert(new_called == 0);
- non_default_test_allocator<std::function<int(int)>> al(1);
- std::function<int(int)> f2(std::allocator_arg, al, g);
- assert(new_called == 0);
- assert(f2.target<int(*)(int)>());
- assert(f2.target<A>() == 0);
- }
- assert(new_called == 0);
- {
- std::function<int(int)> f;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- std::function<int(int)> f2(std::allocator_arg, test_allocator<int>(), f);
- assert(new_called == 0);
- assert(f2.target<int(*)(int)>() == 0);
- assert(f2.target<A>() == 0);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp
deleted file mode 100644
index 956136be021..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_nullptr.pass.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class A> function(allocator_arg_t, const A&, nullptr_t);
-
-#include <functional>
-#include <cassert>
-
-#include "test_allocator.h"
-
-int main()
-{
- std::function<int(int)> f(std::allocator_arg, test_allocator<int>(), nullptr);
- assert(!f);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp
deleted file mode 100644
index 2180b8936d7..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/alloc_rfunction.pass.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class A> function(allocator_arg_t, const A&, function&&);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <cassert>
-
-#include "test_allocator.h"
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-};
-
-int A::count = 0;
-
-int main()
-{
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- std::function<int(int)> f2(std::allocator_arg, test_allocator<A>(), std::move(f));
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f2.target<A>());
- assert(f2.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- assert(f.target<int(*)(int)>() == 0);
- }
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp
deleted file mode 100644
index 2fbd7cfa9fb..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy.pass.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// function(const function& f);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- std::function<int(int)> f2 = f;
- assert(A::count == 2);
- assert(new_called == 2);
- assert(f2.target<A>());
- assert(f2.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f = g;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- std::function<int(int)> f2 = f;
- assert(new_called == 0);
- assert(f2.target<int(*)(int)>());
- assert(f2.target<A>() == 0);
- }
- assert(new_called == 0);
- {
- std::function<int(int)> f;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- std::function<int(int)> f2 = f;
- assert(new_called == 0);
- assert(f2.target<int(*)(int)>() == 0);
- assert(f2.target<A>() == 0);
- }
- {
- std::function<int(int)> f;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- assert(!f);
- std::function<long(int)> g = f;
- assert(new_called == 0);
- assert(g.target<long(*)(int)>() == 0);
- assert(g.target<A>() == 0);
- assert(!g);
- }
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- std::function<int(int)> f2 = std::move(f);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f2.target<A>());
- assert(f2.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- assert(f.target<int(*)(int)>() == 0);
- }
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
deleted file mode 100644
index cfa79e24401..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// function& operator=(const function& f);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- std::function<int(int)> f2;
- f2 = f;
- assert(A::count == 2);
- assert(new_called == 2);
- assert(f2.target<A>());
- assert(f2.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f = g;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- std::function<int(int)> f2;
- f2 = f;
- assert(new_called == 0);
- assert(f2.target<int(*)(int)>());
- assert(f2.target<A>() == 0);
- }
- assert(new_called == 0);
- {
- std::function<int(int)> f;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- std::function<int(int)> f2;
- f2 = f;
- assert(new_called == 0);
- assert(f2.target<int(*)(int)>() == 0);
- assert(f2.target<A>() == 0);
- }
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- std::function<int(int)> f2;
- f2 = std::move(f);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f2.target<A>());
- assert(f2.target<int(*)(int)>() == 0);
- assert(f.target<A>() == 0);
- assert(f.target<int(*)(int)>() == 0);
- }
-#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp
deleted file mode 100644
index 83d61b6b2d8..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/default.pass.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// explicit function();
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- std::function<int(int)> f;
- assert(!f);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp
deleted file mode 100644
index 7099c45fab8..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/no-variadics.pass.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R()>
-
-// template<class F> function(F);
-
-#define _LIBCPP_HAS_NO_VARIADICS
-#include <functional>
-#include <cassert>
-
-int main()
-{
- std::function<void()> f(static_cast<void(*)()>(0));
- assert(!f);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp
deleted file mode 100644
index f0d6402d185..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t.pass.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// function(nullptr_t);
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- std::function<int(int)> f(nullptr);
- assert(!f);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp
deleted file mode 100644
index b8c597b63ce..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// function& operator=(nullptr_t);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f.target<A>());
- f = nullptr;
- assert(A::count == 0);
- assert(new_called == 0);
- assert(f.target<A>() == 0);
- }
- {
- std::function<int(int)> f = g;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- f = nullptr;
- assert(new_called == 0);
- assert(f.target<int(*)(int)>() == 0);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp
deleted file mode 100644
index 6dcd2857452..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.fail.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// R operator()(ArgTypes... args) const
-
-#include <functional>
-#include <cassert>
-
-// member data pointer: cv qualifiers should transfer from argument to return type
-
-struct A_int_1
-{
- A_int_1() : data_(5) {}
-
- int data_;
-};
-
-void
-test_int_1()
-{
- // member data pointer
- {
- int A_int_1::*fp = &A_int_1::data_;
- A_int_1 a;
- std::function<int& (const A_int_1*)> r2(fp);
- const A_int_1* ap = &a;
- assert(r2(ap) == 6);
- r2(ap) = 7;
- assert(r2(ap) == 7);
- }
-}
-
-int main()
-{
- test_int_1();
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp
deleted file mode 100644
index 31b80c3323c..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke.pass.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// R operator()(ArgTypes... args) const
-
-#include <functional>
-#include <cassert>
-
-int count = 0;
-
-// 1 arg, return void
-
-void f_void_1(int i)
-{
- count += i;
-}
-
-struct A_void_1
-{
- void operator()(int i)
- {
- count += i;
- }
-
- void mem1() {++count;}
- void mem2() const {++count;}
-};
-
-void
-test_void_1()
-{
- int save_count = count;
- // function
- {
- std::function<void (int)> r1(f_void_1);
- int i = 2;
- r1(i);
- assert(count == save_count+2);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)(int) = f_void_1;
- std::function<void (int)> r1(fp);
- int i = 3;
- r1(i);
- assert(count == save_count+3);
- save_count = count;
- }
- // functor
- {
- A_void_1 a0;
- std::function<void (int)> r1(a0);
- int i = 4;
- r1(i);
- assert(count == save_count+4);
- save_count = count;
- }
- // member function pointer
- {
- void (A_void_1::*fp)() = &A_void_1::mem1;
- std::function<void (A_void_1)> r1(fp);
- A_void_1 a;
- r1(a);
- assert(count == save_count+1);
- save_count = count;
- A_void_1* ap = &a;
- std::function<void (A_void_1*)> r2 = fp;
- r2(ap);
- assert(count == save_count+1);
- save_count = count;
- }
- // const member function pointer
- {
- void (A_void_1::*fp)() const = &A_void_1::mem2;
- std::function<void (A_void_1)> r1(fp);
- A_void_1 a;
- r1(a);
- assert(count == save_count+1);
- save_count = count;
- std::function<void (A_void_1*)> r2(fp);
- A_void_1* ap = &a;
- r2(ap);
- assert(count == save_count+1);
- save_count = count;
- }
-}
-
-// 1 arg, return int
-
-int f_int_1(int i)
-{
- return i + 1;
-}
-
-struct A_int_1
-{
- A_int_1() : data_(5) {}
- int operator()(int i)
- {
- return i - 1;
- }
-
- int mem1() {return 3;}
- int mem2() const {return 4;}
- int data_;
-};
-
-void
-test_int_1()
-{
- // function
- {
- std::function<int (int)> r1(f_int_1);
- int i = 2;
- assert(r1(i) == 3);
- }
- // function pointer
- {
- int (*fp)(int) = f_int_1;
- std::function<int (int)> r1(fp);
- int i = 3;
- assert(r1(i) == 4);
- }
- // functor
- {
- A_int_1 a0;
- std::function<int (int)> r1(a0);
- int i = 4;
- assert(r1(i) == 3);
- }
- // member function pointer
- {
- int (A_int_1::*fp)() = &A_int_1::mem1;
- std::function<int (A_int_1)> r1(fp);
- A_int_1 a;
- assert(r1(a) == 3);
- std::function<int (A_int_1*)> r2(fp);
- A_int_1* ap = &a;
- assert(r2(ap) == 3);
- }
- // const member function pointer
- {
- int (A_int_1::*fp)() const = &A_int_1::mem2;
- std::function<int (A_int_1)> r1(fp);
- A_int_1 a;
- assert(r1(a) == 4);
- std::function<int (A_int_1*)> r2(fp);
- A_int_1* ap = &a;
- assert(r2(ap) == 4);
- }
- // member data pointer
- {
- int A_int_1::*fp = &A_int_1::data_;
- std::function<int& (A_int_1&)> r1(fp);
- A_int_1 a;
- assert(r1(a) == 5);
- r1(a) = 6;
- assert(r1(a) == 6);
- std::function<int& (A_int_1*)> r2(fp);
- A_int_1* ap = &a;
- assert(r2(ap) == 6);
- r2(ap) = 7;
- assert(r2(ap) == 7);
- }
-}
-
-// 2 arg, return void
-
-void f_void_2(int i, int j)
-{
- count += i+j;
-}
-
-struct A_void_2
-{
- void operator()(int i, int j)
- {
- count += i+j;
- }
-
- void mem1(int i) {count += i;}
- void mem2(int i) const {count += i;}
-};
-
-void
-test_void_2()
-{
- int save_count = count;
- // function
- {
- std::function<void (int, int)> r1(f_void_2);
- int i = 2;
- int j = 3;
- r1(i, j);
- assert(count == save_count+5);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)(int, int) = f_void_2;
- std::function<void (int, int)> r1(fp);
- int i = 3;
- int j = 4;
- r1(i, j);
- assert(count == save_count+7);
- save_count = count;
- }
- // functor
- {
- A_void_2 a0;
- std::function<void (int, int)> r1(a0);
- int i = 4;
- int j = 5;
- r1(i, j);
- assert(count == save_count+9);
- save_count = count;
- }
- // member function pointer
- {
- void (A_void_2::*fp)(int) = &A_void_2::mem1;
- std::function<void (A_void_2, int)> r1(fp);
- A_void_2 a;
- int i = 3;
- r1(a, i);
- assert(count == save_count+3);
- save_count = count;
- std::function<void (A_void_2*, int)> r2(fp);
- A_void_2* ap = &a;
- r2(ap, i);
- assert(count == save_count+3);
- save_count = count;
- }
- // const member function pointer
- {
- void (A_void_2::*fp)(int) const = &A_void_2::mem2;
- std::function<void (A_void_2, int)> r1(fp);
- A_void_2 a;
- int i = 4;
- r1(a, i);
- assert(count == save_count+4);
- save_count = count;
- std::function<void (A_void_2*, int)> r2(fp);
- A_void_2* ap = &a;
- r2(ap, i);
- assert(count == save_count+4);
- save_count = count;
- }
-}
-
-// 2 arg, return int
-
-int f_int_2(int i, int j)
-{
- return i+j;
-}
-
-struct A_int_2
-{
- int operator()(int i, int j)
- {
- return i+j;
- }
-
- int mem1(int i) {return i+1;}
- int mem2(int i) const {return i+2;}
-};
-
-void
-testint_2()
-{
- // function
- {
- std::function<int (int, int)> r1(f_int_2);
- int i = 2;
- int j = 3;
- assert(r1(i, j) == i+j);
- }
- // function pointer
- {
- int (*fp)(int, int) = f_int_2;
- std::function<int (int, int)> r1(fp);
- int i = 3;
- int j = 4;
- assert(r1(i, j) == i+j);
- }
- // functor
- {
- A_int_2 a0;
- std::function<int (int, int)> r1(a0);
- int i = 4;
- int j = 5;
- assert(r1(i, j) == i+j);
- }
- // member function pointer
- {
- int(A_int_2::*fp)(int) = &A_int_2::mem1;
- std::function<int (A_int_2, int)> r1(fp);
- A_int_2 a;
- int i = 3;
- assert(r1(a, i) == i+1);
- std::function<int (A_int_2*, int)> r2(fp);
- A_int_2* ap = &a;
- assert(r2(ap, i) == i+1);
- }
- // const member function pointer
- {
- int (A_int_2::*fp)(int) const = &A_int_2::mem2;
- std::function<int (A_int_2, int)> r1(fp);
- A_int_2 a;
- int i = 4;
- assert(r1(a, i) == i+2);
- std::function<int (A_int_2*, int)> r2(fp);
- A_int_2* ap = &a;
- assert(r2(ap, i) == i+2);
- }
-}
-
-int main()
-{
- test_void_1();
- test_int_1();
- test_void_2();
- testint_2();
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp
deleted file mode 100644
index 67b4ec22da8..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_int_0.pass.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// R operator()(ArgTypes... args) const
-
-#include <functional>
-#include <cassert>
-
-// 0 args, return int
-
-int count = 0;
-
-int f_int_0()
-{
- return 3;
-}
-
-struct A_int_0
-{
- int operator()() {return 4;}
-};
-
-void
-test_int_0()
-{
- // function
- {
- std::function<int ()> r1(f_int_0);
- assert(r1() == 3);
- }
- // function pointer
- {
- int (*fp)() = f_int_0;
- std::function<int ()> r1(fp);
- assert(r1() == 3);
- }
- // functor
- {
- A_int_0 a0;
- std::function<int ()> r1(a0);
- assert(r1() == 4);
- }
-}
-
-int main()
-{
- test_int_0();
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp
deleted file mode 100644
index a820cb1b8f3..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.inv/invoke_void_0.pass.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// R operator()(ArgTypes... args) const
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-// 0 args, return void
-
-int count = 0;
-
-void f_void_0()
-{
- ++count;
-}
-
-struct A_void_0
-{
- void operator()() {++count;}
-};
-
-void
-test_void_0()
-{
- int save_count = count;
- // function
- {
- std::function<void ()> r1(f_void_0);
- r1();
- assert(count == save_count+1);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)() = f_void_0;
- std::function<void ()> r1(fp);
- r1();
- assert(count == save_count+1);
- save_count = count;
- }
- // functor
- {
- A_void_0 a0;
- std::function<void ()> r1(a0);
- r1();
- assert(count == save_count+1);
- save_count = count;
- }
-}
-
-int main()
-{
- test_void_0();
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp
deleted file mode 100644
index e9ecfa5539c..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/assign_F_alloc.pass.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<class F, class A> void assign(F&&, const A&);
-
-#include <functional>
-#include <cassert>
-
-#include "test_allocator.h"
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int foo(int) const {return 1;}
-};
-
-int A::count = 0;
-
-int main()
-{
- {
- std::function<int(int)> f;
- f.assign(A(), test_allocator<A>());
- assert(A::count == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp
deleted file mode 100644
index 3c012d1db4f..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// void swap(function& other);
-
-// UNSUPPORTED: asan, msan
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-int new_called = 0;
-
-void* operator new(std::size_t s) throw(std::bad_alloc)
-{
- ++new_called;
- return std::malloc(s);
-}
-
-void operator delete(void* p) throw()
-{
- --new_called;
- std::free(p);
-}
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- explicit A(int j)
- {
- ++count;
- data_[0] = j;
- }
-
- A(const A& a)
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = a.data_[i];
- }
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int id() const {return data_[0];}
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-int h(int) {return 1;}
-
-int main()
-{
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = A(1);
- std::function<int(int)> f2 = A(2);
- assert(A::count == 2);
- assert(new_called == 2);
- assert(f1.target<A>()->id() == 1);
- assert(f2.target<A>()->id() == 2);
- f1.swap(f2);
- assert(A::count == 2);
- assert(new_called == 2);
- assert(f1.target<A>()->id() == 2);
- assert(f2.target<A>()->id() == 1);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = A(1);
- std::function<int(int)> f2 = g;
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f1.target<A>()->id() == 1);
- assert(*f2.target<int(*)(int)>() == g);
- f1.swap(f2);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(*f1.target<int(*)(int)>() == g);
- assert(f2.target<A>()->id() == 1);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = g;
- std::function<int(int)> f2 = A(1);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(*f1.target<int(*)(int)>() == g);
- assert(f2.target<A>()->id() == 1);
- f1.swap(f2);
- assert(A::count == 1);
- assert(new_called == 1);
- assert(f1.target<A>()->id() == 1);
- assert(*f2.target<int(*)(int)>() == g);
- }
- assert(A::count == 0);
- assert(new_called == 0);
- {
- std::function<int(int)> f1 = g;
- std::function<int(int)> f2 = h;
- assert(A::count == 0);
- assert(new_called == 0);
- assert(*f1.target<int(*)(int)>() == g);
- assert(*f2.target<int(*)(int)>() == h);
- f1.swap(f2);
- assert(A::count == 0);
- assert(new_called == 0);
- assert(*f1.target<int(*)(int)>() == h);
- assert(*f2.target<int(*)(int)>() == g);
- }
- assert(A::count == 0);
- assert(new_called == 0);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp
deleted file mode 100644
index 5bca0968702..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.nullptr/operator_==.pass.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template <MoveConstructible R, MoveConstructible ... ArgTypes>
-// bool operator==(const function<R(ArgTypes...)>&, nullptr_t);
-//
-// template <MoveConstructible R, MoveConstructible ... ArgTypes>
-// bool operator==(nullptr_t, const function<R(ArgTypes...)>&);
-//
-// template <MoveConstructible R, MoveConstructible ... ArgTypes>
-// bool operator!=(const function<R(ArgTypes...)>&, nullptr_t);
-//
-// template <MoveConstructible R, MoveConstructible ... ArgTypes>
-// bool operator!=(nullptr_t, const function<R(ArgTypes...)>&);
-
-#include <functional>
-#include <cassert>
-
-int g(int) {return 0;}
-
-int main()
-{
- {
- std::function<int(int)> f;
- assert(f == nullptr);
- assert(nullptr == f);
- f = g;
- assert(f != nullptr);
- assert(nullptr != f);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp
deleted file mode 100644
index 53476a27473..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target.pass.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// template<typename T>
-// requires Callable<T, ArgTypes...> && Convertible<Callable<T, ArgTypes...>::result_type, R>
-// T*
-// target();
-// template<typename T>
-// requires Callable<T, ArgTypes...> && Convertible<Callable<T, ArgTypes...>::result_type, R>
-// const T*
-// target() const;
-
-#include <functional>
-#include <new>
-#include <cstdlib>
-#include <cassert>
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int foo(int) const {return 1;}
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- {
- std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- {
- std::function<int(int)> f = g;
- assert(A::count == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- }
- assert(A::count == 0);
- {
- const std::function<int(int)> f = A();
- assert(A::count == 1);
- assert(f.target<A>());
- assert(f.target<int(*)(int)>() == 0);
- }
- assert(A::count == 0);
- {
- const std::function<int(int)> f = g;
- assert(A::count == 0);
- assert(f.target<int(*)(int)>());
- assert(f.target<A>() == 0);
- }
- assert(A::count == 0);
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp
deleted file mode 100644
index 7605e3bf666..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.targ/target_type.pass.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// class function<R(ArgTypes...)>
-
-// const std::type_info& target_type() const;
-
-#include <functional>
-#include <typeinfo>
-#include <cassert>
-
-class A
-{
- int data_[10];
-public:
- static int count;
-
- A()
- {
- ++count;
- for (int i = 0; i < 10; ++i)
- data_[i] = i;
- }
-
- A(const A&) {++count;}
-
- ~A() {--count;}
-
- int operator()(int i) const
- {
- for (int j = 0; j < 10; ++j)
- i += data_[j];
- return i;
- }
-
- int foo(int) const {return 1;}
-};
-
-int A::count = 0;
-
-int g(int) {return 0;}
-
-int main()
-{
- {
- std::function<int(int)> f = A();
- assert(f.target_type() == typeid(A));
- }
- {
- std::function<int(int)> f;
- assert(f.target_type() == typeid(void));
- }
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp
deleted file mode 100644
index 6c70db40810..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/func.wrap.func/types.pass.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template<Returnable R, CopyConstructible... ArgTypes>
-// class function<R(ArgTypes...)>
-// : public unary_function<T1, R> // iff sizeof...(ArgTypes) == 1 and
-// // ArgTypes contains T1
-// : public binary_function<T1, T2, R> // iff sizeof...(ArgTypes) == 2 and
-// // ArgTypes contains T1 and T2
-// {
-// public:
-// typedef R result_type;
-// ...
-// };
-
-#include <functional>
-#include <type_traits>
-
-int main()
-{
- static_assert((!std::is_base_of<std::unary_function <int, int>,
- std::function<int()> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<int, int, int>,
- std::function<int()> >::value), "");
- static_assert(( std::is_same< std::function<int()>::result_type,
- int>::value), "");
-
- static_assert(( std::is_base_of<std::unary_function <int, double>,
- std::function<double(int)> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<int, int, double>,
- std::function<double(int)> >::value), "");
- static_assert(( std::is_same< std::function<double(int)>::result_type,
- double>::value), "");
-
- static_assert((!std::is_base_of<std::unary_function <int, double>,
- std::function<double(int, char)> >::value), "");
- static_assert(( std::is_base_of<std::binary_function<int, char, double>,
- std::function<double(int, char)> >::value), "");
- static_assert(( std::is_same< std::function<double(int, char)>::result_type,
- double>::value), "");
-}
diff --git a/libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp b/libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp
deleted file mode 100644
index b58f5c55b64..00000000000
--- a/libcxx/test/utilities/function.objects/func.wrap/nothing_to_do.pass.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-int main()
-{
-}
diff --git a/libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp
deleted file mode 100644
index c7b03cce095..00000000000
--- a/libcxx/test/utilities/function.objects/logical.operations/logical_and.pass.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// logical_and
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::logical_and<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(f(36, 36));
- assert(!f(36, 0));
- assert(!f(0, 36));
- assert(!f(0, 0));
-#if _LIBCPP_STD_VER > 11
- typedef std::logical_and<> F2;
- const F2 f2 = F2();
- assert( f2(36, 36));
- assert( f2(36, 36L));
- assert( f2(36L, 36));
- assert(!f2(36, 0));
- assert(!f2(0, 36));
- assert( f2(36, 36L));
- assert(!f2(36, 0L));
- assert(!f2(0, 36L));
- assert( f2(36L, 36));
- assert(!f2(36L, 0));
- assert(!f2(0L, 36));
-
- constexpr bool foo = std::logical_and<int> () (36, 36);
- static_assert ( foo, "" );
-
- constexpr bool bar = std::logical_and<> () (36.0, 36);
- static_assert ( bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp
deleted file mode 100644
index 12b3543c5c6..00000000000
--- a/libcxx/test/utilities/function.objects/logical.operations/logical_not.pass.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// logical_not
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::logical_not<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::unary_function<int, bool>, F>::value), "");
- assert(!f(36));
- assert(f(0));
-#if _LIBCPP_STD_VER > 11
- typedef std::logical_not<> F2;
- const F2 f2 = F2();
- assert(!f2(36));
- assert( f2(0));
- assert(!f2(36L));
- assert( f2(0L));
-
- constexpr bool foo = std::logical_not<int> () (36);
- static_assert ( !foo, "" );
-
- constexpr bool bar = std::logical_not<> () (36);
- static_assert ( !bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp
deleted file mode 100644
index 8b5420d8e04..00000000000
--- a/libcxx/test/utilities/function.objects/logical.operations/logical_or.pass.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// logical_or
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::logical_or<int> F;
- const F f = F();
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(f(36, 36));
- assert(f(36, 0));
- assert(f(0, 36));
- assert(!f(0, 0));
-#if _LIBCPP_STD_VER > 11
- typedef std::logical_or<> F2;
- const F2 f2 = F2();
- assert( f2(36, 36));
- assert( f2(36, 36L));
- assert( f2(36L, 36));
- assert( f2(36, 0));
- assert( f2(0, 36));
- assert( f2(36, 0L));
- assert( f2(0, 36L));
- assert(!f2(0, 0));
- assert(!f2(0, 0L));
- assert(!f2(0L, 0));
-
- constexpr bool foo = std::logical_or<int> () (36, 36);
- static_assert ( foo, "" );
-
- constexpr bool bar = std::logical_or<> () (36.0, 36);
- static_assert ( bar, "" );
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp b/libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp
deleted file mode 100644
index 6e3b7a2eee2..00000000000
--- a/libcxx/test/utilities/function.objects/logical.operations/transparent.pass.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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.
-//
-//===----------------------------------------------------------------------===//
-
-#include <functional>
-#include <string>
-
-template <class _Tp>
-struct is_transparent
-{
-private:
- struct __two {char __lx; char __lxx;};
- template <class _Up> static __two __test(...);
- template <class _Up> static char __test(typename _Up::is_transparent* = 0);
-public:
- static const bool value = sizeof(__test<_Tp>(0)) == 1;
-};
-
-
-int main () {
-#if _LIBCPP_STD_VER > 11
-
- static_assert ( !is_transparent<std::logical_and<int>>::value, "" );
- static_assert ( !is_transparent<std::logical_and<std::string>>::value, "" );
- static_assert ( is_transparent<std::logical_and<void>>::value, "" );
- static_assert ( is_transparent<std::logical_and<>>::value, "" );
-
- static_assert ( !is_transparent<std::logical_or<int>>::value, "" );
- static_assert ( !is_transparent<std::logical_or<std::string>>::value, "" );
- static_assert ( is_transparent<std::logical_or<void>>::value, "" );
- static_assert ( is_transparent<std::logical_or<>>::value, "" );
-
- static_assert ( !is_transparent<std::logical_not<int>>::value, "" );
- static_assert ( !is_transparent<std::logical_not<std::string>>::value, "" );
- static_assert ( is_transparent<std::logical_not<void>>::value, "" );
- static_assert ( is_transparent<std::logical_not<>>::value, "" );
-
-#endif
-
- return 0;
- }
diff --git a/libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp b/libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp
deleted file mode 100644
index e30670836c5..00000000000
--- a/libcxx/test/utilities/function.objects/negators/binary_negate.pass.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// binary_negate
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::binary_negate<std::logical_and<int> > F;
- const F f = F(std::logical_and<int>());
- static_assert((std::is_base_of<std::binary_function<int, int, bool>, F>::value), "");
- assert(!f(36, 36));
- assert( f(36, 0));
- assert( f(0, 36));
- assert( f(0, 0));
-}
diff --git a/libcxx/test/utilities/function.objects/negators/not1.pass.cpp b/libcxx/test/utilities/function.objects/negators/not1.pass.cpp
deleted file mode 100644
index f6ac7a49dc0..00000000000
--- a/libcxx/test/utilities/function.objects/negators/not1.pass.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// not1
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- typedef std::logical_not<int> F;
- assert(std::not1(F())(36));
- assert(!std::not1(F())(0));
-}
diff --git a/libcxx/test/utilities/function.objects/negators/not2.pass.cpp b/libcxx/test/utilities/function.objects/negators/not2.pass.cpp
deleted file mode 100644
index 7541753d568..00000000000
--- a/libcxx/test/utilities/function.objects/negators/not2.pass.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// not2
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- typedef std::logical_and<int> F;
- assert(!std::not2(F())(36, 36));
- assert( std::not2(F())(36, 0));
- assert( std::not2(F())(0, 36));
- assert( std::not2(F())(0, 0));
-}
diff --git a/libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp b/libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp
deleted file mode 100644
index 2aa4f0ab448..00000000000
--- a/libcxx/test/utilities/function.objects/negators/unary_negate.pass.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// unary_negate
-
-#include <functional>
-#include <type_traits>
-#include <cassert>
-
-int main()
-{
- typedef std::unary_negate<std::logical_not<int> > F;
- const F f = F(std::logical_not<int>());
- static_assert((std::is_base_of<std::unary_function<int, bool>, F>::value), "");
- assert(f(36));
- assert(!f(0));
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp
deleted file mode 100644
index 579e81fe69e..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/binary.pass.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// check for deriving from binary_function
-
-#include <functional>
-#include <type_traits>
-
-class functor1
- : public std::unary_function<int, char>
-{
-};
-
-class functor2
- : public std::binary_function<char, int, double>
-{
-};
-
-class functor3
- : public std::unary_function<int, int>,
- public std::binary_function<char, int, double>
-{
-public:
- typedef float result_type;
-};
-
-class functor4
- : public std::unary_function<int, int>,
- public std::binary_function<char, int, double>
-{
-public:
-};
-
-struct C
-{
- typedef int argument_type;
- typedef int result_type;
-};
-
-int main()
-{
- static_assert((!std::is_base_of<std::binary_function<int, char, int>,
- std::reference_wrapper<functor1> >::value), "");
- static_assert((std::is_base_of<std::binary_function<char, int, double>,
- std::reference_wrapper<functor2> >::value), "");
- static_assert((std::is_base_of<std::binary_function<char, int, double>,
- std::reference_wrapper<functor3> >::value), "");
- static_assert((std::is_base_of<std::binary_function<char, int, double>,
- std::reference_wrapper<functor4> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<int, int, int>,
- std::reference_wrapper<C> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<int, int, float>,
- std::reference_wrapper<float ()> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<int, int, float>,
- std::reference_wrapper<float (int)> >::value), "");
- static_assert((std::is_base_of<std::binary_function<int, int, float>,
- std::reference_wrapper<float (int, int)> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<int, int, float>,
- std::reference_wrapper<float(*)()> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<int, int, float>,
- std::reference_wrapper<float(*)(int)> >::value), "");
- static_assert((std::is_base_of<std::binary_function<int, int, float>,
- std::reference_wrapper<float(*)(int, int)> >::value), "");
- static_assert((!std::is_base_of<std::binary_function<C*, int, float>,
- std::reference_wrapper<float(C::*)()> >::value), "");
- static_assert((std::is_base_of<std::binary_function<C*, int, float>,
- std::reference_wrapper<float(C::*)(int)> >::value), "");
- static_assert((std::is_base_of<std::binary_function<const volatile C*, int, float>,
- std::reference_wrapper<float(C::*)(int) const volatile> >::value), "");
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp
deleted file mode 100644
index df0b55a5d06..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.access/conversion.pass.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// operator T& () const;
-
-#include <functional>
-#include <cassert>
-
-class functor1
- : public std::unary_function<int, char>
-{
-};
-
-template <class T>
-void
-test(T& t)
-{
- std::reference_wrapper<T> r(t);
- T& r2 = r;
- assert(&r2 == &t);
-}
-
-void f() {}
-
-int main()
-{
- void (*fp)() = f;
- test(fp);
- test(f);
- functor1 f1;
- test(f1);
- int i = 0;
- test(i);
- const int j = 0;
- test(j);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp
deleted file mode 100644
index 122716a23a8..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.assign/copy_assign.pass.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
- : public std::unary_function<int, char>
-{
-};
-
-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);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp
deleted file mode 100644
index 721a442d443..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/copy_ctor.pass.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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(const reference_wrapper<T>& x);
-
-#include <functional>
-#include <cassert>
-
-class functor1
- : public std::unary_function<int, char>
-{
-};
-
-template <class T>
-void
-test(T& t)
-{
- std::reference_wrapper<T> r(t);
- std::reference_wrapper<T> r2 = r;
- assert(&r2.get() == &t);
-}
-
-void f() {}
-
-int main()
-{
- void (*fp)() = f;
- test(fp);
- test(f);
- functor1 f1;
- test(f1);
- int i = 0;
- test(i);
- const int j = 0;
- test(j);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp
deleted file mode 100644
index ba46946aae1..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.fail.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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(T&&) = delete;
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- std::reference_wrapper<const int> r(3);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp
deleted file mode 100644
index 564a3f77433..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.const/type_ctor.pass.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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(T& t);
-
-#include <functional>
-#include <cassert>
-
-class functor1
- : public std::unary_function<int, char>
-{
-};
-
-template <class T>
-void
-test(T& t)
-{
- std::reference_wrapper<T> r(t);
- assert(&r.get() == &t);
-}
-
-void f() {}
-
-int main()
-{
- void (*fp)() = f;
- test(fp);
- test(f);
- functor1 f1;
- test(f1);
- int i = 0;
- test(i);
- const int j = 0;
- test(j);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp
deleted file mode 100644
index f2ffd44e26b..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_1.pass.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <ObjectType T> reference_wrapper<const T> cref(const T& t);
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- int i = 0;
- std::reference_wrapper<const int> r = std::cref(i);
- assert(&r.get() == &i);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp
deleted file mode 100644
index 75875264479..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/cref_2.pass.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <ObjectType T> reference_wrapper<const T> cref(reference_wrapper<T> t);
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- const int i = 0;
- std::reference_wrapper<const int> r1 = std::cref(i);
- std::reference_wrapper<const int> r2 = std::cref(r1);
- assert(&r2.get() == &i);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp
deleted file mode 100644
index 86a5696f48c..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.fail.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <ObjectType T> reference_wrapper<T> ref(T& t);
-
-// Don't allow binding to a temp
-
-#include <functional>
-
-struct A {};
-
-const A source() {return A();}
-
-int main()
-{
- std::reference_wrapper<const A> r = std::ref(source());
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp
deleted file mode 100644
index 39aa4843a71..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_1.pass.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <ObjectType T> reference_wrapper<T> ref(T& t);
-
-#include <functional>
-#include <cassert>
-
-int main()
-{
- int i = 0;
- std::reference_wrapper<int> r = std::ref(i);
- assert(&r.get() == &i);
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp
deleted file mode 100644
index 4033e676f01..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.helpers/ref_2.pass.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <ObjectType T> reference_wrapper<T> ref(reference_wrapper<T>t);
-
-#include <functional>
-#include <cassert>
-
-#include "counting_predicates.hpp"
-
-bool is5 ( int i ) { return i == 5; }
-
-template <typename T>
-bool call_pred ( T pred ) { return pred(5); }
-
-int main()
-{
- {
- int i = 0;
- std::reference_wrapper<int> r1 = std::ref(i);
- std::reference_wrapper<int> r2 = std::ref(r1);
- assert(&r2.get() == &i);
- }
- {
- unary_counting_predicate<bool(*)(int), int> cp(is5);
- assert(!cp(6));
- assert(cp.count() == 1);
- assert(call_pred(cp));
- assert(cp.count() == 1);
- assert(call_pred(std::ref(cp)));
- assert(cp.count() == 2);
- }
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp
deleted file mode 100644
index 551562721e3..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.fail.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <class... ArgTypes>
-// requires Callable<T, ArgTypes&&...>
-// Callable<T, ArgTypes&&...>::result_type
-// operator()(ArgTypes&&... args) const;
-
-#include <functional>
-#include <cassert>
-
-// member data pointer: cv qualifiers should transfer from argument to return type
-
-struct A_int_1
-{
- A_int_1() : data_(5) {}
-
- int data_;
-};
-
-void
-test_int_1()
-{
- // member data pointer
- {
- int A_int_1::*fp = &A_int_1::data_;
- std::reference_wrapper<int A_int_1::*> r1(fp);
- A_int_1 a;
- assert(r1(a) == 5);
- r1(a) = 6;
- assert(r1(a) == 6);
- const A_int_1* ap = &a;
- assert(r1(ap) == 6);
- r1(ap) = 7;
- assert(r1(ap) == 7);
- }
-}
-
-int main()
-{
- test_int_1();
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp
deleted file mode 100644
index a9edf00ee59..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke.pass.cpp
+++ /dev/null
@@ -1,329 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <class... ArgTypes>
-// requires Callable<T, ArgTypes&&...>
-// Callable<T, ArgTypes&&...>::result_type
-// operator()(ArgTypes&&... args) const;
-
-#include <functional>
-#include <cassert>
-
-int count = 0;
-
-// 1 arg, return void
-
-void f_void_1(int i)
-{
- count += i;
-}
-
-struct A_void_1
-{
- void operator()(int i)
- {
- count += i;
- }
-
- void mem1() {++count;}
- void mem2() const {++count;}
-};
-
-void
-test_void_1()
-{
- int save_count = count;
- // function
- {
- std::reference_wrapper<void (int)> r1(f_void_1);
- int i = 2;
- r1(i);
- assert(count == save_count+2);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)(int) = f_void_1;
- std::reference_wrapper<void (*)(int)> r1(fp);
- int i = 3;
- r1(i);
- assert(count == save_count+3);
- save_count = count;
- }
- // functor
- {
- A_void_1 a0;
- std::reference_wrapper<A_void_1> r1(a0);
- int i = 4;
- r1(i);
- assert(count == save_count+4);
- save_count = count;
- }
- // member function pointer
- {
- void (A_void_1::*fp)() = &A_void_1::mem1;
- std::reference_wrapper<void (A_void_1::*)()> r1(fp);
- A_void_1 a;
- r1(a);
- assert(count == save_count+1);
- save_count = count;
- A_void_1* ap = &a;
- r1(ap);
- assert(count == save_count+1);
- save_count = count;
- }
- // const member function pointer
- {
- void (A_void_1::*fp)() const = &A_void_1::mem2;
- std::reference_wrapper<void (A_void_1::*)() const> r1(fp);
- A_void_1 a;
- r1(a);
- assert(count == save_count+1);
- save_count = count;
- A_void_1* ap = &a;
- r1(ap);
- assert(count == save_count+1);
- save_count = count;
- }
-}
-
-// 1 arg, return int
-
-int f_int_1(int i)
-{
- return i + 1;
-}
-
-struct A_int_1
-{
- A_int_1() : data_(5) {}
- int operator()(int i)
- {
- return i - 1;
- }
-
- int mem1() {return 3;}
- int mem2() const {return 4;}
- int data_;
-};
-
-void
-test_int_1()
-{
- // function
- {
- std::reference_wrapper<int (int)> r1(f_int_1);
- int i = 2;
- assert(r1(i) == 3);
- }
- // function pointer
- {
- int (*fp)(int) = f_int_1;
- std::reference_wrapper<int (*)(int)> r1(fp);
- int i = 3;
- assert(r1(i) == 4);
- }
- // functor
- {
- A_int_1 a0;
- std::reference_wrapper<A_int_1> r1(a0);
- int i = 4;
- assert(r1(i) == 3);
- }
- // member function pointer
- {
- int (A_int_1::*fp)() = &A_int_1::mem1;
- std::reference_wrapper<int (A_int_1::*)()> r1(fp);
- A_int_1 a;
- assert(r1(a) == 3);
- A_int_1* ap = &a;
- assert(r1(ap) == 3);
- }
- // const member function pointer
- {
- int (A_int_1::*fp)() const = &A_int_1::mem2;
- std::reference_wrapper<int (A_int_1::*)() const> r1(fp);
- A_int_1 a;
- assert(r1(a) == 4);
- A_int_1* ap = &a;
- assert(r1(ap) == 4);
- }
- // member data pointer
- {
- int A_int_1::*fp = &A_int_1::data_;
- std::reference_wrapper<int A_int_1::*> r1(fp);
- A_int_1 a;
- assert(r1(a) == 5);
- r1(a) = 6;
- assert(r1(a) == 6);
- A_int_1* ap = &a;
- assert(r1(ap) == 6);
- r1(ap) = 7;
- assert(r1(ap) == 7);
- }
-}
-
-// 2 arg, return void
-
-void f_void_2(int i, int j)
-{
- count += i+j;
-}
-
-struct A_void_2
-{
- void operator()(int i, int j)
- {
- count += i+j;
- }
-
- void mem1(int i) {count += i;}
- void mem2(int i) const {count += i;}
-};
-
-void
-test_void_2()
-{
- int save_count = count;
- // function
- {
- std::reference_wrapper<void (int, int)> r1(f_void_2);
- int i = 2;
- int j = 3;
- r1(i, j);
- assert(count == save_count+5);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)(int, int) = f_void_2;
- std::reference_wrapper<void (*)(int, int)> r1(fp);
- int i = 3;
- int j = 4;
- r1(i, j);
- assert(count == save_count+7);
- save_count = count;
- }
- // functor
- {
- A_void_2 a0;
- std::reference_wrapper<A_void_2> r1(a0);
- int i = 4;
- int j = 5;
- r1(i, j);
- assert(count == save_count+9);
- save_count = count;
- }
- // member function pointer
- {
- void (A_void_2::*fp)(int) = &A_void_2::mem1;
- std::reference_wrapper<void (A_void_2::*)(int)> r1(fp);
- A_void_2 a;
- int i = 3;
- r1(a, i);
- assert(count == save_count+3);
- save_count = count;
- A_void_2* ap = &a;
- r1(ap, i);
- assert(count == save_count+3);
- save_count = count;
- }
- // const member function pointer
- {
- void (A_void_2::*fp)(int) const = &A_void_2::mem2;
- std::reference_wrapper<void (A_void_2::*)(int) const> r1(fp);
- A_void_2 a;
- int i = 4;
- r1(a, i);
- assert(count == save_count+4);
- save_count = count;
- A_void_2* ap = &a;
- r1(ap, i);
- assert(count == save_count+4);
- save_count = count;
- }
-}
-
-// 2 arg, return int
-
-int f_int_2(int i, int j)
-{
- return i+j;
-}
-
-struct A_int_2
-{
- int operator()(int i, int j)
- {
- return i+j;
- }
-
- int mem1(int i) {return i+1;}
- int mem2(int i) const {return i+2;}
-};
-
-void
-testint_2()
-{
- // function
- {
- std::reference_wrapper<int (int, int)> r1(f_int_2);
- int i = 2;
- int j = 3;
- assert(r1(i, j) == i+j);
- }
- // function pointer
- {
- int (*fp)(int, int) = f_int_2;
- std::reference_wrapper<int (*)(int, int)> r1(fp);
- int i = 3;
- int j = 4;
- assert(r1(i, j) == i+j);
- }
- // functor
- {
- A_int_2 a0;
- std::reference_wrapper<A_int_2> r1(a0);
- int i = 4;
- int j = 5;
- assert(r1(i, j) == i+j);
- }
- // member function pointer
- {
- int(A_int_2::*fp)(int) = &A_int_2::mem1;
- std::reference_wrapper<int (A_int_2::*)(int)> r1(fp);
- A_int_2 a;
- int i = 3;
- assert(r1(a, i) == i+1);
- A_int_2* ap = &a;
- assert(r1(ap, i) == i+1);
- }
- // const member function pointer
- {
- int (A_int_2::*fp)(int) const = &A_int_2::mem2;
- std::reference_wrapper<int (A_int_2::*)(int) const> r1(fp);
- A_int_2 a;
- int i = 4;
- assert(r1(a, i) == i+2);
- A_int_2* ap = &a;
- assert(r1(ap, i) == i+2);
- }
-}
-
-int main()
-{
- test_void_1();
- test_int_1();
- test_void_2();
- testint_2();
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp
deleted file mode 100644
index 61357a7fa39..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_int_0.pass.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <class... ArgTypes>
-// requires Callable<T, ArgTypes&&...>
-// Callable<T, ArgTypes&&...>::result_type
-// operator()(ArgTypes&&... args) const;
-
-#include <functional>
-#include <cassert>
-
-// 0 args, return int
-
-int count = 0;
-
-int f_int_0()
-{
- return 3;
-}
-
-struct A_int_0
-{
- int operator()() {return 4;}
-};
-
-void
-test_int_0()
-{
- // function
- {
- std::reference_wrapper<int ()> r1(f_int_0);
- assert(r1() == 3);
- }
- // function pointer
- {
- int (*fp)() = f_int_0;
- std::reference_wrapper<int (*)()> r1(fp);
- assert(r1() == 3);
- }
- // functor
- {
- A_int_0 a0;
- std::reference_wrapper<A_int_0> r1(a0);
- assert(r1() == 4);
- }
-}
-
-// 1 arg, return void
-
-void f_void_1(int i)
-{
- count += i;
-}
-
-struct A_void_1
-{
- void operator()(int i)
- {
- count += i;
- }
-};
-
-int main()
-{
- test_int_0();
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp
deleted file mode 100644
index 8d700508cdc..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/refwrap.invoke/invoke_void_0.pass.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// template <class... ArgTypes>
-// requires Callable<T, ArgTypes&&...>
-// Callable<T, ArgTypes&&...>::result_type
-// operator()(ArgTypes&&... args) const;
-
-#include <functional>
-#include <cassert>
-
-// 0 args, return void
-
-int count = 0;
-
-void f_void_0()
-{
- ++count;
-}
-
-struct A_void_0
-{
- void operator()() {++count;}
-};
-
-void
-test_void_0()
-{
- int save_count = count;
- // function
- {
- std::reference_wrapper<void ()> r1(f_void_0);
- r1();
- assert(count == save_count+1);
- save_count = count;
- }
- // function pointer
- {
- void (*fp)() = f_void_0;
- std::reference_wrapper<void (*)()> r1(fp);
- r1();
- assert(count == save_count+1);
- save_count = count;
- }
- // functor
- {
- A_void_0 a0;
- std::reference_wrapper<A_void_0> r1(a0);
- r1();
- assert(count == save_count+1);
- save_count = count;
- }
-}
-
-int main()
-{
- test_void_0();
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/type.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/type.pass.cpp
deleted file mode 100644
index 68e40679814..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/type.pass.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// check for member typedef type
-
-#include <functional>
-#include <type_traits>
-
-class C {};
-
-int main()
-{
- static_assert((std::is_same<std::reference_wrapper<C>::type,
- C>::value), "");
- static_assert((std::is_same<std::reference_wrapper<void ()>::type,
- void ()>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int* (double*)>::type,
- int* (double*)>::value), "");
- static_assert((std::is_same<std::reference_wrapper<void(*)()>::type,
- void(*)()>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int*(*)(double*)>::type,
- int*(*)(double*)>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int*(C::*)(double*)>::type,
- int*(C::*)(double*)>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int (C::*)(double*) const volatile>::type,
- int (C::*)(double*) const volatile>::value), "");
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/type_properties.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/type_properties.pass.cpp
deleted file mode 100644
index 61e0bfa162d..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/type_properties.pass.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// Test that reference wrapper meets the requirements of TriviallyCopyable,
-// CopyConstructible and CopyAssignable.
-
-#include <functional>
-#include <type_traits>
-#include <string>
-
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
-class MoveOnly
-{
- MoveOnly(const MoveOnly&);
- MoveOnly& operator=(const MoveOnly&);
-
- int data_;
-public:
- MoveOnly(int data = 1) : data_(data) {}
- MoveOnly(MoveOnly&& x)
- : data_(x.data_) {x.data_ = 0;}
- MoveOnly& operator=(MoveOnly&& x)
- {data_ = x.data_; x.data_ = 0; return *this;}
-
- int get() const {return data_;}
-};
-#endif
-
-
-template <class T>
-void test()
-{
- typedef std::reference_wrapper<T> Wrap;
- static_assert(std::is_copy_constructible<Wrap>::value, "");
- static_assert(std::is_copy_assignable<Wrap>::value, "");
- // Extension up for standardization: See N4151.
- static_assert(std::is_trivially_copyable<Wrap>::value, "");
-}
-
-int main()
-{
- test<int>();
- test<double>();
- test<std::string>();
-#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
- test<MoveOnly>();
-#endif
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp
deleted file mode 100644
index 528a8f327d9..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/unary.pass.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// check for deriving from unary_function
-
-#include <functional>
-#include <type_traits>
-
-class functor1
- : public std::unary_function<int, char>
-{
-};
-
-class functor2
- : public std::binary_function<char, int, double>
-{
-};
-
-class functor3
- : public std::unary_function<int, int>,
- public std::binary_function<char, int, double>
-{
-public:
- typedef float result_type;
-};
-
-class functor4
- : public std::unary_function<int, int>,
- public std::binary_function<char, int, double>
-{
-public:
-};
-
-struct C
-{
- typedef int argument_type;
- typedef int result_type;
-};
-
-int main()
-{
- static_assert((std::is_base_of<std::unary_function<int, char>,
- std::reference_wrapper<functor1> >::value), "");
- static_assert((!std::is_base_of<std::unary_function<char, int>,
- std::reference_wrapper<functor2> >::value), "");
- static_assert((std::is_base_of<std::unary_function<int, int>,
- std::reference_wrapper<functor3> >::value), "");
- static_assert((std::is_base_of<std::unary_function<int, int>,
- std::reference_wrapper<functor4> >::value), "");
- static_assert((!std::is_base_of<std::unary_function<int, int>,
- std::reference_wrapper<C> >::value), "");
- static_assert((!std::is_base_of<std::unary_function<int, float>,
- std::reference_wrapper<float(*)()> >::value), "");
- static_assert((std::is_base_of<std::unary_function<int, float>,
- std::reference_wrapper<float (int)> >::value), "");
- static_assert((!std::is_base_of<std::unary_function<int, float>,
- std::reference_wrapper<float (int, int)> >::value), "");
- static_assert((std::is_base_of<std::unary_function<int, float>,
- std::reference_wrapper<float(*)(int)> >::value), "");
- static_assert((!std::is_base_of<std::unary_function<int, float>,
- std::reference_wrapper<float(*)(int, int)> >::value), "");
- static_assert((std::is_base_of<std::unary_function<C*, float>,
- std::reference_wrapper<float(C::*)()> >::value), "");
- static_assert((std::is_base_of<std::unary_function<const volatile C*, float>,
- std::reference_wrapper<float(C::*)() const volatile> >::value), "");
- static_assert((!std::is_base_of<std::unary_function<C*, float>,
- std::reference_wrapper<float(C::*)(int)> >::value), "");
-}
diff --git a/libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp b/libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp
deleted file mode 100644
index 609094dae40..00000000000
--- a/libcxx/test/utilities/function.objects/refwrap/weak_result.pass.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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
-
-// has weak result type
-
-#include <functional>
-#include <type_traits>
-
-class functor1
- : public std::unary_function<int, char>
-{
-};
-
-class functor2
- : public std::binary_function<char, int, double>
-{
-};
-
-class functor3
- : public std::unary_function<char, int>,
- public std::binary_function<char, int, double>
-{
-public:
- typedef float result_type;
-};
-
-class functor4
- : public std::unary_function<char, int>,
- public std::binary_function<char, int, double>
-{
-public:
-};
-
-class C {};
-
-template <class T>
-struct has_result_type
-{
-private:
- struct two {char _; char __;};
- template <class U> static two test(...);
- template <class U> static char test(typename U::result_type* = 0);
-public:
- static const bool value = sizeof(test<T>(0)) == 1;
-};
-
-int main()
-{
- static_assert((std::is_same<std::reference_wrapper<functor1>::result_type,
- char>::value), "");
- static_assert((std::is_same<std::reference_wrapper<functor2>::result_type,
- double>::value), "");
- static_assert((std::is_same<std::reference_wrapper<functor3>::result_type,
- float>::value), "");
- static_assert((std::is_same<std::reference_wrapper<void()>::result_type,
- void>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int*(double*)>::result_type,
- int*>::value), "");
- static_assert((std::is_same<std::reference_wrapper<void(*)()>::result_type,
- void>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int*(*)(double*)>::result_type,
- int*>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int*(C::*)(double*)>::result_type,
- int*>::value), "");
- static_assert((std::is_same<std::reference_wrapper<int (C::*)(double*) const volatile>::result_type,
- int>::value), "");
- static_assert((std::is_same<std::reference_wrapper<C()>::result_type,
- C>::value), "");
- static_assert(has_result_type<std::reference_wrapper<functor3> >::value, "");
- static_assert(!has_result_type<std::reference_wrapper<functor4> >::value, "");
- static_assert(!has_result_type<std::reference_wrapper<C> >::value, "");
-}
diff --git a/libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp b/libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp
deleted file mode 100644
index 9e44bfb7781..00000000000
--- a/libcxx/test/utilities/function.objects/unord.hash/enum.fail.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// Hashing a struct w/o a defined hash should fail.
-
-#include <functional>
-#include <cassert>
-#include <type_traits>
-
-struct X {};
-
-int main()
-{
- X x;
- size_t h = std::hash<X>{} ( x );
-}
diff --git a/libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp
deleted file mode 100644
index b5cd6f8454d..00000000000
--- a/libcxx/test/utilities/function.objects/unord.hash/enum.pass.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// make sure that we can hash enumeration values
-// Not very portable
-
-#include <__config>
-
-#if _LIBCPP_STD_VER > 11
-
-#include <functional>
-#include <cassert>
-#include <type_traits>
-#include <limits>
-
-enum class Colors { red, orange, yellow, green, blue, indigo, violet };
-enum class Cardinals { zero, one, two, three, five=5 };
-enum class LongColors : short { red, orange, yellow, green, blue, indigo, violet };
-enum class ShortColors : long { red, orange, yellow, green, blue, indigo, violet };
-enum class EightBitColors : uint8_t { red, orange, yellow, green, blue, indigo, violet };
-
-enum Fruits { apple, pear, grape, mango, cantaloupe };
-
-template <class T>
-void
-test()
-{
- static_assert((std::is_base_of<std::unary_function<T, std::size_t>,
- std::hash<T> >::value), "");
- typedef typename std::underlying_type<T>::type under_type;
-
- std::hash<T> h1;
- std::hash<under_type> h2;
- for (int i = 0; i <= 5; ++i)
- {
- T t(static_cast<T> (i));
- if (sizeof(T) <= sizeof(std::size_t))
- assert(h1(t) == h2(static_cast<under_type>(i)));
- }
-}
-
-int main()
-{
- test<Cardinals>();
-
- test<Colors>();
- test<ShortColors>();
- test<LongColors>();
- test<EightBitColors>();
-
- test<Fruits>();
-}
-#else
-int main () {}
-#endif
diff --git a/libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp
deleted file mode 100644
index 988950d4dc9..00000000000
--- a/libcxx/test/utilities/function.objects/unord.hash/floating.pass.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template <class T>
-// struct hash
-// : public unary_function<T, size_t>
-// {
-// size_t operator()(T val) const;
-// };
-
-// Not very portable
-
-#include <functional>
-#include <cassert>
-#include <type_traits>
-#include <limits>
-#include <cmath>
-
-template <class T>
-void
-test()
-{
- static_assert((std::is_base_of<std::unary_function<T, std::size_t>,
- std::hash<T> >::value), "");
- std::hash<T> h;
- std::size_t t0 = h(0.);
- std::size_t tn0 = h(-0.);
- std::size_t tp1 = h(0.1);
- std::size_t t1 = h(1);
- std::size_t tn1 = h(-1);
- std::size_t pinf = h(INFINITY);
- std::size_t ninf = h(-INFINITY);
- assert(t0 == tn0);
- assert(t0 != tp1);
- assert(t0 != t1);
- assert(t0 != tn1);
- assert(t0 != pinf);
- assert(t0 != ninf);
-
- assert(tp1 != t1);
- assert(tp1 != tn1);
- assert(tp1 != pinf);
- assert(tp1 != ninf);
-
- assert(t1 != tn1);
- assert(t1 != pinf);
- assert(t1 != ninf);
-
- assert(tn1 != pinf);
- assert(tn1 != ninf);
-
- assert(pinf != ninf);
-}
-
-int main()
-{
- test<float>();
- test<double>();
- test<long double>();
-}
diff --git a/libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp
deleted file mode 100644
index e5f7ca61624..00000000000
--- a/libcxx/test/utilities/function.objects/unord.hash/integral.pass.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template <class T>
-// struct hash
-// : public unary_function<T, size_t>
-// {
-// size_t operator()(T val) const;
-// };
-
-// Not very portable
-
-#include <functional>
-#include <cassert>
-#include <type_traits>
-#include <limits>
-
-template <class T>
-void
-test()
-{
- static_assert((std::is_base_of<std::unary_function<T, std::size_t>,
- std::hash<T> >::value), "");
- std::hash<T> h;
- for (int i = 0; i <= 5; ++i)
- {
- T t(i);
- if (sizeof(T) <= sizeof(std::size_t))
- assert(h(t) == t);
- }
-}
-
-int main()
-{
- test<bool>();
- test<char>();
- test<signed char>();
- test<unsigned char>();
- test<char16_t>();
- test<char32_t>();
- test<wchar_t>();
- test<short>();
- test<unsigned short>();
- test<int>();
- test<unsigned int>();
- test<long>();
- test<unsigned long>();
- test<long long>();
- test<unsigned long long>();
-}
diff --git a/libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp b/libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp
deleted file mode 100644
index e4e011295c9..00000000000
--- a/libcxx/test/utilities/function.objects/unord.hash/pointer.pass.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-// template <class T>
-// struct hash
-// : public unary_function<T, size_t>
-// {
-// size_t operator()(T val) const;
-// };
-
-// Not very portable
-
-#include <functional>
-#include <cassert>
-#include <type_traits>
-#include <limits>
-
-template <class T>
-void
-test()
-{
- static_assert((std::is_base_of<std::unary_function<T, std::size_t>,
- std::hash<T> >::value), "");
- std::hash<T> h;
- typedef typename std::remove_pointer<T>::type type;
- type i;
- type j;
- assert(h(&i) != h(&j));
-}
-
-int main()
-{
- test<int*>();
-}
diff --git a/libcxx/test/utilities/function.objects/version.pass.cpp b/libcxx/test/utilities/function.objects/version.pass.cpp
deleted file mode 100644
index 99d731a7454..00000000000
--- a/libcxx/test/utilities/function.objects/version.pass.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// 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>
-
-#include <functional>
-
-#ifndef _LIBCPP_VERSION
-#error _LIBCPP_VERSION not defined
-#endif
-
-int main()
-{
-}
OpenPOWER on IntegriCloud