]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp
Vendor import of libc++ trunk r302418:
[FreeBSD/FreeBSD.git] / test / std / utilities / any / any.class / any.modifiers / reset.pass.cpp
1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // UNSUPPORTED: c++98, c++03, c++11, c++14
11
12 // XFAIL: with_system_cxx_lib=macosx10.12
13 // XFAIL: with_system_cxx_lib=macosx10.11
14 // XFAIL: with_system_cxx_lib=macosx10.10
15 // XFAIL: with_system_cxx_lib=macosx10.9
16 // XFAIL: with_system_cxx_lib=macosx10.7
17 // XFAIL: with_system_cxx_lib=macosx10.8
18
19 // <any>
20
21 // any::reset() noexcept
22
23 #include <any>
24 #include <cassert>
25
26 #include "any_helpers.h"
27
28 int main()
29 {
30     using std::any;
31     using std::any_cast;
32     // empty
33     {
34         any a;
35
36         // noexcept check
37         static_assert(
38             noexcept(a.reset())
39           , "any.reset() must be noexcept"
40           );
41
42         assertEmpty(a);
43
44         a.reset();
45
46         assertEmpty(a);
47     }
48     // small object
49     {
50         any a((small(1)));
51         assert(small::count == 1);
52         assertContains<small>(a, 1);
53
54         a.reset();
55
56         assertEmpty<small>(a);
57         assert(small::count == 0);
58     }
59     // large object
60     {
61         any a(large(1));
62         assert(large::count == 1);
63         assertContains<large>(a, 1);
64
65         a.reset();
66
67         assertEmpty<large>(a);
68         assert(large::count == 0);
69     }
70 }