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 // <string> 15 16 // Test the feature test macros defined by <string> 17 18 /* Constant Value 19 __cpp_lib_allocator_traits_is_always_equal 201411L [C++17] 20 __cpp_lib_char8_t 201907L [C++20] 21 __cpp_lib_constexpr_string 201907L [C++20] 22 __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26] 23 __cpp_lib_erase_if 202002L [C++20] 24 __cpp_lib_nonmember_container_access 201411L [C++17] 25 __cpp_lib_ranges_to_container 202202L [C++23] 26 __cpp_lib_starts_ends_with 201711L [C++20] 27 __cpp_lib_string_contains 202011L [C++23] 28 __cpp_lib_string_resize_and_overwrite 202110L [C++23] 29 __cpp_lib_string_udls 201304L [C++14] 30 __cpp_lib_string_view 201606L [C++17] 31 201803L [C++20] 32 __cpp_lib_to_string 202306L [C++23] 33 */ 34 35 #include <string> 36 #include "test_macros.h" 37 38 #if TEST_STD_VER < 14 39 40 # ifdef __cpp_lib_allocator_traits_is_always_equal 41 # error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17" 42 # endif 43 44 # ifdef __cpp_lib_char8_t 45 # error "__cpp_lib_char8_t should not be defined before c++20" 46 # endif 47 48 # ifdef __cpp_lib_constexpr_string 49 # error "__cpp_lib_constexpr_string should not be defined before c++20" 50 # endif 51 52 # ifdef __cpp_lib_default_template_type_for_algorithm_values 53 # error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26" 54 # endif 55 56 # ifdef __cpp_lib_erase_if 57 # error "__cpp_lib_erase_if should not be defined before c++20" 58 # endif 59 60 # ifdef __cpp_lib_nonmember_container_access 61 # error "__cpp_lib_nonmember_container_access should not be defined before c++17" 62 # endif 63 64 # ifdef __cpp_lib_ranges_to_container 65 # error "__cpp_lib_ranges_to_container should not be defined before c++23" 66 # endif 67 68 # ifdef __cpp_lib_starts_ends_with 69 # error "__cpp_lib_starts_ends_with should not be defined before c++20" 70 # endif 71 72 # ifdef __cpp_lib_string_contains 73 # error "__cpp_lib_string_contains should not be defined before c++23" 74 # endif 75 76 # ifdef __cpp_lib_string_resize_and_overwrite 77 # error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23" 78 # endif 79 80 # ifdef __cpp_lib_string_udls 81 # error "__cpp_lib_string_udls should not be defined before c++14" 82 # endif 83 84 # ifdef __cpp_lib_string_view 85 # error "__cpp_lib_string_view should not be defined before c++17" 86 # endif 87 88 # ifdef __cpp_lib_to_string 89 # error "__cpp_lib_to_string should not be defined before c++23" 90 # endif 91 92 #elif TEST_STD_VER == 14 93 94 # ifdef __cpp_lib_allocator_traits_is_always_equal 95 # error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17" 96 # endif 97 98 # ifdef __cpp_lib_char8_t 99 # error "__cpp_lib_char8_t should not be defined before c++20" 100 # endif 101 102 # ifdef __cpp_lib_constexpr_string 103 # error "__cpp_lib_constexpr_string should not be defined before c++20" 104 # endif 105 106 # ifdef __cpp_lib_default_template_type_for_algorithm_values 107 # error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26" 108 # endif 109 110 # ifdef __cpp_lib_erase_if 111 # error "__cpp_lib_erase_if should not be defined before c++20" 112 # endif 113 114 # ifdef __cpp_lib_nonmember_container_access 115 # error "__cpp_lib_nonmember_container_access should not be defined before c++17" 116 # endif 117 118 # ifdef __cpp_lib_ranges_to_container 119 # error "__cpp_lib_ranges_to_container should not be defined before c++23" 120 # endif 121 122 # ifdef __cpp_lib_starts_ends_with 123 # error "__cpp_lib_starts_ends_with should not be defined before c++20" 124 # endif 125 126 # ifdef __cpp_lib_string_contains 127 # error "__cpp_lib_string_contains should not be defined before c++23" 128 # endif 129 130 # ifdef __cpp_lib_string_resize_and_overwrite 131 # error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23" 132 # endif 133 134 # ifndef __cpp_lib_string_udls 135 # error "__cpp_lib_string_udls should be defined in c++14" 136 # endif 137 # if __cpp_lib_string_udls != 201304L 138 # error "__cpp_lib_string_udls should have the value 201304L in c++14" 139 # endif 140 141 # ifdef __cpp_lib_string_view 142 # error "__cpp_lib_string_view should not be defined before c++17" 143 # endif 144 145 # ifdef __cpp_lib_to_string 146 # error "__cpp_lib_to_string should not be defined before c++23" 147 # endif 148 149 #elif TEST_STD_VER == 17 150 151 # ifndef __cpp_lib_allocator_traits_is_always_equal 152 # error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17" 153 # endif 154 # if __cpp_lib_allocator_traits_is_always_equal != 201411L 155 # error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17" 156 # endif 157 158 # ifdef __cpp_lib_char8_t 159 # error "__cpp_lib_char8_t should not be defined before c++20" 160 # endif 161 162 # ifdef __cpp_lib_constexpr_string 163 # error "__cpp_lib_constexpr_string should not be defined before c++20" 164 # endif 165 166 # ifdef __cpp_lib_default_template_type_for_algorithm_values 167 # error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26" 168 # endif 169 170 # ifdef __cpp_lib_erase_if 171 # error "__cpp_lib_erase_if should not be defined before c++20" 172 # endif 173 174 # ifndef __cpp_lib_nonmember_container_access 175 # error "__cpp_lib_nonmember_container_access should be defined in c++17" 176 # endif 177 # if __cpp_lib_nonmember_container_access != 201411L 178 # error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17" 179 # endif 180 181 # ifdef __cpp_lib_ranges_to_container 182 # error "__cpp_lib_ranges_to_container should not be defined before c++23" 183 # endif 184 185 # ifdef __cpp_lib_starts_ends_with 186 # error "__cpp_lib_starts_ends_with should not be defined before c++20" 187 # endif 188 189 # ifdef __cpp_lib_string_contains 190 # error "__cpp_lib_string_contains should not be defined before c++23" 191 # endif 192 193 # ifdef __cpp_lib_string_resize_and_overwrite 194 # error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23" 195 # endif 196 197 # ifndef __cpp_lib_string_udls 198 # error "__cpp_lib_string_udls should be defined in c++17" 199 # endif 200 # if __cpp_lib_string_udls != 201304L 201 # error "__cpp_lib_string_udls should have the value 201304L in c++17" 202 # endif 203 204 # ifndef __cpp_lib_string_view 205 # error "__cpp_lib_string_view should be defined in c++17" 206 # endif 207 # if __cpp_lib_string_view != 201606L 208 # error "__cpp_lib_string_view should have the value 201606L in c++17" 209 # endif 210 211 # ifdef __cpp_lib_to_string 212 # error "__cpp_lib_to_string should not be defined before c++23" 213 # endif 214 215 #elif TEST_STD_VER == 20 216 217 # ifndef __cpp_lib_allocator_traits_is_always_equal 218 # error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++20" 219 # endif 220 # if __cpp_lib_allocator_traits_is_always_equal != 201411L 221 # error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20" 222 # endif 223 224 # if defined(__cpp_char8_t) 225 # ifndef __cpp_lib_char8_t 226 # error "__cpp_lib_char8_t should be defined in c++20" 227 # endif 228 # if __cpp_lib_char8_t != 201907L 229 # error "__cpp_lib_char8_t should have the value 201907L in c++20" 230 # endif 231 # else 232 # ifdef __cpp_lib_char8_t 233 # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" 234 # endif 235 # endif 236 237 # ifndef __cpp_lib_constexpr_string 238 # error "__cpp_lib_constexpr_string should be defined in c++20" 239 # endif 240 # if __cpp_lib_constexpr_string != 201907L 241 # error "__cpp_lib_constexpr_string should have the value 201907L in c++20" 242 # endif 243 244 # ifdef __cpp_lib_default_template_type_for_algorithm_values 245 # error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26" 246 # endif 247 248 # ifndef __cpp_lib_erase_if 249 # error "__cpp_lib_erase_if should be defined in c++20" 250 # endif 251 # if __cpp_lib_erase_if != 202002L 252 # error "__cpp_lib_erase_if should have the value 202002L in c++20" 253 # endif 254 255 # ifndef __cpp_lib_nonmember_container_access 256 # error "__cpp_lib_nonmember_container_access should be defined in c++20" 257 # endif 258 # if __cpp_lib_nonmember_container_access != 201411L 259 # error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20" 260 # endif 261 262 # ifdef __cpp_lib_ranges_to_container 263 # error "__cpp_lib_ranges_to_container should not be defined before c++23" 264 # endif 265 266 # ifndef __cpp_lib_starts_ends_with 267 # error "__cpp_lib_starts_ends_with should be defined in c++20" 268 # endif 269 # if __cpp_lib_starts_ends_with != 201711L 270 # error "__cpp_lib_starts_ends_with should have the value 201711L in c++20" 271 # endif 272 273 # ifdef __cpp_lib_string_contains 274 # error "__cpp_lib_string_contains should not be defined before c++23" 275 # endif 276 277 # ifdef __cpp_lib_string_resize_and_overwrite 278 # error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23" 279 # endif 280 281 # ifndef __cpp_lib_string_udls 282 # error "__cpp_lib_string_udls should be defined in c++20" 283 # endif 284 # if __cpp_lib_string_udls != 201304L 285 # error "__cpp_lib_string_udls should have the value 201304L in c++20" 286 # endif 287 288 # ifndef __cpp_lib_string_view 289 # error "__cpp_lib_string_view should be defined in c++20" 290 # endif 291 # if __cpp_lib_string_view != 201803L 292 # error "__cpp_lib_string_view should have the value 201803L in c++20" 293 # endif 294 295 # ifdef __cpp_lib_to_string 296 # error "__cpp_lib_to_string should not be defined before c++23" 297 # endif 298 299 #elif TEST_STD_VER == 23 300 301 # ifndef __cpp_lib_allocator_traits_is_always_equal 302 # error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23" 303 # endif 304 # if __cpp_lib_allocator_traits_is_always_equal != 201411L 305 # error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23" 306 # endif 307 308 # if defined(__cpp_char8_t) 309 # ifndef __cpp_lib_char8_t 310 # error "__cpp_lib_char8_t should be defined in c++23" 311 # endif 312 # if __cpp_lib_char8_t != 201907L 313 # error "__cpp_lib_char8_t should have the value 201907L in c++23" 314 # endif 315 # else 316 # ifdef __cpp_lib_char8_t 317 # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" 318 # endif 319 # endif 320 321 # ifndef __cpp_lib_constexpr_string 322 # error "__cpp_lib_constexpr_string should be defined in c++23" 323 # endif 324 # if __cpp_lib_constexpr_string != 201907L 325 # error "__cpp_lib_constexpr_string should have the value 201907L in c++23" 326 # endif 327 328 # ifdef __cpp_lib_default_template_type_for_algorithm_values 329 # error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26" 330 # endif 331 332 # ifndef __cpp_lib_erase_if 333 # error "__cpp_lib_erase_if should be defined in c++23" 334 # endif 335 # if __cpp_lib_erase_if != 202002L 336 # error "__cpp_lib_erase_if should have the value 202002L in c++23" 337 # endif 338 339 # ifndef __cpp_lib_nonmember_container_access 340 # error "__cpp_lib_nonmember_container_access should be defined in c++23" 341 # endif 342 # if __cpp_lib_nonmember_container_access != 201411L 343 # error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23" 344 # endif 345 346 # ifndef __cpp_lib_ranges_to_container 347 # error "__cpp_lib_ranges_to_container should be defined in c++23" 348 # endif 349 # if __cpp_lib_ranges_to_container != 202202L 350 # error "__cpp_lib_ranges_to_container should have the value 202202L in c++23" 351 # endif 352 353 # ifndef __cpp_lib_starts_ends_with 354 # error "__cpp_lib_starts_ends_with should be defined in c++23" 355 # endif 356 # if __cpp_lib_starts_ends_with != 201711L 357 # error "__cpp_lib_starts_ends_with should have the value 201711L in c++23" 358 # endif 359 360 # ifndef __cpp_lib_string_contains 361 # error "__cpp_lib_string_contains should be defined in c++23" 362 # endif 363 # if __cpp_lib_string_contains != 202011L 364 # error "__cpp_lib_string_contains should have the value 202011L in c++23" 365 # endif 366 367 # ifndef __cpp_lib_string_resize_and_overwrite 368 # error "__cpp_lib_string_resize_and_overwrite should be defined in c++23" 369 # endif 370 # if __cpp_lib_string_resize_and_overwrite != 202110L 371 # error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++23" 372 # endif 373 374 # ifndef __cpp_lib_string_udls 375 # error "__cpp_lib_string_udls should be defined in c++23" 376 # endif 377 # if __cpp_lib_string_udls != 201304L 378 # error "__cpp_lib_string_udls should have the value 201304L in c++23" 379 # endif 380 381 # ifndef __cpp_lib_string_view 382 # error "__cpp_lib_string_view should be defined in c++23" 383 # endif 384 # if __cpp_lib_string_view != 201803L 385 # error "__cpp_lib_string_view should have the value 201803L in c++23" 386 # endif 387 388 # if !defined(_LIBCPP_VERSION) 389 # ifndef __cpp_lib_to_string 390 # error "__cpp_lib_to_string should be defined in c++23" 391 # endif 392 # if __cpp_lib_to_string != 202306L 393 # error "__cpp_lib_to_string should have the value 202306L in c++23" 394 # endif 395 # else // _LIBCPP_VERSION 396 # ifdef __cpp_lib_to_string 397 # error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!" 398 # endif 399 # endif 400 401 #elif TEST_STD_VER > 23 402 403 # ifndef __cpp_lib_allocator_traits_is_always_equal 404 # error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26" 405 # endif 406 # if __cpp_lib_allocator_traits_is_always_equal != 201411L 407 # error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26" 408 # endif 409 410 # if defined(__cpp_char8_t) 411 # ifndef __cpp_lib_char8_t 412 # error "__cpp_lib_char8_t should be defined in c++26" 413 # endif 414 # if __cpp_lib_char8_t != 201907L 415 # error "__cpp_lib_char8_t should have the value 201907L in c++26" 416 # endif 417 # else 418 # ifdef __cpp_lib_char8_t 419 # error "__cpp_lib_char8_t should not be defined when the requirement 'defined(__cpp_char8_t)' is not met!" 420 # endif 421 # endif 422 423 # ifndef __cpp_lib_constexpr_string 424 # error "__cpp_lib_constexpr_string should be defined in c++26" 425 # endif 426 # if __cpp_lib_constexpr_string != 201907L 427 # error "__cpp_lib_constexpr_string should have the value 201907L in c++26" 428 # endif 429 430 # if !defined(_LIBCPP_VERSION) 431 # ifndef __cpp_lib_default_template_type_for_algorithm_values 432 # error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26" 433 # endif 434 # if __cpp_lib_default_template_type_for_algorithm_values != 202403L 435 # error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26" 436 # endif 437 # else // _LIBCPP_VERSION 438 # ifdef __cpp_lib_default_template_type_for_algorithm_values 439 # error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!" 440 # endif 441 # endif 442 443 # ifndef __cpp_lib_erase_if 444 # error "__cpp_lib_erase_if should be defined in c++26" 445 # endif 446 # if __cpp_lib_erase_if != 202002L 447 # error "__cpp_lib_erase_if should have the value 202002L in c++26" 448 # endif 449 450 # ifndef __cpp_lib_nonmember_container_access 451 # error "__cpp_lib_nonmember_container_access should be defined in c++26" 452 # endif 453 # if __cpp_lib_nonmember_container_access != 201411L 454 # error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26" 455 # endif 456 457 # ifndef __cpp_lib_ranges_to_container 458 # error "__cpp_lib_ranges_to_container should be defined in c++26" 459 # endif 460 # if __cpp_lib_ranges_to_container != 202202L 461 # error "__cpp_lib_ranges_to_container should have the value 202202L in c++26" 462 # endif 463 464 # ifndef __cpp_lib_starts_ends_with 465 # error "__cpp_lib_starts_ends_with should be defined in c++26" 466 # endif 467 # if __cpp_lib_starts_ends_with != 201711L 468 # error "__cpp_lib_starts_ends_with should have the value 201711L in c++26" 469 # endif 470 471 # ifndef __cpp_lib_string_contains 472 # error "__cpp_lib_string_contains should be defined in c++26" 473 # endif 474 # if __cpp_lib_string_contains != 202011L 475 # error "__cpp_lib_string_contains should have the value 202011L in c++26" 476 # endif 477 478 # ifndef __cpp_lib_string_resize_and_overwrite 479 # error "__cpp_lib_string_resize_and_overwrite should be defined in c++26" 480 # endif 481 # if __cpp_lib_string_resize_and_overwrite != 202110L 482 # error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++26" 483 # endif 484 485 # ifndef __cpp_lib_string_udls 486 # error "__cpp_lib_string_udls should be defined in c++26" 487 # endif 488 # if __cpp_lib_string_udls != 201304L 489 # error "__cpp_lib_string_udls should have the value 201304L in c++26" 490 # endif 491 492 # ifndef __cpp_lib_string_view 493 # error "__cpp_lib_string_view should be defined in c++26" 494 # endif 495 # if __cpp_lib_string_view != 201803L 496 # error "__cpp_lib_string_view should have the value 201803L in c++26" 497 # endif 498 499 # if !defined(_LIBCPP_VERSION) 500 # ifndef __cpp_lib_to_string 501 # error "__cpp_lib_to_string should be defined in c++26" 502 # endif 503 # if __cpp_lib_to_string != 202306L 504 # error "__cpp_lib_to_string should have the value 202306L in c++26" 505 # endif 506 # else // _LIBCPP_VERSION 507 # ifdef __cpp_lib_to_string 508 # error "__cpp_lib_to_string should not be defined because it is unimplemented in libc++!" 509 # endif 510 # endif 511 512 #endif // TEST_STD_VER > 23 513 514