1 //===----------------------------------------------------------------------===//
2 //
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
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // WARNING: This test was generated by generate_feature_test_macro_components.py
10 // and should not be edited manually.
11 //
12 // clang-format off
13 
14 // UNSUPPORTED: no-threads
15 
16 // <shared_mutex>
17 
18 // Test the feature test macros defined by <shared_mutex>
19 
20 /*  Constant                        Value
21     __cpp_lib_shared_mutex          201505L [C++17]
22     __cpp_lib_shared_timed_mutex    201402L [C++14]
23 */
24 
25 #include <shared_mutex>
26 #include "test_macros.h"
27 
28 #if TEST_STD_VER < 14
29 
30 # ifdef __cpp_lib_shared_mutex
31 #   error "__cpp_lib_shared_mutex should not be defined before c++17"
32 # endif
33 
34 # ifdef __cpp_lib_shared_timed_mutex
35 #   error "__cpp_lib_shared_timed_mutex should not be defined before c++14"
36 # endif
37 
38 #elif TEST_STD_VER == 14
39 
40 # ifdef __cpp_lib_shared_mutex
41 #   error "__cpp_lib_shared_mutex should not be defined before c++17"
42 # endif
43 
44 # if _LIBCPP_HAS_THREADS
45 #   ifndef __cpp_lib_shared_timed_mutex
46 #     error "__cpp_lib_shared_timed_mutex should be defined in c++14"
47 #   endif
48 #   if __cpp_lib_shared_timed_mutex != 201402L
49 #     error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++14"
50 #   endif
51 # else
52 #   ifdef __cpp_lib_shared_timed_mutex
53 #     error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
54 #   endif
55 # endif
56 
57 #elif TEST_STD_VER == 17
58 
59 # if _LIBCPP_HAS_THREADS
60 #   ifndef __cpp_lib_shared_mutex
61 #     error "__cpp_lib_shared_mutex should be defined in c++17"
62 #   endif
63 #   if __cpp_lib_shared_mutex != 201505L
64 #     error "__cpp_lib_shared_mutex should have the value 201505L in c++17"
65 #   endif
66 # else
67 #   ifdef __cpp_lib_shared_mutex
68 #     error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
69 #   endif
70 # endif
71 
72 # if _LIBCPP_HAS_THREADS
73 #   ifndef __cpp_lib_shared_timed_mutex
74 #     error "__cpp_lib_shared_timed_mutex should be defined in c++17"
75 #   endif
76 #   if __cpp_lib_shared_timed_mutex != 201402L
77 #     error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++17"
78 #   endif
79 # else
80 #   ifdef __cpp_lib_shared_timed_mutex
81 #     error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
82 #   endif
83 # endif
84 
85 #elif TEST_STD_VER == 20
86 
87 # if _LIBCPP_HAS_THREADS
88 #   ifndef __cpp_lib_shared_mutex
89 #     error "__cpp_lib_shared_mutex should be defined in c++20"
90 #   endif
91 #   if __cpp_lib_shared_mutex != 201505L
92 #     error "__cpp_lib_shared_mutex should have the value 201505L in c++20"
93 #   endif
94 # else
95 #   ifdef __cpp_lib_shared_mutex
96 #     error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
97 #   endif
98 # endif
99 
100 # if _LIBCPP_HAS_THREADS
101 #   ifndef __cpp_lib_shared_timed_mutex
102 #     error "__cpp_lib_shared_timed_mutex should be defined in c++20"
103 #   endif
104 #   if __cpp_lib_shared_timed_mutex != 201402L
105 #     error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++20"
106 #   endif
107 # else
108 #   ifdef __cpp_lib_shared_timed_mutex
109 #     error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
110 #   endif
111 # endif
112 
113 #elif TEST_STD_VER == 23
114 
115 # if _LIBCPP_HAS_THREADS
116 #   ifndef __cpp_lib_shared_mutex
117 #     error "__cpp_lib_shared_mutex should be defined in c++23"
118 #   endif
119 #   if __cpp_lib_shared_mutex != 201505L
120 #     error "__cpp_lib_shared_mutex should have the value 201505L in c++23"
121 #   endif
122 # else
123 #   ifdef __cpp_lib_shared_mutex
124 #     error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
125 #   endif
126 # endif
127 
128 # if _LIBCPP_HAS_THREADS
129 #   ifndef __cpp_lib_shared_timed_mutex
130 #     error "__cpp_lib_shared_timed_mutex should be defined in c++23"
131 #   endif
132 #   if __cpp_lib_shared_timed_mutex != 201402L
133 #     error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++23"
134 #   endif
135 # else
136 #   ifdef __cpp_lib_shared_timed_mutex
137 #     error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
138 #   endif
139 # endif
140 
141 #elif TEST_STD_VER > 23
142 
143 # if _LIBCPP_HAS_THREADS
144 #   ifndef __cpp_lib_shared_mutex
145 #     error "__cpp_lib_shared_mutex should be defined in c++26"
146 #   endif
147 #   if __cpp_lib_shared_mutex != 201505L
148 #     error "__cpp_lib_shared_mutex should have the value 201505L in c++26"
149 #   endif
150 # else
151 #   ifdef __cpp_lib_shared_mutex
152 #     error "__cpp_lib_shared_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
153 #   endif
154 # endif
155 
156 # if _LIBCPP_HAS_THREADS
157 #   ifndef __cpp_lib_shared_timed_mutex
158 #     error "__cpp_lib_shared_timed_mutex should be defined in c++26"
159 #   endif
160 #   if __cpp_lib_shared_timed_mutex != 201402L
161 #     error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++26"
162 #   endif
163 # else
164 #   ifdef __cpp_lib_shared_timed_mutex
165 #     error "__cpp_lib_shared_timed_mutex should not be defined when the requirement '_LIBCPP_HAS_THREADS' is not met!"
166 #   endif
167 # endif
168 
169 #endif // TEST_STD_VER > 23
170 
171