1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // UNSUPPORTED: no-threads
16 // void swap(promise& other);
18 // template <class R> void swap(promise<R>& x, promise<R>& y);
23 #include "test_macros.h"
24 #include "test_allocator.h"
28 test_allocator_statistics alloc_stats
;
29 assert(alloc_stats
.alloc_count
== 0);
31 std::promise
<int> p0(std::allocator_arg
, test_allocator
<int>(&alloc_stats
));
32 std::promise
<int> p(std::allocator_arg
, test_allocator
<int>(&alloc_stats
));
33 assert(alloc_stats
.alloc_count
== 2);
35 assert(alloc_stats
.alloc_count
== 2);
36 std::future
<int> f
= p
.get_future();
37 assert(alloc_stats
.alloc_count
== 2);
41 assert(alloc_stats
.alloc_count
== 2);
43 assert(alloc_stats
.alloc_count
== 0);
45 std::promise
<int> p0(std::allocator_arg
, test_allocator
<int>(&alloc_stats
));
46 std::promise
<int> p(std::allocator_arg
, test_allocator
<int>(&alloc_stats
));
47 assert(alloc_stats
.alloc_count
== 2);
49 assert(alloc_stats
.alloc_count
== 2);
50 std::future
<int> f
= p
.get_future();
51 assert(alloc_stats
.alloc_count
== 2);
55 assert(alloc_stats
.alloc_count
== 2);
57 assert(alloc_stats
.alloc_count
== 0);
59 std::promise
<int> p0(std::allocator_arg
, test_allocator
<int>(&alloc_stats
));
61 assert(alloc_stats
.alloc_count
== 1);
63 assert(alloc_stats
.alloc_count
== 1);
64 std::future
<int> f
= p
.get_future();
65 assert(alloc_stats
.alloc_count
== 1);
69 assert(alloc_stats
.alloc_count
== 1);
71 assert(alloc_stats
.alloc_count
== 0);
73 std::promise
<int> p0(std::allocator_arg
, test_allocator
<int>(&alloc_stats
));
75 assert(alloc_stats
.alloc_count
== 1);
77 assert(alloc_stats
.alloc_count
== 1);
78 std::future
<int> f
= p
.get_future();
79 assert(alloc_stats
.alloc_count
== 1);
83 assert(alloc_stats
.alloc_count
== 1);
85 assert(alloc_stats
.alloc_count
== 0);