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