diff options
Diffstat (limited to 'libcxx/test/utilities/function.objects')
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() -{ -} |