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 // <vector>
15 
16 // Test the feature test macros defined by <vector>
17 
18 /*  Constant                                                Value
19     __cpp_lib_allocator_traits_is_always_equal              201411L [C++17]
20     __cpp_lib_constexpr_vector                              201907L [C++20]
21     __cpp_lib_containers_ranges                             202202L [C++23]
22     __cpp_lib_default_template_type_for_algorithm_values    202403L [C++26]
23     __cpp_lib_erase_if                                      202002L [C++20]
24     __cpp_lib_incomplete_container_elements                 201505L [C++17]
25     __cpp_lib_nonmember_container_access                    201411L [C++17]
26 */
27 
28 #include <vector>
29 #include "test_macros.h"
30 
31 #if TEST_STD_VER < 14
32 
33 # ifdef __cpp_lib_allocator_traits_is_always_equal
34 #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
35 # endif
36 
37 # ifdef __cpp_lib_constexpr_vector
38 #   error "__cpp_lib_constexpr_vector should not be defined before c++20"
39 # endif
40 
41 # ifdef __cpp_lib_containers_ranges
42 #   error "__cpp_lib_containers_ranges should not be defined before c++23"
43 # endif
44 
45 # ifdef __cpp_lib_default_template_type_for_algorithm_values
46 #   error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
47 # endif
48 
49 # ifdef __cpp_lib_erase_if
50 #   error "__cpp_lib_erase_if should not be defined before c++20"
51 # endif
52 
53 # ifdef __cpp_lib_incomplete_container_elements
54 #   error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
55 # endif
56 
57 # ifdef __cpp_lib_nonmember_container_access
58 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
59 # endif
60 
61 #elif TEST_STD_VER == 14
62 
63 # ifdef __cpp_lib_allocator_traits_is_always_equal
64 #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
65 # endif
66 
67 # ifdef __cpp_lib_constexpr_vector
68 #   error "__cpp_lib_constexpr_vector should not be defined before c++20"
69 # endif
70 
71 # ifdef __cpp_lib_containers_ranges
72 #   error "__cpp_lib_containers_ranges should not be defined before c++23"
73 # endif
74 
75 # ifdef __cpp_lib_default_template_type_for_algorithm_values
76 #   error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
77 # endif
78 
79 # ifdef __cpp_lib_erase_if
80 #   error "__cpp_lib_erase_if should not be defined before c++20"
81 # endif
82 
83 # ifdef __cpp_lib_incomplete_container_elements
84 #   error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
85 # endif
86 
87 # ifdef __cpp_lib_nonmember_container_access
88 #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
89 # endif
90 
91 #elif TEST_STD_VER == 17
92 
93 # ifndef __cpp_lib_allocator_traits_is_always_equal
94 #   error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17"
95 # endif
96 # if __cpp_lib_allocator_traits_is_always_equal != 201411L
97 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
98 # endif
99 
100 # ifdef __cpp_lib_constexpr_vector
101 #   error "__cpp_lib_constexpr_vector should not be defined before c++20"
102 # endif
103 
104 # ifdef __cpp_lib_containers_ranges
105 #   error "__cpp_lib_containers_ranges should not be defined before c++23"
106 # endif
107 
108 # ifdef __cpp_lib_default_template_type_for_algorithm_values
109 #   error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
110 # endif
111 
112 # ifdef __cpp_lib_erase_if
113 #   error "__cpp_lib_erase_if should not be defined before c++20"
114 # endif
115 
116 # ifndef __cpp_lib_incomplete_container_elements
117 #   error "__cpp_lib_incomplete_container_elements should be defined in c++17"
118 # endif
119 # if __cpp_lib_incomplete_container_elements != 201505L
120 #   error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++17"
121 # endif
122 
123 # ifndef __cpp_lib_nonmember_container_access
124 #   error "__cpp_lib_nonmember_container_access should be defined in c++17"
125 # endif
126 # if __cpp_lib_nonmember_container_access != 201411L
127 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
128 # endif
129 
130 #elif TEST_STD_VER == 20
131 
132 # ifndef __cpp_lib_allocator_traits_is_always_equal
133 #   error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++20"
134 # endif
135 # if __cpp_lib_allocator_traits_is_always_equal != 201411L
136 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
137 # endif
138 
139 # ifndef __cpp_lib_constexpr_vector
140 #   error "__cpp_lib_constexpr_vector should be defined in c++20"
141 # endif
142 # if __cpp_lib_constexpr_vector != 201907L
143 #   error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
144 # endif
145 
146 # ifdef __cpp_lib_containers_ranges
147 #   error "__cpp_lib_containers_ranges should not be defined before c++23"
148 # endif
149 
150 # ifdef __cpp_lib_default_template_type_for_algorithm_values
151 #   error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
152 # endif
153 
154 # ifndef __cpp_lib_erase_if
155 #   error "__cpp_lib_erase_if should be defined in c++20"
156 # endif
157 # if __cpp_lib_erase_if != 202002L
158 #   error "__cpp_lib_erase_if should have the value 202002L in c++20"
159 # endif
160 
161 # ifndef __cpp_lib_incomplete_container_elements
162 #   error "__cpp_lib_incomplete_container_elements should be defined in c++20"
163 # endif
164 # if __cpp_lib_incomplete_container_elements != 201505L
165 #   error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++20"
166 # endif
167 
168 # ifndef __cpp_lib_nonmember_container_access
169 #   error "__cpp_lib_nonmember_container_access should be defined in c++20"
170 # endif
171 # if __cpp_lib_nonmember_container_access != 201411L
172 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
173 # endif
174 
175 #elif TEST_STD_VER == 23
176 
177 # ifndef __cpp_lib_allocator_traits_is_always_equal
178 #   error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
179 # endif
180 # if __cpp_lib_allocator_traits_is_always_equal != 201411L
181 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
182 # endif
183 
184 # ifndef __cpp_lib_constexpr_vector
185 #   error "__cpp_lib_constexpr_vector should be defined in c++23"
186 # endif
187 # if __cpp_lib_constexpr_vector != 201907L
188 #   error "__cpp_lib_constexpr_vector should have the value 201907L in c++23"
189 # endif
190 
191 # ifndef __cpp_lib_containers_ranges
192 #   error "__cpp_lib_containers_ranges should be defined in c++23"
193 # endif
194 # if __cpp_lib_containers_ranges != 202202L
195 #   error "__cpp_lib_containers_ranges should have the value 202202L in c++23"
196 # endif
197 
198 # ifdef __cpp_lib_default_template_type_for_algorithm_values
199 #   error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
200 # endif
201 
202 # ifndef __cpp_lib_erase_if
203 #   error "__cpp_lib_erase_if should be defined in c++23"
204 # endif
205 # if __cpp_lib_erase_if != 202002L
206 #   error "__cpp_lib_erase_if should have the value 202002L in c++23"
207 # endif
208 
209 # ifndef __cpp_lib_incomplete_container_elements
210 #   error "__cpp_lib_incomplete_container_elements should be defined in c++23"
211 # endif
212 # if __cpp_lib_incomplete_container_elements != 201505L
213 #   error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++23"
214 # endif
215 
216 # ifndef __cpp_lib_nonmember_container_access
217 #   error "__cpp_lib_nonmember_container_access should be defined in c++23"
218 # endif
219 # if __cpp_lib_nonmember_container_access != 201411L
220 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
221 # endif
222 
223 #elif TEST_STD_VER > 23
224 
225 # ifndef __cpp_lib_allocator_traits_is_always_equal
226 #   error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"
227 # endif
228 # if __cpp_lib_allocator_traits_is_always_equal != 201411L
229 #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
230 # endif
231 
232 # ifndef __cpp_lib_constexpr_vector
233 #   error "__cpp_lib_constexpr_vector should be defined in c++26"
234 # endif
235 # if __cpp_lib_constexpr_vector != 201907L
236 #   error "__cpp_lib_constexpr_vector should have the value 201907L in c++26"
237 # endif
238 
239 # ifndef __cpp_lib_containers_ranges
240 #   error "__cpp_lib_containers_ranges should be defined in c++26"
241 # endif
242 # if __cpp_lib_containers_ranges != 202202L
243 #   error "__cpp_lib_containers_ranges should have the value 202202L in c++26"
244 # endif
245 
246 # if !defined(_LIBCPP_VERSION)
247 #   ifndef __cpp_lib_default_template_type_for_algorithm_values
248 #     error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
249 #   endif
250 #   if __cpp_lib_default_template_type_for_algorithm_values != 202403L
251 #     error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
252 #   endif
253 # else // _LIBCPP_VERSION
254 #   ifdef __cpp_lib_default_template_type_for_algorithm_values
255 #     error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
256 #   endif
257 # endif
258 
259 # ifndef __cpp_lib_erase_if
260 #   error "__cpp_lib_erase_if should be defined in c++26"
261 # endif
262 # if __cpp_lib_erase_if != 202002L
263 #   error "__cpp_lib_erase_if should have the value 202002L in c++26"
264 # endif
265 
266 # ifndef __cpp_lib_incomplete_container_elements
267 #   error "__cpp_lib_incomplete_container_elements should be defined in c++26"
268 # endif
269 # if __cpp_lib_incomplete_container_elements != 201505L
270 #   error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++26"
271 # endif
272 
273 # ifndef __cpp_lib_nonmember_container_access
274 #   error "__cpp_lib_nonmember_container_access should be defined in c++26"
275 # endif
276 # if __cpp_lib_nonmember_container_access != 201411L
277 #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"
278 # endif
279 
280 #endif // TEST_STD_VER > 23
281 
282