399 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9// WARNING: This test was generated by generate_feature_test_macro_components.py10// and should not be edited manually.11 12// <map>13 14// Test the feature test macros defined by <map>15 16// clang-format off17 18#include <map>19#include "test_macros.h"20 21#if TEST_STD_VER < 1422 23# ifdef __cpp_lib_allocator_traits_is_always_equal24# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"25# endif26 27# ifdef __cpp_lib_associative_heterogeneous_erasure28# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"29# endif30 31# ifdef __cpp_lib_associative_heterogeneous_insertion32# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"33# endif34 35# ifdef __cpp_lib_containers_ranges36# error "__cpp_lib_containers_ranges should not be defined before c++23"37# endif38 39# ifdef __cpp_lib_erase_if40# error "__cpp_lib_erase_if should not be defined before c++20"41# endif42 43# ifdef __cpp_lib_generic_associative_lookup44# error "__cpp_lib_generic_associative_lookup should not be defined before c++14"45# endif46 47# ifdef __cpp_lib_map_try_emplace48# error "__cpp_lib_map_try_emplace should not be defined before c++17"49# endif50 51# ifdef __cpp_lib_node_extract52# error "__cpp_lib_node_extract should not be defined before c++17"53# endif54 55# ifdef __cpp_lib_nonmember_container_access56# error "__cpp_lib_nonmember_container_access should not be defined before c++17"57# endif58 59# ifdef __cpp_lib_tuple_like60# error "__cpp_lib_tuple_like should not be defined before c++23"61# endif62 63#elif TEST_STD_VER == 1464 65# ifdef __cpp_lib_allocator_traits_is_always_equal66# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"67# endif68 69# ifdef __cpp_lib_associative_heterogeneous_erasure70# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"71# endif72 73# ifdef __cpp_lib_associative_heterogeneous_insertion74# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"75# endif76 77# ifdef __cpp_lib_containers_ranges78# error "__cpp_lib_containers_ranges should not be defined before c++23"79# endif80 81# ifdef __cpp_lib_erase_if82# error "__cpp_lib_erase_if should not be defined before c++20"83# endif84 85# ifndef __cpp_lib_generic_associative_lookup86# error "__cpp_lib_generic_associative_lookup should be defined in c++14"87# endif88# if __cpp_lib_generic_associative_lookup != 201304L89# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++14"90# endif91 92# ifdef __cpp_lib_map_try_emplace93# error "__cpp_lib_map_try_emplace should not be defined before c++17"94# endif95 96# ifdef __cpp_lib_node_extract97# error "__cpp_lib_node_extract should not be defined before c++17"98# endif99 100# ifdef __cpp_lib_nonmember_container_access101# error "__cpp_lib_nonmember_container_access should not be defined before c++17"102# endif103 104# ifdef __cpp_lib_tuple_like105# error "__cpp_lib_tuple_like should not be defined before c++23"106# endif107 108#elif TEST_STD_VER == 17109 110# ifndef __cpp_lib_allocator_traits_is_always_equal111# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17"112# endif113# if __cpp_lib_allocator_traits_is_always_equal != 201411L114# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"115# endif116 117# ifdef __cpp_lib_associative_heterogeneous_erasure118# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"119# endif120 121# ifdef __cpp_lib_associative_heterogeneous_insertion122# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"123# endif124 125# ifdef __cpp_lib_containers_ranges126# error "__cpp_lib_containers_ranges should not be defined before c++23"127# endif128 129# ifdef __cpp_lib_erase_if130# error "__cpp_lib_erase_if should not be defined before c++20"131# endif132 133# ifndef __cpp_lib_generic_associative_lookup134# error "__cpp_lib_generic_associative_lookup should be defined in c++17"135# endif136# if __cpp_lib_generic_associative_lookup != 201304L137# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++17"138# endif139 140# ifndef __cpp_lib_map_try_emplace141# error "__cpp_lib_map_try_emplace should be defined in c++17"142# endif143# if __cpp_lib_map_try_emplace != 201411L144# error "__cpp_lib_map_try_emplace should have the value 201411L in c++17"145# endif146 147# ifndef __cpp_lib_node_extract148# error "__cpp_lib_node_extract should be defined in c++17"149# endif150# if __cpp_lib_node_extract != 201606L151# error "__cpp_lib_node_extract should have the value 201606L in c++17"152# endif153 154# ifndef __cpp_lib_nonmember_container_access155# error "__cpp_lib_nonmember_container_access should be defined in c++17"156# endif157# if __cpp_lib_nonmember_container_access != 201411L158# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"159# endif160 161# ifdef __cpp_lib_tuple_like162# error "__cpp_lib_tuple_like should not be defined before c++23"163# endif164 165#elif TEST_STD_VER == 20166 167# ifndef __cpp_lib_allocator_traits_is_always_equal168# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++20"169# endif170# if __cpp_lib_allocator_traits_is_always_equal != 201411L171# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"172# endif173 174# ifdef __cpp_lib_associative_heterogeneous_erasure175# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"176# endif177 178# ifdef __cpp_lib_associative_heterogeneous_insertion179# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"180# endif181 182# ifdef __cpp_lib_containers_ranges183# error "__cpp_lib_containers_ranges should not be defined before c++23"184# endif185 186# ifndef __cpp_lib_erase_if187# error "__cpp_lib_erase_if should be defined in c++20"188# endif189# if __cpp_lib_erase_if != 202002L190# error "__cpp_lib_erase_if should have the value 202002L in c++20"191# endif192 193# ifndef __cpp_lib_generic_associative_lookup194# error "__cpp_lib_generic_associative_lookup should be defined in c++20"195# endif196# if __cpp_lib_generic_associative_lookup != 201304L197# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++20"198# endif199 200# ifndef __cpp_lib_map_try_emplace201# error "__cpp_lib_map_try_emplace should be defined in c++20"202# endif203# if __cpp_lib_map_try_emplace != 201411L204# error "__cpp_lib_map_try_emplace should have the value 201411L in c++20"205# endif206 207# ifndef __cpp_lib_node_extract208# error "__cpp_lib_node_extract should be defined in c++20"209# endif210# if __cpp_lib_node_extract != 201606L211# error "__cpp_lib_node_extract should have the value 201606L in c++20"212# endif213 214# ifndef __cpp_lib_nonmember_container_access215# error "__cpp_lib_nonmember_container_access should be defined in c++20"216# endif217# if __cpp_lib_nonmember_container_access != 201411L218# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"219# endif220 221# ifdef __cpp_lib_tuple_like222# error "__cpp_lib_tuple_like should not be defined before c++23"223# endif224 225#elif TEST_STD_VER == 23226 227# ifndef __cpp_lib_allocator_traits_is_always_equal228# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"229# endif230# if __cpp_lib_allocator_traits_is_always_equal != 201411L231# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"232# endif233 234# if !defined(_LIBCPP_VERSION)235# ifndef __cpp_lib_associative_heterogeneous_erasure236# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++23"237# endif238# if __cpp_lib_associative_heterogeneous_erasure != 202110L239# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++23"240# endif241# else242# ifdef __cpp_lib_associative_heterogeneous_erasure243# error "__cpp_lib_associative_heterogeneous_erasure should not be defined because it is unimplemented in libc++!"244# endif245# endif246 247# ifdef __cpp_lib_associative_heterogeneous_insertion248# error "__cpp_lib_associative_heterogeneous_insertion should not be defined before c++26"249# endif250 251# ifndef __cpp_lib_containers_ranges252# error "__cpp_lib_containers_ranges should be defined in c++23"253# endif254# if __cpp_lib_containers_ranges != 202202L255# error "__cpp_lib_containers_ranges should have the value 202202L in c++23"256# endif257 258# ifndef __cpp_lib_erase_if259# error "__cpp_lib_erase_if should be defined in c++23"260# endif261# if __cpp_lib_erase_if != 202002L262# error "__cpp_lib_erase_if should have the value 202002L in c++23"263# endif264 265# ifndef __cpp_lib_generic_associative_lookup266# error "__cpp_lib_generic_associative_lookup should be defined in c++23"267# endif268# if __cpp_lib_generic_associative_lookup != 201304L269# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++23"270# endif271 272# ifndef __cpp_lib_map_try_emplace273# error "__cpp_lib_map_try_emplace should be defined in c++23"274# endif275# if __cpp_lib_map_try_emplace != 201411L276# error "__cpp_lib_map_try_emplace should have the value 201411L in c++23"277# endif278 279# ifndef __cpp_lib_node_extract280# error "__cpp_lib_node_extract should be defined in c++23"281# endif282# if __cpp_lib_node_extract != 201606L283# error "__cpp_lib_node_extract should have the value 201606L in c++23"284# endif285 286# ifndef __cpp_lib_nonmember_container_access287# error "__cpp_lib_nonmember_container_access should be defined in c++23"288# endif289# if __cpp_lib_nonmember_container_access != 201411L290# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"291# endif292 293# if !defined(_LIBCPP_VERSION)294# ifndef __cpp_lib_tuple_like295# error "__cpp_lib_tuple_like should be defined in c++23"296# endif297# if __cpp_lib_tuple_like != 202207L298# error "__cpp_lib_tuple_like should have the value 202207L in c++23"299# endif300# else301# ifdef __cpp_lib_tuple_like302# error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"303# endif304# endif305 306#elif TEST_STD_VER > 23307 308# ifndef __cpp_lib_allocator_traits_is_always_equal309# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++26"310# endif311# if __cpp_lib_allocator_traits_is_always_equal != 201411L312# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"313# endif314 315# if !defined(_LIBCPP_VERSION)316# ifndef __cpp_lib_associative_heterogeneous_erasure317# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++26"318# endif319# if __cpp_lib_associative_heterogeneous_erasure != 202110L320# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++26"321# endif322# else323# ifdef __cpp_lib_associative_heterogeneous_erasure324# error "__cpp_lib_associative_heterogeneous_erasure should not be defined because it is unimplemented in libc++!"325# endif326# endif327 328# if !defined(_LIBCPP_VERSION)329# ifndef __cpp_lib_associative_heterogeneous_insertion330# error "__cpp_lib_associative_heterogeneous_insertion should be defined in c++26"331# endif332# if __cpp_lib_associative_heterogeneous_insertion != 202306L333# error "__cpp_lib_associative_heterogeneous_insertion should have the value 202306L in c++26"334# endif335# else336# ifdef __cpp_lib_associative_heterogeneous_insertion337# error "__cpp_lib_associative_heterogeneous_insertion should not be defined because it is unimplemented in libc++!"338# endif339# endif340 341# ifndef __cpp_lib_containers_ranges342# error "__cpp_lib_containers_ranges should be defined in c++26"343# endif344# if __cpp_lib_containers_ranges != 202202L345# error "__cpp_lib_containers_ranges should have the value 202202L in c++26"346# endif347 348# ifndef __cpp_lib_erase_if349# error "__cpp_lib_erase_if should be defined in c++26"350# endif351# if __cpp_lib_erase_if != 202002L352# error "__cpp_lib_erase_if should have the value 202002L in c++26"353# endif354 355# ifndef __cpp_lib_generic_associative_lookup356# error "__cpp_lib_generic_associative_lookup should be defined in c++26"357# endif358# if __cpp_lib_generic_associative_lookup != 201304L359# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++26"360# endif361 362# ifndef __cpp_lib_map_try_emplace363# error "__cpp_lib_map_try_emplace should be defined in c++26"364# endif365# if __cpp_lib_map_try_emplace != 201411L366# error "__cpp_lib_map_try_emplace should have the value 201411L in c++26"367# endif368 369# ifndef __cpp_lib_node_extract370# error "__cpp_lib_node_extract should be defined in c++26"371# endif372# if __cpp_lib_node_extract != 201606L373# error "__cpp_lib_node_extract should have the value 201606L in c++26"374# endif375 376# ifndef __cpp_lib_nonmember_container_access377# error "__cpp_lib_nonmember_container_access should be defined in c++26"378# endif379# if __cpp_lib_nonmember_container_access != 201411L380# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++26"381# endif382 383# if !defined(_LIBCPP_VERSION)384# ifndef __cpp_lib_tuple_like385# error "__cpp_lib_tuple_like should be defined in c++26"386# endif387# if __cpp_lib_tuple_like != 202311L388# error "__cpp_lib_tuple_like should have the value 202311L in c++26"389# endif390# else391# ifdef __cpp_lib_tuple_like392# error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!"393# endif394# endif395 396#endif // TEST_STD_VER > 23397 398// clang-format on399