1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // XFAIL: libcpp-no-exceptions
11 // UNSUPPORTED: libcpp-has-no-threads
12 // UNSUPPORTED: c++98, c++03
18 // promise& operator=(promise&& rhs);
23 #include "test_allocator.h"
27 assert(test_alloc_base::alloc_count == 0);
29 std::promise<int> p0(std::allocator_arg, test_allocator<int>());
30 std::promise<int> p(std::allocator_arg, test_allocator<int>());
31 assert(test_alloc_base::alloc_count == 2);
33 assert(test_alloc_base::alloc_count == 1);
34 std::future<int> f = p.get_future();
35 assert(test_alloc_base::alloc_count == 1);
42 catch (const std::future_error& e)
44 assert(e.code() == make_error_code(std::future_errc::no_state));
46 assert(test_alloc_base::alloc_count == 1);
48 assert(test_alloc_base::alloc_count == 0);
50 std::promise<int&> p0(std::allocator_arg, test_allocator<int>());
51 std::promise<int&> p(std::allocator_arg, test_allocator<int>());
52 assert(test_alloc_base::alloc_count == 2);
54 assert(test_alloc_base::alloc_count == 1);
55 std::future<int&> f = p.get_future();
56 assert(test_alloc_base::alloc_count == 1);
63 catch (const std::future_error& e)
65 assert(e.code() == make_error_code(std::future_errc::no_state));
67 assert(test_alloc_base::alloc_count == 1);
69 assert(test_alloc_base::alloc_count == 0);
71 std::promise<void> p0(std::allocator_arg, test_allocator<void>());
72 std::promise<void> p(std::allocator_arg, test_allocator<void>());
73 assert(test_alloc_base::alloc_count == 2);
75 assert(test_alloc_base::alloc_count == 1);
76 std::future<void> f = p.get_future();
77 assert(test_alloc_base::alloc_count == 1);
84 catch (const std::future_error& e)
86 assert(e.code() == make_error_code(std::future_errc::no_state));
88 assert(test_alloc_base::alloc_count == 1);
90 assert(test_alloc_base::alloc_count == 0);