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 // <type_traits> 15 16 // Test the feature test macros defined by <type_traits> 17 18 /* Constant Value 19 __cpp_lib_bool_constant 201505L [C++17] 20 __cpp_lib_bounded_array_traits 201902L [C++20] 21 __cpp_lib_has_unique_object_representations 201606L [C++17] 22 __cpp_lib_integral_constant_callable 201304L [C++14] 23 __cpp_lib_is_aggregate 201703L [C++17] 24 __cpp_lib_is_constant_evaluated 201811L [C++20] 25 __cpp_lib_is_final 201402L [C++14] 26 __cpp_lib_is_invocable 201703L [C++17] 27 __cpp_lib_is_layout_compatible 201907L [C++20] 28 __cpp_lib_is_nothrow_convertible 201806L [C++20] 29 __cpp_lib_is_null_pointer 201309L [C++14] 30 __cpp_lib_is_pointer_interconvertible 201907L [C++20] 31 __cpp_lib_is_scoped_enum 202011L [C++2b] 32 __cpp_lib_is_swappable 201603L [C++17] 33 __cpp_lib_logical_traits 201510L [C++17] 34 __cpp_lib_remove_cvref 201711L [C++20] 35 __cpp_lib_result_of_sfinae 201210L [C++14] 36 __cpp_lib_transformation_trait_aliases 201304L [C++14] 37 __cpp_lib_type_trait_variable_templates 201510L [C++17] 38 __cpp_lib_void_t 201411L [C++17] 39 */ 40 41 #include <type_traits> 42 #include "test_macros.h" 43 44 #if TEST_STD_VER < 14 45 46 # ifdef __cpp_lib_bool_constant 47 # error "__cpp_lib_bool_constant should not be defined before c++17" 48 # endif 49 50 # ifdef __cpp_lib_bounded_array_traits 51 # error "__cpp_lib_bounded_array_traits should not be defined before c++20" 52 # endif 53 54 # ifdef __cpp_lib_has_unique_object_representations 55 # error "__cpp_lib_has_unique_object_representations should not be defined before c++17" 56 # endif 57 58 # ifdef __cpp_lib_integral_constant_callable 59 # error "__cpp_lib_integral_constant_callable should not be defined before c++14" 60 # endif 61 62 # ifdef __cpp_lib_is_aggregate 63 # error "__cpp_lib_is_aggregate should not be defined before c++17" 64 # endif 65 66 # ifdef __cpp_lib_is_constant_evaluated 67 # error "__cpp_lib_is_constant_evaluated should not be defined before c++20" 68 # endif 69 70 # ifdef __cpp_lib_is_final 71 # error "__cpp_lib_is_final should not be defined before c++14" 72 # endif 73 74 # ifdef __cpp_lib_is_invocable 75 # error "__cpp_lib_is_invocable should not be defined before c++17" 76 # endif 77 78 # ifdef __cpp_lib_is_layout_compatible 79 # error "__cpp_lib_is_layout_compatible should not be defined before c++20" 80 # endif 81 82 # ifdef __cpp_lib_is_nothrow_convertible 83 # error "__cpp_lib_is_nothrow_convertible should not be defined before c++20" 84 # endif 85 86 # ifdef __cpp_lib_is_null_pointer 87 # error "__cpp_lib_is_null_pointer should not be defined before c++14" 88 # endif 89 90 # ifdef __cpp_lib_is_pointer_interconvertible 91 # error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20" 92 # endif 93 94 # ifdef __cpp_lib_is_scoped_enum 95 # error "__cpp_lib_is_scoped_enum should not be defined before c++2b" 96 # endif 97 98 # ifdef __cpp_lib_is_swappable 99 # error "__cpp_lib_is_swappable should not be defined before c++17" 100 # endif 101 102 # ifdef __cpp_lib_logical_traits 103 # error "__cpp_lib_logical_traits should not be defined before c++17" 104 # endif 105 106 # ifdef __cpp_lib_remove_cvref 107 # error "__cpp_lib_remove_cvref should not be defined before c++20" 108 # endif 109 110 # ifdef __cpp_lib_result_of_sfinae 111 # error "__cpp_lib_result_of_sfinae should not be defined before c++14" 112 # endif 113 114 # ifdef __cpp_lib_transformation_trait_aliases 115 # error "__cpp_lib_transformation_trait_aliases should not be defined before c++14" 116 # endif 117 118 # ifdef __cpp_lib_type_trait_variable_templates 119 # error "__cpp_lib_type_trait_variable_templates should not be defined before c++17" 120 # endif 121 122 # ifdef __cpp_lib_void_t 123 # error "__cpp_lib_void_t should not be defined before c++17" 124 # endif 125 126 #elif TEST_STD_VER == 14 127 128 # ifdef __cpp_lib_bool_constant 129 # error "__cpp_lib_bool_constant should not be defined before c++17" 130 # endif 131 132 # ifdef __cpp_lib_bounded_array_traits 133 # error "__cpp_lib_bounded_array_traits should not be defined before c++20" 134 # endif 135 136 # ifdef __cpp_lib_has_unique_object_representations 137 # error "__cpp_lib_has_unique_object_representations should not be defined before c++17" 138 # endif 139 140 # ifndef __cpp_lib_integral_constant_callable 141 # error "__cpp_lib_integral_constant_callable should be defined in c++14" 142 # endif 143 # if __cpp_lib_integral_constant_callable != 201304L 144 # error "__cpp_lib_integral_constant_callable should have the value 201304L in c++14" 145 # endif 146 147 # ifdef __cpp_lib_is_aggregate 148 # error "__cpp_lib_is_aggregate should not be defined before c++17" 149 # endif 150 151 # ifdef __cpp_lib_is_constant_evaluated 152 # error "__cpp_lib_is_constant_evaluated should not be defined before c++20" 153 # endif 154 155 # ifndef __cpp_lib_is_final 156 # error "__cpp_lib_is_final should be defined in c++14" 157 # endif 158 # if __cpp_lib_is_final != 201402L 159 # error "__cpp_lib_is_final should have the value 201402L in c++14" 160 # endif 161 162 # ifdef __cpp_lib_is_invocable 163 # error "__cpp_lib_is_invocable should not be defined before c++17" 164 # endif 165 166 # ifdef __cpp_lib_is_layout_compatible 167 # error "__cpp_lib_is_layout_compatible should not be defined before c++20" 168 # endif 169 170 # ifdef __cpp_lib_is_nothrow_convertible 171 # error "__cpp_lib_is_nothrow_convertible should not be defined before c++20" 172 # endif 173 174 # ifndef __cpp_lib_is_null_pointer 175 # error "__cpp_lib_is_null_pointer should be defined in c++14" 176 # endif 177 # if __cpp_lib_is_null_pointer != 201309L 178 # error "__cpp_lib_is_null_pointer should have the value 201309L in c++14" 179 # endif 180 181 # ifdef __cpp_lib_is_pointer_interconvertible 182 # error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20" 183 # endif 184 185 # ifdef __cpp_lib_is_scoped_enum 186 # error "__cpp_lib_is_scoped_enum should not be defined before c++2b" 187 # endif 188 189 # ifdef __cpp_lib_is_swappable 190 # error "__cpp_lib_is_swappable should not be defined before c++17" 191 # endif 192 193 # ifdef __cpp_lib_logical_traits 194 # error "__cpp_lib_logical_traits should not be defined before c++17" 195 # endif 196 197 # ifdef __cpp_lib_remove_cvref 198 # error "__cpp_lib_remove_cvref should not be defined before c++20" 199 # endif 200 201 # ifndef __cpp_lib_result_of_sfinae 202 # error "__cpp_lib_result_of_sfinae should be defined in c++14" 203 # endif 204 # if __cpp_lib_result_of_sfinae != 201210L 205 # error "__cpp_lib_result_of_sfinae should have the value 201210L in c++14" 206 # endif 207 208 # ifndef __cpp_lib_transformation_trait_aliases 209 # error "__cpp_lib_transformation_trait_aliases should be defined in c++14" 210 # endif 211 # if __cpp_lib_transformation_trait_aliases != 201304L 212 # error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++14" 213 # endif 214 215 # ifdef __cpp_lib_type_trait_variable_templates 216 # error "__cpp_lib_type_trait_variable_templates should not be defined before c++17" 217 # endif 218 219 # ifdef __cpp_lib_void_t 220 # error "__cpp_lib_void_t should not be defined before c++17" 221 # endif 222 223 #elif TEST_STD_VER == 17 224 225 # ifndef __cpp_lib_bool_constant 226 # error "__cpp_lib_bool_constant should be defined in c++17" 227 # endif 228 # if __cpp_lib_bool_constant != 201505L 229 # error "__cpp_lib_bool_constant should have the value 201505L in c++17" 230 # endif 231 232 # ifdef __cpp_lib_bounded_array_traits 233 # error "__cpp_lib_bounded_array_traits should not be defined before c++20" 234 # endif 235 236 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 237 # ifndef __cpp_lib_has_unique_object_representations 238 # error "__cpp_lib_has_unique_object_representations should be defined in c++17" 239 # endif 240 # if __cpp_lib_has_unique_object_representations != 201606L 241 # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" 242 # endif 243 # else 244 # ifdef __cpp_lib_has_unique_object_representations 245 # error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" 246 # endif 247 # endif 248 249 # ifndef __cpp_lib_integral_constant_callable 250 # error "__cpp_lib_integral_constant_callable should be defined in c++17" 251 # endif 252 # if __cpp_lib_integral_constant_callable != 201304L 253 # error "__cpp_lib_integral_constant_callable should have the value 201304L in c++17" 254 # endif 255 256 # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 257 # ifndef __cpp_lib_is_aggregate 258 # error "__cpp_lib_is_aggregate should be defined in c++17" 259 # endif 260 # if __cpp_lib_is_aggregate != 201703L 261 # error "__cpp_lib_is_aggregate should have the value 201703L in c++17" 262 # endif 263 # else 264 # ifdef __cpp_lib_is_aggregate 265 # error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!" 266 # endif 267 # endif 268 269 # ifdef __cpp_lib_is_constant_evaluated 270 # error "__cpp_lib_is_constant_evaluated should not be defined before c++20" 271 # endif 272 273 # ifndef __cpp_lib_is_final 274 # error "__cpp_lib_is_final should be defined in c++17" 275 # endif 276 # if __cpp_lib_is_final != 201402L 277 # error "__cpp_lib_is_final should have the value 201402L in c++17" 278 # endif 279 280 # ifndef __cpp_lib_is_invocable 281 # error "__cpp_lib_is_invocable should be defined in c++17" 282 # endif 283 # if __cpp_lib_is_invocable != 201703L 284 # error "__cpp_lib_is_invocable should have the value 201703L in c++17" 285 # endif 286 287 # ifdef __cpp_lib_is_layout_compatible 288 # error "__cpp_lib_is_layout_compatible should not be defined before c++20" 289 # endif 290 291 # ifdef __cpp_lib_is_nothrow_convertible 292 # error "__cpp_lib_is_nothrow_convertible should not be defined before c++20" 293 # endif 294 295 # ifndef __cpp_lib_is_null_pointer 296 # error "__cpp_lib_is_null_pointer should be defined in c++17" 297 # endif 298 # if __cpp_lib_is_null_pointer != 201309L 299 # error "__cpp_lib_is_null_pointer should have the value 201309L in c++17" 300 # endif 301 302 # ifdef __cpp_lib_is_pointer_interconvertible 303 # error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20" 304 # endif 305 306 # ifdef __cpp_lib_is_scoped_enum 307 # error "__cpp_lib_is_scoped_enum should not be defined before c++2b" 308 # endif 309 310 # ifndef __cpp_lib_is_swappable 311 # error "__cpp_lib_is_swappable should be defined in c++17" 312 # endif 313 # if __cpp_lib_is_swappable != 201603L 314 # error "__cpp_lib_is_swappable should have the value 201603L in c++17" 315 # endif 316 317 # ifndef __cpp_lib_logical_traits 318 # error "__cpp_lib_logical_traits should be defined in c++17" 319 # endif 320 # if __cpp_lib_logical_traits != 201510L 321 # error "__cpp_lib_logical_traits should have the value 201510L in c++17" 322 # endif 323 324 # ifdef __cpp_lib_remove_cvref 325 # error "__cpp_lib_remove_cvref should not be defined before c++20" 326 # endif 327 328 # ifndef __cpp_lib_result_of_sfinae 329 # error "__cpp_lib_result_of_sfinae should be defined in c++17" 330 # endif 331 # if __cpp_lib_result_of_sfinae != 201210L 332 # error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17" 333 # endif 334 335 # ifndef __cpp_lib_transformation_trait_aliases 336 # error "__cpp_lib_transformation_trait_aliases should be defined in c++17" 337 # endif 338 # if __cpp_lib_transformation_trait_aliases != 201304L 339 # error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++17" 340 # endif 341 342 # ifndef __cpp_lib_type_trait_variable_templates 343 # error "__cpp_lib_type_trait_variable_templates should be defined in c++17" 344 # endif 345 # if __cpp_lib_type_trait_variable_templates != 201510L 346 # error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++17" 347 # endif 348 349 # ifndef __cpp_lib_void_t 350 # error "__cpp_lib_void_t should be defined in c++17" 351 # endif 352 # if __cpp_lib_void_t != 201411L 353 # error "__cpp_lib_void_t should have the value 201411L in c++17" 354 # endif 355 356 #elif TEST_STD_VER == 20 357 358 # ifndef __cpp_lib_bool_constant 359 # error "__cpp_lib_bool_constant should be defined in c++20" 360 # endif 361 # if __cpp_lib_bool_constant != 201505L 362 # error "__cpp_lib_bool_constant should have the value 201505L in c++20" 363 # endif 364 365 # ifndef __cpp_lib_bounded_array_traits 366 # error "__cpp_lib_bounded_array_traits should be defined in c++20" 367 # endif 368 # if __cpp_lib_bounded_array_traits != 201902L 369 # error "__cpp_lib_bounded_array_traits should have the value 201902L in c++20" 370 # endif 371 372 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 373 # ifndef __cpp_lib_has_unique_object_representations 374 # error "__cpp_lib_has_unique_object_representations should be defined in c++20" 375 # endif 376 # if __cpp_lib_has_unique_object_representations != 201606L 377 # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20" 378 # endif 379 # else 380 # ifdef __cpp_lib_has_unique_object_representations 381 # error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" 382 # endif 383 # endif 384 385 # ifndef __cpp_lib_integral_constant_callable 386 # error "__cpp_lib_integral_constant_callable should be defined in c++20" 387 # endif 388 # if __cpp_lib_integral_constant_callable != 201304L 389 # error "__cpp_lib_integral_constant_callable should have the value 201304L in c++20" 390 # endif 391 392 # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 393 # ifndef __cpp_lib_is_aggregate 394 # error "__cpp_lib_is_aggregate should be defined in c++20" 395 # endif 396 # if __cpp_lib_is_aggregate != 201703L 397 # error "__cpp_lib_is_aggregate should have the value 201703L in c++20" 398 # endif 399 # else 400 # ifdef __cpp_lib_is_aggregate 401 # error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!" 402 # endif 403 # endif 404 405 # if TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 406 # ifndef __cpp_lib_is_constant_evaluated 407 # error "__cpp_lib_is_constant_evaluated should be defined in c++20" 408 # endif 409 # if __cpp_lib_is_constant_evaluated != 201811L 410 # error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++20" 411 # endif 412 # else 413 # ifdef __cpp_lib_is_constant_evaluated 414 # error "__cpp_lib_is_constant_evaluated should not be defined when TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 is not defined!" 415 # endif 416 # endif 417 418 # ifndef __cpp_lib_is_final 419 # error "__cpp_lib_is_final should be defined in c++20" 420 # endif 421 # if __cpp_lib_is_final != 201402L 422 # error "__cpp_lib_is_final should have the value 201402L in c++20" 423 # endif 424 425 # ifndef __cpp_lib_is_invocable 426 # error "__cpp_lib_is_invocable should be defined in c++20" 427 # endif 428 # if __cpp_lib_is_invocable != 201703L 429 # error "__cpp_lib_is_invocable should have the value 201703L in c++20" 430 # endif 431 432 # if !defined(_LIBCPP_VERSION) 433 # ifndef __cpp_lib_is_layout_compatible 434 # error "__cpp_lib_is_layout_compatible should be defined in c++20" 435 # endif 436 # if __cpp_lib_is_layout_compatible != 201907L 437 # error "__cpp_lib_is_layout_compatible should have the value 201907L in c++20" 438 # endif 439 # else // _LIBCPP_VERSION 440 # ifdef __cpp_lib_is_layout_compatible 441 # error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!" 442 # endif 443 # endif 444 445 # ifndef __cpp_lib_is_nothrow_convertible 446 # error "__cpp_lib_is_nothrow_convertible should be defined in c++20" 447 # endif 448 # if __cpp_lib_is_nothrow_convertible != 201806L 449 # error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++20" 450 # endif 451 452 # ifndef __cpp_lib_is_null_pointer 453 # error "__cpp_lib_is_null_pointer should be defined in c++20" 454 # endif 455 # if __cpp_lib_is_null_pointer != 201309L 456 # error "__cpp_lib_is_null_pointer should have the value 201309L in c++20" 457 # endif 458 459 # if !defined(_LIBCPP_VERSION) 460 # ifndef __cpp_lib_is_pointer_interconvertible 461 # error "__cpp_lib_is_pointer_interconvertible should be defined in c++20" 462 # endif 463 # if __cpp_lib_is_pointer_interconvertible != 201907L 464 # error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++20" 465 # endif 466 # else // _LIBCPP_VERSION 467 # ifdef __cpp_lib_is_pointer_interconvertible 468 # error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!" 469 # endif 470 # endif 471 472 # ifdef __cpp_lib_is_scoped_enum 473 # error "__cpp_lib_is_scoped_enum should not be defined before c++2b" 474 # endif 475 476 # ifndef __cpp_lib_is_swappable 477 # error "__cpp_lib_is_swappable should be defined in c++20" 478 # endif 479 # if __cpp_lib_is_swappable != 201603L 480 # error "__cpp_lib_is_swappable should have the value 201603L in c++20" 481 # endif 482 483 # ifndef __cpp_lib_logical_traits 484 # error "__cpp_lib_logical_traits should be defined in c++20" 485 # endif 486 # if __cpp_lib_logical_traits != 201510L 487 # error "__cpp_lib_logical_traits should have the value 201510L in c++20" 488 # endif 489 490 # ifndef __cpp_lib_remove_cvref 491 # error "__cpp_lib_remove_cvref should be defined in c++20" 492 # endif 493 # if __cpp_lib_remove_cvref != 201711L 494 # error "__cpp_lib_remove_cvref should have the value 201711L in c++20" 495 # endif 496 497 # ifndef __cpp_lib_result_of_sfinae 498 # error "__cpp_lib_result_of_sfinae should be defined in c++20" 499 # endif 500 # if __cpp_lib_result_of_sfinae != 201210L 501 # error "__cpp_lib_result_of_sfinae should have the value 201210L in c++20" 502 # endif 503 504 # ifndef __cpp_lib_transformation_trait_aliases 505 # error "__cpp_lib_transformation_trait_aliases should be defined in c++20" 506 # endif 507 # if __cpp_lib_transformation_trait_aliases != 201304L 508 # error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++20" 509 # endif 510 511 # ifndef __cpp_lib_type_trait_variable_templates 512 # error "__cpp_lib_type_trait_variable_templates should be defined in c++20" 513 # endif 514 # if __cpp_lib_type_trait_variable_templates != 201510L 515 # error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++20" 516 # endif 517 518 # ifndef __cpp_lib_void_t 519 # error "__cpp_lib_void_t should be defined in c++20" 520 # endif 521 # if __cpp_lib_void_t != 201411L 522 # error "__cpp_lib_void_t should have the value 201411L in c++20" 523 # endif 524 525 #elif TEST_STD_VER > 20 526 527 # ifndef __cpp_lib_bool_constant 528 # error "__cpp_lib_bool_constant should be defined in c++2b" 529 # endif 530 # if __cpp_lib_bool_constant != 201505L 531 # error "__cpp_lib_bool_constant should have the value 201505L in c++2b" 532 # endif 533 534 # ifndef __cpp_lib_bounded_array_traits 535 # error "__cpp_lib_bounded_array_traits should be defined in c++2b" 536 # endif 537 # if __cpp_lib_bounded_array_traits != 201902L 538 # error "__cpp_lib_bounded_array_traits should have the value 201902L in c++2b" 539 # endif 540 541 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 542 # ifndef __cpp_lib_has_unique_object_representations 543 # error "__cpp_lib_has_unique_object_representations should be defined in c++2b" 544 # endif 545 # if __cpp_lib_has_unique_object_representations != 201606L 546 # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2b" 547 # endif 548 # else 549 # ifdef __cpp_lib_has_unique_object_representations 550 # error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!" 551 # endif 552 # endif 553 554 # ifndef __cpp_lib_integral_constant_callable 555 # error "__cpp_lib_integral_constant_callable should be defined in c++2b" 556 # endif 557 # if __cpp_lib_integral_constant_callable != 201304L 558 # error "__cpp_lib_integral_constant_callable should have the value 201304L in c++2b" 559 # endif 560 561 # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 562 # ifndef __cpp_lib_is_aggregate 563 # error "__cpp_lib_is_aggregate should be defined in c++2b" 564 # endif 565 # if __cpp_lib_is_aggregate != 201703L 566 # error "__cpp_lib_is_aggregate should have the value 201703L in c++2b" 567 # endif 568 # else 569 # ifdef __cpp_lib_is_aggregate 570 # error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!" 571 # endif 572 # endif 573 574 # if TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 575 # ifndef __cpp_lib_is_constant_evaluated 576 # error "__cpp_lib_is_constant_evaluated should be defined in c++2b" 577 # endif 578 # if __cpp_lib_is_constant_evaluated != 201811L 579 # error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++2b" 580 # endif 581 # else 582 # ifdef __cpp_lib_is_constant_evaluated 583 # error "__cpp_lib_is_constant_evaluated should not be defined when TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 is not defined!" 584 # endif 585 # endif 586 587 # ifndef __cpp_lib_is_final 588 # error "__cpp_lib_is_final should be defined in c++2b" 589 # endif 590 # if __cpp_lib_is_final != 201402L 591 # error "__cpp_lib_is_final should have the value 201402L in c++2b" 592 # endif 593 594 # ifndef __cpp_lib_is_invocable 595 # error "__cpp_lib_is_invocable should be defined in c++2b" 596 # endif 597 # if __cpp_lib_is_invocable != 201703L 598 # error "__cpp_lib_is_invocable should have the value 201703L in c++2b" 599 # endif 600 601 # if !defined(_LIBCPP_VERSION) 602 # ifndef __cpp_lib_is_layout_compatible 603 # error "__cpp_lib_is_layout_compatible should be defined in c++2b" 604 # endif 605 # if __cpp_lib_is_layout_compatible != 201907L 606 # error "__cpp_lib_is_layout_compatible should have the value 201907L in c++2b" 607 # endif 608 # else // _LIBCPP_VERSION 609 # ifdef __cpp_lib_is_layout_compatible 610 # error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!" 611 # endif 612 # endif 613 614 # ifndef __cpp_lib_is_nothrow_convertible 615 # error "__cpp_lib_is_nothrow_convertible should be defined in c++2b" 616 # endif 617 # if __cpp_lib_is_nothrow_convertible != 201806L 618 # error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++2b" 619 # endif 620 621 # ifndef __cpp_lib_is_null_pointer 622 # error "__cpp_lib_is_null_pointer should be defined in c++2b" 623 # endif 624 # if __cpp_lib_is_null_pointer != 201309L 625 # error "__cpp_lib_is_null_pointer should have the value 201309L in c++2b" 626 # endif 627 628 # if !defined(_LIBCPP_VERSION) 629 # ifndef __cpp_lib_is_pointer_interconvertible 630 # error "__cpp_lib_is_pointer_interconvertible should be defined in c++2b" 631 # endif 632 # if __cpp_lib_is_pointer_interconvertible != 201907L 633 # error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++2b" 634 # endif 635 # else // _LIBCPP_VERSION 636 # ifdef __cpp_lib_is_pointer_interconvertible 637 # error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!" 638 # endif 639 # endif 640 641 # ifndef __cpp_lib_is_scoped_enum 642 # error "__cpp_lib_is_scoped_enum should be defined in c++2b" 643 # endif 644 # if __cpp_lib_is_scoped_enum != 202011L 645 # error "__cpp_lib_is_scoped_enum should have the value 202011L in c++2b" 646 # endif 647 648 # ifndef __cpp_lib_is_swappable 649 # error "__cpp_lib_is_swappable should be defined in c++2b" 650 # endif 651 # if __cpp_lib_is_swappable != 201603L 652 # error "__cpp_lib_is_swappable should have the value 201603L in c++2b" 653 # endif 654 655 # ifndef __cpp_lib_logical_traits 656 # error "__cpp_lib_logical_traits should be defined in c++2b" 657 # endif 658 # if __cpp_lib_logical_traits != 201510L 659 # error "__cpp_lib_logical_traits should have the value 201510L in c++2b" 660 # endif 661 662 # ifndef __cpp_lib_remove_cvref 663 # error "__cpp_lib_remove_cvref should be defined in c++2b" 664 # endif 665 # if __cpp_lib_remove_cvref != 201711L 666 # error "__cpp_lib_remove_cvref should have the value 201711L in c++2b" 667 # endif 668 669 # ifndef __cpp_lib_result_of_sfinae 670 # error "__cpp_lib_result_of_sfinae should be defined in c++2b" 671 # endif 672 # if __cpp_lib_result_of_sfinae != 201210L 673 # error "__cpp_lib_result_of_sfinae should have the value 201210L in c++2b" 674 # endif 675 676 # ifndef __cpp_lib_transformation_trait_aliases 677 # error "__cpp_lib_transformation_trait_aliases should be defined in c++2b" 678 # endif 679 # if __cpp_lib_transformation_trait_aliases != 201304L 680 # error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++2b" 681 # endif 682 683 # ifndef __cpp_lib_type_trait_variable_templates 684 # error "__cpp_lib_type_trait_variable_templates should be defined in c++2b" 685 # endif 686 # if __cpp_lib_type_trait_variable_templates != 201510L 687 # error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++2b" 688 # endif 689 690 # ifndef __cpp_lib_void_t 691 # error "__cpp_lib_void_t should be defined in c++2b" 692 # endif 693 # if __cpp_lib_void_t != 201411L 694 # error "__cpp_lib_void_t should have the value 201411L in c++2b" 695 # endif 696 697 #endif // TEST_STD_VER > 20 698 main(int,char **)699int main(int, char**) { return 0; } 700