version.version.pass.cpp 71 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136
  1. //===----------------------------------------------------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is dual licensed under the MIT and the University of Illinois Open
  6. // Source Licenses. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // WARNING: This test was generated by generate_feature_test_macros_tests.py and
  11. // should not be edited manually.
  12. // <version>
  13. // Test the feature test macros defined by <version>
  14. /* Constant Value
  15. __cpp_lib_addressof_constexpr 201603L [C++17]
  16. __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
  17. __cpp_lib_any 201606L [C++17]
  18. __cpp_lib_apply 201603L [C++17]
  19. __cpp_lib_array_constexpr 201603L [C++17]
  20. __cpp_lib_as_const 201510L [C++17]
  21. __cpp_lib_atomic_is_always_lock_free 201603L [C++17]
  22. __cpp_lib_atomic_ref 201806L [C++2a]
  23. __cpp_lib_bind_front 201811L [C++2a]
  24. __cpp_lib_bit_cast 201806L [C++2a]
  25. __cpp_lib_bool_constant 201505L [C++17]
  26. __cpp_lib_boyer_moore_searcher 201603L [C++17]
  27. __cpp_lib_byte 201603L [C++17]
  28. __cpp_lib_char8_t 201811L [C++2a]
  29. __cpp_lib_chrono 201611L [C++17]
  30. __cpp_lib_chrono_udls 201304L [C++14]
  31. __cpp_lib_clamp 201603L [C++17]
  32. __cpp_lib_complex_udls 201309L [C++14]
  33. __cpp_lib_concepts 201806L [C++2a]
  34. __cpp_lib_constexpr_misc 201811L [C++2a]
  35. __cpp_lib_constexpr_swap_algorithms 201806L [C++2a]
  36. __cpp_lib_destroying_delete 201806L [C++2a]
  37. __cpp_lib_enable_shared_from_this 201603L [C++17]
  38. __cpp_lib_erase_if 201811L [C++2a]
  39. __cpp_lib_exchange_function 201304L [C++14]
  40. __cpp_lib_execution 201603L [C++17]
  41. __cpp_lib_filesystem 201703L [C++17]
  42. __cpp_lib_gcd_lcm 201606L [C++17]
  43. __cpp_lib_generic_associative_lookup 201304L [C++14]
  44. __cpp_lib_generic_unordered_lookup 201811L [C++2a]
  45. __cpp_lib_hardware_interference_size 201703L [C++17]
  46. __cpp_lib_has_unique_object_representations 201606L [C++17]
  47. __cpp_lib_hypot 201603L [C++17]
  48. __cpp_lib_incomplete_container_elements 201505L [C++17]
  49. __cpp_lib_integer_sequence 201304L [C++14]
  50. __cpp_lib_integral_constant_callable 201304L [C++14]
  51. __cpp_lib_invoke 201411L [C++17]
  52. __cpp_lib_is_aggregate 201703L [C++17]
  53. __cpp_lib_is_constant_evaluated 201811L [C++2a]
  54. __cpp_lib_is_final 201402L [C++14]
  55. __cpp_lib_is_invocable 201703L [C++17]
  56. __cpp_lib_is_null_pointer 201309L [C++14]
  57. __cpp_lib_is_swappable 201603L [C++17]
  58. __cpp_lib_launder 201606L [C++17]
  59. __cpp_lib_list_remove_return_type 201806L [C++2a]
  60. __cpp_lib_logical_traits 201510L [C++17]
  61. __cpp_lib_make_from_tuple 201606L [C++17]
  62. __cpp_lib_make_reverse_iterator 201402L [C++14]
  63. __cpp_lib_make_unique 201304L [C++14]
  64. __cpp_lib_map_try_emplace 201411L [C++17]
  65. __cpp_lib_math_special_functions 201603L [C++17]
  66. __cpp_lib_memory_resource 201603L [C++17]
  67. __cpp_lib_node_extract 201606L [C++17]
  68. __cpp_lib_nonmember_container_access 201411L [C++17]
  69. __cpp_lib_not_fn 201603L [C++17]
  70. __cpp_lib_null_iterators 201304L [C++14]
  71. __cpp_lib_optional 201606L [C++17]
  72. __cpp_lib_parallel_algorithm 201603L [C++17]
  73. __cpp_lib_quoted_string_io 201304L [C++14]
  74. __cpp_lib_ranges 201811L [C++2a]
  75. __cpp_lib_raw_memory_algorithms 201606L [C++17]
  76. __cpp_lib_result_of_sfinae 201210L [C++14]
  77. __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
  78. __cpp_lib_sample 201603L [C++17]
  79. __cpp_lib_scoped_lock 201703L [C++17]
  80. __cpp_lib_shared_mutex 201505L [C++17]
  81. __cpp_lib_shared_ptr_arrays 201611L [C++17]
  82. __cpp_lib_shared_ptr_weak_type 201606L [C++17]
  83. __cpp_lib_shared_timed_mutex 201402L [C++14]
  84. __cpp_lib_string_udls 201304L [C++14]
  85. __cpp_lib_string_view 201606L [C++17]
  86. __cpp_lib_three_way_comparison 201711L [C++2a]
  87. __cpp_lib_to_chars 201611L [C++17]
  88. __cpp_lib_transformation_trait_aliases 201304L [C++14]
  89. __cpp_lib_transparent_operators 201210L [C++14]
  90. 201510L [C++17]
  91. __cpp_lib_tuple_element_t 201402L [C++14]
  92. __cpp_lib_tuples_by_type 201304L [C++14]
  93. __cpp_lib_type_trait_variable_templates 201510L [C++17]
  94. __cpp_lib_uncaught_exceptions 201411L [C++17]
  95. __cpp_lib_unordered_map_try_emplace 201411L [C++17]
  96. __cpp_lib_variant 201606L [C++17]
  97. __cpp_lib_void_t 201411L [C++17]
  98. */
  99. #include <version>
  100. #include "test_macros.h"
  101. #if TEST_STD_VER < 14
  102. # ifdef __cpp_lib_addressof_constexpr
  103. # error "__cpp_lib_addressof_constexpr should not be defined before c++17"
  104. # endif
  105. # ifdef __cpp_lib_allocator_traits_is_always_equal
  106. # error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
  107. # endif
  108. # ifdef __cpp_lib_any
  109. # error "__cpp_lib_any should not be defined before c++17"
  110. # endif
  111. # ifdef __cpp_lib_apply
  112. # error "__cpp_lib_apply should not be defined before c++17"
  113. # endif
  114. # ifdef __cpp_lib_array_constexpr
  115. # error "__cpp_lib_array_constexpr should not be defined before c++17"
  116. # endif
  117. # ifdef __cpp_lib_as_const
  118. # error "__cpp_lib_as_const should not be defined before c++17"
  119. # endif
  120. # ifdef __cpp_lib_atomic_is_always_lock_free
  121. # error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17"
  122. # endif
  123. # ifdef __cpp_lib_atomic_ref
  124. # error "__cpp_lib_atomic_ref should not be defined before c++2a"
  125. # endif
  126. # ifdef __cpp_lib_bind_front
  127. # error "__cpp_lib_bind_front should not be defined before c++2a"
  128. # endif
  129. # ifdef __cpp_lib_bit_cast
  130. # error "__cpp_lib_bit_cast should not be defined before c++2a"
  131. # endif
  132. # ifdef __cpp_lib_bool_constant
  133. # error "__cpp_lib_bool_constant should not be defined before c++17"
  134. # endif
  135. # ifdef __cpp_lib_boyer_moore_searcher
  136. # error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
  137. # endif
  138. # ifdef __cpp_lib_byte
  139. # error "__cpp_lib_byte should not be defined before c++17"
  140. # endif
  141. # ifdef __cpp_lib_char8_t
  142. # error "__cpp_lib_char8_t should not be defined before c++2a"
  143. # endif
  144. # ifdef __cpp_lib_chrono
  145. # error "__cpp_lib_chrono should not be defined before c++17"
  146. # endif
  147. # ifdef __cpp_lib_chrono_udls
  148. # error "__cpp_lib_chrono_udls should not be defined before c++14"
  149. # endif
  150. # ifdef __cpp_lib_clamp
  151. # error "__cpp_lib_clamp should not be defined before c++17"
  152. # endif
  153. # ifdef __cpp_lib_complex_udls
  154. # error "__cpp_lib_complex_udls should not be defined before c++14"
  155. # endif
  156. # ifdef __cpp_lib_concepts
  157. # error "__cpp_lib_concepts should not be defined before c++2a"
  158. # endif
  159. # ifdef __cpp_lib_constexpr_misc
  160. # error "__cpp_lib_constexpr_misc should not be defined before c++2a"
  161. # endif
  162. # ifdef __cpp_lib_constexpr_swap_algorithms
  163. # error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a"
  164. # endif
  165. # ifdef __cpp_lib_destroying_delete
  166. # error "__cpp_lib_destroying_delete should not be defined before c++2a"
  167. # endif
  168. # ifdef __cpp_lib_enable_shared_from_this
  169. # error "__cpp_lib_enable_shared_from_this should not be defined before c++17"
  170. # endif
  171. # ifdef __cpp_lib_erase_if
  172. # error "__cpp_lib_erase_if should not be defined before c++2a"
  173. # endif
  174. # ifdef __cpp_lib_exchange_function
  175. # error "__cpp_lib_exchange_function should not be defined before c++14"
  176. # endif
  177. # ifdef __cpp_lib_execution
  178. # error "__cpp_lib_execution should not be defined before c++17"
  179. # endif
  180. # ifdef __cpp_lib_filesystem
  181. # error "__cpp_lib_filesystem should not be defined before c++17"
  182. # endif
  183. # ifdef __cpp_lib_gcd_lcm
  184. # error "__cpp_lib_gcd_lcm should not be defined before c++17"
  185. # endif
  186. # ifdef __cpp_lib_generic_associative_lookup
  187. # error "__cpp_lib_generic_associative_lookup should not be defined before c++14"
  188. # endif
  189. # ifdef __cpp_lib_generic_unordered_lookup
  190. # error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a"
  191. # endif
  192. # ifdef __cpp_lib_hardware_interference_size
  193. # error "__cpp_lib_hardware_interference_size should not be defined before c++17"
  194. # endif
  195. # ifdef __cpp_lib_has_unique_object_representations
  196. # error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
  197. # endif
  198. # ifdef __cpp_lib_hypot
  199. # error "__cpp_lib_hypot should not be defined before c++17"
  200. # endif
  201. # ifdef __cpp_lib_incomplete_container_elements
  202. # error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
  203. # endif
  204. # ifdef __cpp_lib_integer_sequence
  205. # error "__cpp_lib_integer_sequence should not be defined before c++14"
  206. # endif
  207. # ifdef __cpp_lib_integral_constant_callable
  208. # error "__cpp_lib_integral_constant_callable should not be defined before c++14"
  209. # endif
  210. # ifdef __cpp_lib_invoke
  211. # error "__cpp_lib_invoke should not be defined before c++17"
  212. # endif
  213. # ifdef __cpp_lib_is_aggregate
  214. # error "__cpp_lib_is_aggregate should not be defined before c++17"
  215. # endif
  216. # ifdef __cpp_lib_is_constant_evaluated
  217. # error "__cpp_lib_is_constant_evaluated should not be defined before c++2a"
  218. # endif
  219. # ifdef __cpp_lib_is_final
  220. # error "__cpp_lib_is_final should not be defined before c++14"
  221. # endif
  222. # ifdef __cpp_lib_is_invocable
  223. # error "__cpp_lib_is_invocable should not be defined before c++17"
  224. # endif
  225. # ifdef __cpp_lib_is_null_pointer
  226. # error "__cpp_lib_is_null_pointer should not be defined before c++14"
  227. # endif
  228. # ifdef __cpp_lib_is_swappable
  229. # error "__cpp_lib_is_swappable should not be defined before c++17"
  230. # endif
  231. # ifdef __cpp_lib_launder
  232. # error "__cpp_lib_launder should not be defined before c++17"
  233. # endif
  234. # ifdef __cpp_lib_list_remove_return_type
  235. # error "__cpp_lib_list_remove_return_type should not be defined before c++2a"
  236. # endif
  237. # ifdef __cpp_lib_logical_traits
  238. # error "__cpp_lib_logical_traits should not be defined before c++17"
  239. # endif
  240. # ifdef __cpp_lib_make_from_tuple
  241. # error "__cpp_lib_make_from_tuple should not be defined before c++17"
  242. # endif
  243. # ifdef __cpp_lib_make_reverse_iterator
  244. # error "__cpp_lib_make_reverse_iterator should not be defined before c++14"
  245. # endif
  246. # ifdef __cpp_lib_make_unique
  247. # error "__cpp_lib_make_unique should not be defined before c++14"
  248. # endif
  249. # ifdef __cpp_lib_map_try_emplace
  250. # error "__cpp_lib_map_try_emplace should not be defined before c++17"
  251. # endif
  252. # ifdef __cpp_lib_math_special_functions
  253. # error "__cpp_lib_math_special_functions should not be defined before c++17"
  254. # endif
  255. # ifdef __cpp_lib_memory_resource
  256. # error "__cpp_lib_memory_resource should not be defined before c++17"
  257. # endif
  258. # ifdef __cpp_lib_node_extract
  259. # error "__cpp_lib_node_extract should not be defined before c++17"
  260. # endif
  261. # ifdef __cpp_lib_nonmember_container_access
  262. # error "__cpp_lib_nonmember_container_access should not be defined before c++17"
  263. # endif
  264. # ifdef __cpp_lib_not_fn
  265. # error "__cpp_lib_not_fn should not be defined before c++17"
  266. # endif
  267. # ifdef __cpp_lib_null_iterators
  268. # error "__cpp_lib_null_iterators should not be defined before c++14"
  269. # endif
  270. # ifdef __cpp_lib_optional
  271. # error "__cpp_lib_optional should not be defined before c++17"
  272. # endif
  273. # ifdef __cpp_lib_parallel_algorithm
  274. # error "__cpp_lib_parallel_algorithm should not be defined before c++17"
  275. # endif
  276. # ifdef __cpp_lib_quoted_string_io
  277. # error "__cpp_lib_quoted_string_io should not be defined before c++14"
  278. # endif
  279. # ifdef __cpp_lib_ranges
  280. # error "__cpp_lib_ranges should not be defined before c++2a"
  281. # endif
  282. # ifdef __cpp_lib_raw_memory_algorithms
  283. # error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
  284. # endif
  285. # ifdef __cpp_lib_result_of_sfinae
  286. # error "__cpp_lib_result_of_sfinae should not be defined before c++14"
  287. # endif
  288. # ifdef __cpp_lib_robust_nonmodifying_seq_ops
  289. # error "__cpp_lib_robust_nonmodifying_seq_ops should not be defined before c++14"
  290. # endif
  291. # ifdef __cpp_lib_sample
  292. # error "__cpp_lib_sample should not be defined before c++17"
  293. # endif
  294. # ifdef __cpp_lib_scoped_lock
  295. # error "__cpp_lib_scoped_lock should not be defined before c++17"
  296. # endif
  297. # ifdef __cpp_lib_shared_mutex
  298. # error "__cpp_lib_shared_mutex should not be defined before c++17"
  299. # endif
  300. # ifdef __cpp_lib_shared_ptr_arrays
  301. # error "__cpp_lib_shared_ptr_arrays should not be defined before c++17"
  302. # endif
  303. # ifdef __cpp_lib_shared_ptr_weak_type
  304. # error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17"
  305. # endif
  306. # ifdef __cpp_lib_shared_timed_mutex
  307. # error "__cpp_lib_shared_timed_mutex should not be defined before c++14"
  308. # endif
  309. # ifdef __cpp_lib_string_udls
  310. # error "__cpp_lib_string_udls should not be defined before c++14"
  311. # endif
  312. # ifdef __cpp_lib_string_view
  313. # error "__cpp_lib_string_view should not be defined before c++17"
  314. # endif
  315. # ifdef __cpp_lib_three_way_comparison
  316. # error "__cpp_lib_three_way_comparison should not be defined before c++2a"
  317. # endif
  318. # ifdef __cpp_lib_to_chars
  319. # error "__cpp_lib_to_chars should not be defined before c++17"
  320. # endif
  321. # ifdef __cpp_lib_transformation_trait_aliases
  322. # error "__cpp_lib_transformation_trait_aliases should not be defined before c++14"
  323. # endif
  324. # ifdef __cpp_lib_transparent_operators
  325. # error "__cpp_lib_transparent_operators should not be defined before c++14"
  326. # endif
  327. # ifdef __cpp_lib_tuple_element_t
  328. # error "__cpp_lib_tuple_element_t should not be defined before c++14"
  329. # endif
  330. # ifdef __cpp_lib_tuples_by_type
  331. # error "__cpp_lib_tuples_by_type should not be defined before c++14"
  332. # endif
  333. # ifdef __cpp_lib_type_trait_variable_templates
  334. # error "__cpp_lib_type_trait_variable_templates should not be defined before c++17"
  335. # endif
  336. # ifdef __cpp_lib_uncaught_exceptions
  337. # error "__cpp_lib_uncaught_exceptions should not be defined before c++17"
  338. # endif
  339. # ifdef __cpp_lib_unordered_map_try_emplace
  340. # error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
  341. # endif
  342. # ifdef __cpp_lib_variant
  343. # error "__cpp_lib_variant should not be defined before c++17"
  344. # endif
  345. # ifdef __cpp_lib_void_t
  346. # error "__cpp_lib_void_t should not be defined before c++17"
  347. # endif
  348. #elif TEST_STD_VER == 14
  349. # ifdef __cpp_lib_addressof_constexpr
  350. # error "__cpp_lib_addressof_constexpr should not be defined before c++17"
  351. # endif
  352. # ifdef __cpp_lib_allocator_traits_is_always_equal
  353. # error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
  354. # endif
  355. # ifdef __cpp_lib_any
  356. # error "__cpp_lib_any should not be defined before c++17"
  357. # endif
  358. # ifdef __cpp_lib_apply
  359. # error "__cpp_lib_apply should not be defined before c++17"
  360. # endif
  361. # ifdef __cpp_lib_array_constexpr
  362. # error "__cpp_lib_array_constexpr should not be defined before c++17"
  363. # endif
  364. # ifdef __cpp_lib_as_const
  365. # error "__cpp_lib_as_const should not be defined before c++17"
  366. # endif
  367. # ifdef __cpp_lib_atomic_is_always_lock_free
  368. # error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17"
  369. # endif
  370. # ifdef __cpp_lib_atomic_ref
  371. # error "__cpp_lib_atomic_ref should not be defined before c++2a"
  372. # endif
  373. # ifdef __cpp_lib_bind_front
  374. # error "__cpp_lib_bind_front should not be defined before c++2a"
  375. # endif
  376. # ifdef __cpp_lib_bit_cast
  377. # error "__cpp_lib_bit_cast should not be defined before c++2a"
  378. # endif
  379. # ifdef __cpp_lib_bool_constant
  380. # error "__cpp_lib_bool_constant should not be defined before c++17"
  381. # endif
  382. # ifdef __cpp_lib_boyer_moore_searcher
  383. # error "__cpp_lib_boyer_moore_searcher should not be defined before c++17"
  384. # endif
  385. # ifdef __cpp_lib_byte
  386. # error "__cpp_lib_byte should not be defined before c++17"
  387. # endif
  388. # ifdef __cpp_lib_char8_t
  389. # error "__cpp_lib_char8_t should not be defined before c++2a"
  390. # endif
  391. # ifdef __cpp_lib_chrono
  392. # error "__cpp_lib_chrono should not be defined before c++17"
  393. # endif
  394. # ifndef __cpp_lib_chrono_udls
  395. # error "__cpp_lib_chrono_udls should be defined in c++14"
  396. # endif
  397. # if __cpp_lib_chrono_udls != 201304L
  398. # error "__cpp_lib_chrono_udls should have the value 201304L in c++14"
  399. # endif
  400. # ifdef __cpp_lib_clamp
  401. # error "__cpp_lib_clamp should not be defined before c++17"
  402. # endif
  403. # ifndef __cpp_lib_complex_udls
  404. # error "__cpp_lib_complex_udls should be defined in c++14"
  405. # endif
  406. # if __cpp_lib_complex_udls != 201309L
  407. # error "__cpp_lib_complex_udls should have the value 201309L in c++14"
  408. # endif
  409. # ifdef __cpp_lib_concepts
  410. # error "__cpp_lib_concepts should not be defined before c++2a"
  411. # endif
  412. # ifdef __cpp_lib_constexpr_misc
  413. # error "__cpp_lib_constexpr_misc should not be defined before c++2a"
  414. # endif
  415. # ifdef __cpp_lib_constexpr_swap_algorithms
  416. # error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a"
  417. # endif
  418. # ifdef __cpp_lib_destroying_delete
  419. # error "__cpp_lib_destroying_delete should not be defined before c++2a"
  420. # endif
  421. # ifdef __cpp_lib_enable_shared_from_this
  422. # error "__cpp_lib_enable_shared_from_this should not be defined before c++17"
  423. # endif
  424. # ifdef __cpp_lib_erase_if
  425. # error "__cpp_lib_erase_if should not be defined before c++2a"
  426. # endif
  427. # ifndef __cpp_lib_exchange_function
  428. # error "__cpp_lib_exchange_function should be defined in c++14"
  429. # endif
  430. # if __cpp_lib_exchange_function != 201304L
  431. # error "__cpp_lib_exchange_function should have the value 201304L in c++14"
  432. # endif
  433. # ifdef __cpp_lib_execution
  434. # error "__cpp_lib_execution should not be defined before c++17"
  435. # endif
  436. # ifdef __cpp_lib_filesystem
  437. # error "__cpp_lib_filesystem should not be defined before c++17"
  438. # endif
  439. # ifdef __cpp_lib_gcd_lcm
  440. # error "__cpp_lib_gcd_lcm should not be defined before c++17"
  441. # endif
  442. # ifndef __cpp_lib_generic_associative_lookup
  443. # error "__cpp_lib_generic_associative_lookup should be defined in c++14"
  444. # endif
  445. # if __cpp_lib_generic_associative_lookup != 201304L
  446. # error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++14"
  447. # endif
  448. # ifdef __cpp_lib_generic_unordered_lookup
  449. # error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a"
  450. # endif
  451. # ifdef __cpp_lib_hardware_interference_size
  452. # error "__cpp_lib_hardware_interference_size should not be defined before c++17"
  453. # endif
  454. # ifdef __cpp_lib_has_unique_object_representations
  455. # error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
  456. # endif
  457. # ifdef __cpp_lib_hypot
  458. # error "__cpp_lib_hypot should not be defined before c++17"
  459. # endif
  460. # ifdef __cpp_lib_incomplete_container_elements
  461. # error "__cpp_lib_incomplete_container_elements should not be defined before c++17"
  462. # endif
  463. # ifndef __cpp_lib_integer_sequence
  464. # error "__cpp_lib_integer_sequence should be defined in c++14"
  465. # endif
  466. # if __cpp_lib_integer_sequence != 201304L
  467. # error "__cpp_lib_integer_sequence should have the value 201304L in c++14"
  468. # endif
  469. # ifndef __cpp_lib_integral_constant_callable
  470. # error "__cpp_lib_integral_constant_callable should be defined in c++14"
  471. # endif
  472. # if __cpp_lib_integral_constant_callable != 201304L
  473. # error "__cpp_lib_integral_constant_callable should have the value 201304L in c++14"
  474. # endif
  475. # ifdef __cpp_lib_invoke
  476. # error "__cpp_lib_invoke should not be defined before c++17"
  477. # endif
  478. # ifdef __cpp_lib_is_aggregate
  479. # error "__cpp_lib_is_aggregate should not be defined before c++17"
  480. # endif
  481. # ifdef __cpp_lib_is_constant_evaluated
  482. # error "__cpp_lib_is_constant_evaluated should not be defined before c++2a"
  483. # endif
  484. # ifndef __cpp_lib_is_final
  485. # error "__cpp_lib_is_final should be defined in c++14"
  486. # endif
  487. # if __cpp_lib_is_final != 201402L
  488. # error "__cpp_lib_is_final should have the value 201402L in c++14"
  489. # endif
  490. # ifdef __cpp_lib_is_invocable
  491. # error "__cpp_lib_is_invocable should not be defined before c++17"
  492. # endif
  493. # ifndef __cpp_lib_is_null_pointer
  494. # error "__cpp_lib_is_null_pointer should be defined in c++14"
  495. # endif
  496. # if __cpp_lib_is_null_pointer != 201309L
  497. # error "__cpp_lib_is_null_pointer should have the value 201309L in c++14"
  498. # endif
  499. # ifdef __cpp_lib_is_swappable
  500. # error "__cpp_lib_is_swappable should not be defined before c++17"
  501. # endif
  502. # ifdef __cpp_lib_launder
  503. # error "__cpp_lib_launder should not be defined before c++17"
  504. # endif
  505. # ifdef __cpp_lib_list_remove_return_type
  506. # error "__cpp_lib_list_remove_return_type should not be defined before c++2a"
  507. # endif
  508. # ifdef __cpp_lib_logical_traits
  509. # error "__cpp_lib_logical_traits should not be defined before c++17"
  510. # endif
  511. # ifdef __cpp_lib_make_from_tuple
  512. # error "__cpp_lib_make_from_tuple should not be defined before c++17"
  513. # endif
  514. # ifndef __cpp_lib_make_reverse_iterator
  515. # error "__cpp_lib_make_reverse_iterator should be defined in c++14"
  516. # endif
  517. # if __cpp_lib_make_reverse_iterator != 201402L
  518. # error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++14"
  519. # endif
  520. # ifndef __cpp_lib_make_unique
  521. # error "__cpp_lib_make_unique should be defined in c++14"
  522. # endif
  523. # if __cpp_lib_make_unique != 201304L
  524. # error "__cpp_lib_make_unique should have the value 201304L in c++14"
  525. # endif
  526. # ifdef __cpp_lib_map_try_emplace
  527. # error "__cpp_lib_map_try_emplace should not be defined before c++17"
  528. # endif
  529. # ifdef __cpp_lib_math_special_functions
  530. # error "__cpp_lib_math_special_functions should not be defined before c++17"
  531. # endif
  532. # ifdef __cpp_lib_memory_resource
  533. # error "__cpp_lib_memory_resource should not be defined before c++17"
  534. # endif
  535. # ifdef __cpp_lib_node_extract
  536. # error "__cpp_lib_node_extract should not be defined before c++17"
  537. # endif
  538. # ifdef __cpp_lib_nonmember_container_access
  539. # error "__cpp_lib_nonmember_container_access should not be defined before c++17"
  540. # endif
  541. # ifdef __cpp_lib_not_fn
  542. # error "__cpp_lib_not_fn should not be defined before c++17"
  543. # endif
  544. # ifndef __cpp_lib_null_iterators
  545. # error "__cpp_lib_null_iterators should be defined in c++14"
  546. # endif
  547. # if __cpp_lib_null_iterators != 201304L
  548. # error "__cpp_lib_null_iterators should have the value 201304L in c++14"
  549. # endif
  550. # ifdef __cpp_lib_optional
  551. # error "__cpp_lib_optional should not be defined before c++17"
  552. # endif
  553. # ifdef __cpp_lib_parallel_algorithm
  554. # error "__cpp_lib_parallel_algorithm should not be defined before c++17"
  555. # endif
  556. # ifndef __cpp_lib_quoted_string_io
  557. # error "__cpp_lib_quoted_string_io should be defined in c++14"
  558. # endif
  559. # if __cpp_lib_quoted_string_io != 201304L
  560. # error "__cpp_lib_quoted_string_io should have the value 201304L in c++14"
  561. # endif
  562. # ifdef __cpp_lib_ranges
  563. # error "__cpp_lib_ranges should not be defined before c++2a"
  564. # endif
  565. # ifdef __cpp_lib_raw_memory_algorithms
  566. # error "__cpp_lib_raw_memory_algorithms should not be defined before c++17"
  567. # endif
  568. # ifndef __cpp_lib_result_of_sfinae
  569. # error "__cpp_lib_result_of_sfinae should be defined in c++14"
  570. # endif
  571. # if __cpp_lib_result_of_sfinae != 201210L
  572. # error "__cpp_lib_result_of_sfinae should have the value 201210L in c++14"
  573. # endif
  574. # ifndef __cpp_lib_robust_nonmodifying_seq_ops
  575. # error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++14"
  576. # endif
  577. # if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
  578. # error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++14"
  579. # endif
  580. # ifdef __cpp_lib_sample
  581. # error "__cpp_lib_sample should not be defined before c++17"
  582. # endif
  583. # ifdef __cpp_lib_scoped_lock
  584. # error "__cpp_lib_scoped_lock should not be defined before c++17"
  585. # endif
  586. # ifdef __cpp_lib_shared_mutex
  587. # error "__cpp_lib_shared_mutex should not be defined before c++17"
  588. # endif
  589. # ifdef __cpp_lib_shared_ptr_arrays
  590. # error "__cpp_lib_shared_ptr_arrays should not be defined before c++17"
  591. # endif
  592. # ifdef __cpp_lib_shared_ptr_weak_type
  593. # error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17"
  594. # endif
  595. # ifndef __cpp_lib_shared_timed_mutex
  596. # error "__cpp_lib_shared_timed_mutex should be defined in c++14"
  597. # endif
  598. # if __cpp_lib_shared_timed_mutex != 201402L
  599. # error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++14"
  600. # endif
  601. # ifndef __cpp_lib_string_udls
  602. # error "__cpp_lib_string_udls should be defined in c++14"
  603. # endif
  604. # if __cpp_lib_string_udls != 201304L
  605. # error "__cpp_lib_string_udls should have the value 201304L in c++14"
  606. # endif
  607. # ifdef __cpp_lib_string_view
  608. # error "__cpp_lib_string_view should not be defined before c++17"
  609. # endif
  610. # ifdef __cpp_lib_three_way_comparison
  611. # error "__cpp_lib_three_way_comparison should not be defined before c++2a"
  612. # endif
  613. # ifdef __cpp_lib_to_chars
  614. # error "__cpp_lib_to_chars should not be defined before c++17"
  615. # endif
  616. # ifndef __cpp_lib_transformation_trait_aliases
  617. # error "__cpp_lib_transformation_trait_aliases should be defined in c++14"
  618. # endif
  619. # if __cpp_lib_transformation_trait_aliases != 201304L
  620. # error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++14"
  621. # endif
  622. # ifndef __cpp_lib_transparent_operators
  623. # error "__cpp_lib_transparent_operators should be defined in c++14"
  624. # endif
  625. # if __cpp_lib_transparent_operators != 201210L
  626. # error "__cpp_lib_transparent_operators should have the value 201210L in c++14"
  627. # endif
  628. # ifndef __cpp_lib_tuple_element_t
  629. # error "__cpp_lib_tuple_element_t should be defined in c++14"
  630. # endif
  631. # if __cpp_lib_tuple_element_t != 201402L
  632. # error "__cpp_lib_tuple_element_t should have the value 201402L in c++14"
  633. # endif
  634. # ifndef __cpp_lib_tuples_by_type
  635. # error "__cpp_lib_tuples_by_type should be defined in c++14"
  636. # endif
  637. # if __cpp_lib_tuples_by_type != 201304L
  638. # error "__cpp_lib_tuples_by_type should have the value 201304L in c++14"
  639. # endif
  640. # ifdef __cpp_lib_type_trait_variable_templates
  641. # error "__cpp_lib_type_trait_variable_templates should not be defined before c++17"
  642. # endif
  643. # ifdef __cpp_lib_uncaught_exceptions
  644. # error "__cpp_lib_uncaught_exceptions should not be defined before c++17"
  645. # endif
  646. # ifdef __cpp_lib_unordered_map_try_emplace
  647. # error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17"
  648. # endif
  649. # ifdef __cpp_lib_variant
  650. # error "__cpp_lib_variant should not be defined before c++17"
  651. # endif
  652. # ifdef __cpp_lib_void_t
  653. # error "__cpp_lib_void_t should not be defined before c++17"
  654. # endif
  655. #elif TEST_STD_VER == 17
  656. # if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700
  657. # ifndef __cpp_lib_addressof_constexpr
  658. # error "__cpp_lib_addressof_constexpr should be defined in c++17"
  659. # endif
  660. # if __cpp_lib_addressof_constexpr != 201603L
  661. # error "__cpp_lib_addressof_constexpr should have the value 201603L in c++17"
  662. # endif
  663. # else
  664. # ifdef __cpp_lib_addressof_constexpr
  665. # error "__cpp_lib_addressof_constexpr should not be defined when TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 is not defined!"
  666. # endif
  667. # endif
  668. # ifndef __cpp_lib_allocator_traits_is_always_equal
  669. # error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17"
  670. # endif
  671. # if __cpp_lib_allocator_traits_is_always_equal != 201411L
  672. # error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
  673. # endif
  674. # ifndef __cpp_lib_any
  675. # error "__cpp_lib_any should be defined in c++17"
  676. # endif
  677. # if __cpp_lib_any != 201606L
  678. # error "__cpp_lib_any should have the value 201606L in c++17"
  679. # endif
  680. # ifndef __cpp_lib_apply
  681. # error "__cpp_lib_apply should be defined in c++17"
  682. # endif
  683. # if __cpp_lib_apply != 201603L
  684. # error "__cpp_lib_apply should have the value 201603L in c++17"
  685. # endif
  686. # ifndef __cpp_lib_array_constexpr
  687. # error "__cpp_lib_array_constexpr should be defined in c++17"
  688. # endif
  689. # if __cpp_lib_array_constexpr != 201603L
  690. # error "__cpp_lib_array_constexpr should have the value 201603L in c++17"
  691. # endif
  692. # ifndef __cpp_lib_as_const
  693. # error "__cpp_lib_as_const should be defined in c++17"
  694. # endif
  695. # if __cpp_lib_as_const != 201510L
  696. # error "__cpp_lib_as_const should have the value 201510L in c++17"
  697. # endif
  698. # ifndef __cpp_lib_atomic_is_always_lock_free
  699. # error "__cpp_lib_atomic_is_always_lock_free should be defined in c++17"
  700. # endif
  701. # if __cpp_lib_atomic_is_always_lock_free != 201603L
  702. # error "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++17"
  703. # endif
  704. # ifdef __cpp_lib_atomic_ref
  705. # error "__cpp_lib_atomic_ref should not be defined before c++2a"
  706. # endif
  707. # ifdef __cpp_lib_bind_front
  708. # error "__cpp_lib_bind_front should not be defined before c++2a"
  709. # endif
  710. # ifdef __cpp_lib_bit_cast
  711. # error "__cpp_lib_bit_cast should not be defined before c++2a"
  712. # endif
  713. # ifndef __cpp_lib_bool_constant
  714. # error "__cpp_lib_bool_constant should be defined in c++17"
  715. # endif
  716. # if __cpp_lib_bool_constant != 201505L
  717. # error "__cpp_lib_bool_constant should have the value 201505L in c++17"
  718. # endif
  719. # if !defined(_LIBCPP_VERSION)
  720. # ifndef __cpp_lib_boyer_moore_searcher
  721. # error "__cpp_lib_boyer_moore_searcher should be defined in c++17"
  722. # endif
  723. # if __cpp_lib_boyer_moore_searcher != 201603L
  724. # error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++17"
  725. # endif
  726. # else // _LIBCPP_VERSION
  727. # ifdef __cpp_lib_boyer_moore_searcher
  728. # error "__cpp_lib_boyer_moore_searcher should not be defined because it is unimplemented in libc++!"
  729. # endif
  730. # endif
  731. # ifndef __cpp_lib_byte
  732. # error "__cpp_lib_byte should be defined in c++17"
  733. # endif
  734. # if __cpp_lib_byte != 201603L
  735. # error "__cpp_lib_byte should have the value 201603L in c++17"
  736. # endif
  737. # ifdef __cpp_lib_char8_t
  738. # error "__cpp_lib_char8_t should not be defined before c++2a"
  739. # endif
  740. # ifndef __cpp_lib_chrono
  741. # error "__cpp_lib_chrono should be defined in c++17"
  742. # endif
  743. # if __cpp_lib_chrono != 201611L
  744. # error "__cpp_lib_chrono should have the value 201611L in c++17"
  745. # endif
  746. # ifndef __cpp_lib_chrono_udls
  747. # error "__cpp_lib_chrono_udls should be defined in c++17"
  748. # endif
  749. # if __cpp_lib_chrono_udls != 201304L
  750. # error "__cpp_lib_chrono_udls should have the value 201304L in c++17"
  751. # endif
  752. # ifndef __cpp_lib_clamp
  753. # error "__cpp_lib_clamp should be defined in c++17"
  754. # endif
  755. # if __cpp_lib_clamp != 201603L
  756. # error "__cpp_lib_clamp should have the value 201603L in c++17"
  757. # endif
  758. # ifndef __cpp_lib_complex_udls
  759. # error "__cpp_lib_complex_udls should be defined in c++17"
  760. # endif
  761. # if __cpp_lib_complex_udls != 201309L
  762. # error "__cpp_lib_complex_udls should have the value 201309L in c++17"
  763. # endif
  764. # ifdef __cpp_lib_concepts
  765. # error "__cpp_lib_concepts should not be defined before c++2a"
  766. # endif
  767. # ifdef __cpp_lib_constexpr_misc
  768. # error "__cpp_lib_constexpr_misc should not be defined before c++2a"
  769. # endif
  770. # ifdef __cpp_lib_constexpr_swap_algorithms
  771. # error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a"
  772. # endif
  773. # ifdef __cpp_lib_destroying_delete
  774. # error "__cpp_lib_destroying_delete should not be defined before c++2a"
  775. # endif
  776. # ifndef __cpp_lib_enable_shared_from_this
  777. # error "__cpp_lib_enable_shared_from_this should be defined in c++17"
  778. # endif
  779. # if __cpp_lib_enable_shared_from_this != 201603L
  780. # error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++17"
  781. # endif
  782. # ifdef __cpp_lib_erase_if
  783. # error "__cpp_lib_erase_if should not be defined before c++2a"
  784. # endif
  785. # ifndef __cpp_lib_exchange_function
  786. # error "__cpp_lib_exchange_function should be defined in c++17"
  787. # endif
  788. # if __cpp_lib_exchange_function != 201304L
  789. # error "__cpp_lib_exchange_function should have the value 201304L in c++17"
  790. # endif
  791. # if !defined(_LIBCPP_VERSION)
  792. # ifndef __cpp_lib_execution
  793. # error "__cpp_lib_execution should be defined in c++17"
  794. # endif
  795. # if __cpp_lib_execution != 201603L
  796. # error "__cpp_lib_execution should have the value 201603L in c++17"
  797. # endif
  798. # else // _LIBCPP_VERSION
  799. # ifdef __cpp_lib_execution
  800. # error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!"
  801. # endif
  802. # endif
  803. # ifndef __cpp_lib_filesystem
  804. # error "__cpp_lib_filesystem should be defined in c++17"
  805. # endif
  806. # if __cpp_lib_filesystem != 201703L
  807. # error "__cpp_lib_filesystem should have the value 201703L in c++17"
  808. # endif
  809. # ifndef __cpp_lib_gcd_lcm
  810. # error "__cpp_lib_gcd_lcm should be defined in c++17"
  811. # endif
  812. # if __cpp_lib_gcd_lcm != 201606L
  813. # error "__cpp_lib_gcd_lcm should have the value 201606L in c++17"
  814. # endif
  815. # ifndef __cpp_lib_generic_associative_lookup
  816. # error "__cpp_lib_generic_associative_lookup should be defined in c++17"
  817. # endif
  818. # if __cpp_lib_generic_associative_lookup != 201304L
  819. # error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++17"
  820. # endif
  821. # ifdef __cpp_lib_generic_unordered_lookup
  822. # error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a"
  823. # endif
  824. # ifndef __cpp_lib_hardware_interference_size
  825. # error "__cpp_lib_hardware_interference_size should be defined in c++17"
  826. # endif
  827. # if __cpp_lib_hardware_interference_size != 201703L
  828. # error "__cpp_lib_hardware_interference_size should have the value 201703L in c++17"
  829. # endif
  830. # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700
  831. # ifndef __cpp_lib_has_unique_object_representations
  832. # error "__cpp_lib_has_unique_object_representations should be defined in c++17"
  833. # endif
  834. # if __cpp_lib_has_unique_object_representations != 201606L
  835. # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17"
  836. # endif
  837. # else
  838. # ifdef __cpp_lib_has_unique_object_representations
  839. # 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!"
  840. # endif
  841. # endif
  842. # ifndef __cpp_lib_hypot
  843. # error "__cpp_lib_hypot should be defined in c++17"
  844. # endif
  845. # if __cpp_lib_hypot != 201603L
  846. # error "__cpp_lib_hypot should have the value 201603L in c++17"
  847. # endif
  848. # ifndef __cpp_lib_incomplete_container_elements
  849. # error "__cpp_lib_incomplete_container_elements should be defined in c++17"
  850. # endif
  851. # if __cpp_lib_incomplete_container_elements != 201505L
  852. # error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++17"
  853. # endif
  854. # ifndef __cpp_lib_integer_sequence
  855. # error "__cpp_lib_integer_sequence should be defined in c++17"
  856. # endif
  857. # if __cpp_lib_integer_sequence != 201304L
  858. # error "__cpp_lib_integer_sequence should have the value 201304L in c++17"
  859. # endif
  860. # ifndef __cpp_lib_integral_constant_callable
  861. # error "__cpp_lib_integral_constant_callable should be defined in c++17"
  862. # endif
  863. # if __cpp_lib_integral_constant_callable != 201304L
  864. # error "__cpp_lib_integral_constant_callable should have the value 201304L in c++17"
  865. # endif
  866. # ifndef __cpp_lib_invoke
  867. # error "__cpp_lib_invoke should be defined in c++17"
  868. # endif
  869. # if __cpp_lib_invoke != 201411L
  870. # error "__cpp_lib_invoke should have the value 201411L in c++17"
  871. # endif
  872. # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001
  873. # ifndef __cpp_lib_is_aggregate
  874. # error "__cpp_lib_is_aggregate should be defined in c++17"
  875. # endif
  876. # if __cpp_lib_is_aggregate != 201703L
  877. # error "__cpp_lib_is_aggregate should have the value 201703L in c++17"
  878. # endif
  879. # else
  880. # ifdef __cpp_lib_is_aggregate
  881. # error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!"
  882. # endif
  883. # endif
  884. # ifdef __cpp_lib_is_constant_evaluated
  885. # error "__cpp_lib_is_constant_evaluated should not be defined before c++2a"
  886. # endif
  887. # ifndef __cpp_lib_is_final
  888. # error "__cpp_lib_is_final should be defined in c++17"
  889. # endif
  890. # if __cpp_lib_is_final != 201402L
  891. # error "__cpp_lib_is_final should have the value 201402L in c++17"
  892. # endif
  893. # ifndef __cpp_lib_is_invocable
  894. # error "__cpp_lib_is_invocable should be defined in c++17"
  895. # endif
  896. # if __cpp_lib_is_invocable != 201703L
  897. # error "__cpp_lib_is_invocable should have the value 201703L in c++17"
  898. # endif
  899. # ifndef __cpp_lib_is_null_pointer
  900. # error "__cpp_lib_is_null_pointer should be defined in c++17"
  901. # endif
  902. # if __cpp_lib_is_null_pointer != 201309L
  903. # error "__cpp_lib_is_null_pointer should have the value 201309L in c++17"
  904. # endif
  905. # ifndef __cpp_lib_is_swappable
  906. # error "__cpp_lib_is_swappable should be defined in c++17"
  907. # endif
  908. # if __cpp_lib_is_swappable != 201603L
  909. # error "__cpp_lib_is_swappable should have the value 201603L in c++17"
  910. # endif
  911. # ifndef __cpp_lib_launder
  912. # error "__cpp_lib_launder should be defined in c++17"
  913. # endif
  914. # if __cpp_lib_launder != 201606L
  915. # error "__cpp_lib_launder should have the value 201606L in c++17"
  916. # endif
  917. # ifdef __cpp_lib_list_remove_return_type
  918. # error "__cpp_lib_list_remove_return_type should not be defined before c++2a"
  919. # endif
  920. # ifndef __cpp_lib_logical_traits
  921. # error "__cpp_lib_logical_traits should be defined in c++17"
  922. # endif
  923. # if __cpp_lib_logical_traits != 201510L
  924. # error "__cpp_lib_logical_traits should have the value 201510L in c++17"
  925. # endif
  926. # ifndef __cpp_lib_make_from_tuple
  927. # error "__cpp_lib_make_from_tuple should be defined in c++17"
  928. # endif
  929. # if __cpp_lib_make_from_tuple != 201606L
  930. # error "__cpp_lib_make_from_tuple should have the value 201606L in c++17"
  931. # endif
  932. # ifndef __cpp_lib_make_reverse_iterator
  933. # error "__cpp_lib_make_reverse_iterator should be defined in c++17"
  934. # endif
  935. # if __cpp_lib_make_reverse_iterator != 201402L
  936. # error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++17"
  937. # endif
  938. # ifndef __cpp_lib_make_unique
  939. # error "__cpp_lib_make_unique should be defined in c++17"
  940. # endif
  941. # if __cpp_lib_make_unique != 201304L
  942. # error "__cpp_lib_make_unique should have the value 201304L in c++17"
  943. # endif
  944. # ifndef __cpp_lib_map_try_emplace
  945. # error "__cpp_lib_map_try_emplace should be defined in c++17"
  946. # endif
  947. # if __cpp_lib_map_try_emplace != 201411L
  948. # error "__cpp_lib_map_try_emplace should have the value 201411L in c++17"
  949. # endif
  950. # if !defined(_LIBCPP_VERSION)
  951. # ifndef __cpp_lib_math_special_functions
  952. # error "__cpp_lib_math_special_functions should be defined in c++17"
  953. # endif
  954. # if __cpp_lib_math_special_functions != 201603L
  955. # error "__cpp_lib_math_special_functions should have the value 201603L in c++17"
  956. # endif
  957. # else // _LIBCPP_VERSION
  958. # ifdef __cpp_lib_math_special_functions
  959. # error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!"
  960. # endif
  961. # endif
  962. # if !defined(_LIBCPP_VERSION)
  963. # ifndef __cpp_lib_memory_resource
  964. # error "__cpp_lib_memory_resource should be defined in c++17"
  965. # endif
  966. # if __cpp_lib_memory_resource != 201603L
  967. # error "__cpp_lib_memory_resource should have the value 201603L in c++17"
  968. # endif
  969. # else // _LIBCPP_VERSION
  970. # ifdef __cpp_lib_memory_resource
  971. # error "__cpp_lib_memory_resource should not be defined because it is unimplemented in libc++!"
  972. # endif
  973. # endif
  974. # ifndef __cpp_lib_node_extract
  975. # error "__cpp_lib_node_extract should be defined in c++17"
  976. # endif
  977. # if __cpp_lib_node_extract != 201606L
  978. # error "__cpp_lib_node_extract should have the value 201606L in c++17"
  979. # endif
  980. # ifndef __cpp_lib_nonmember_container_access
  981. # error "__cpp_lib_nonmember_container_access should be defined in c++17"
  982. # endif
  983. # if __cpp_lib_nonmember_container_access != 201411L
  984. # error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
  985. # endif
  986. # ifndef __cpp_lib_not_fn
  987. # error "__cpp_lib_not_fn should be defined in c++17"
  988. # endif
  989. # if __cpp_lib_not_fn != 201603L
  990. # error "__cpp_lib_not_fn should have the value 201603L in c++17"
  991. # endif
  992. # ifndef __cpp_lib_null_iterators
  993. # error "__cpp_lib_null_iterators should be defined in c++17"
  994. # endif
  995. # if __cpp_lib_null_iterators != 201304L
  996. # error "__cpp_lib_null_iterators should have the value 201304L in c++17"
  997. # endif
  998. # ifndef __cpp_lib_optional
  999. # error "__cpp_lib_optional should be defined in c++17"
  1000. # endif
  1001. # if __cpp_lib_optional != 201606L
  1002. # error "__cpp_lib_optional should have the value 201606L in c++17"
  1003. # endif
  1004. # if !defined(_LIBCPP_VERSION)
  1005. # ifndef __cpp_lib_parallel_algorithm
  1006. # error "__cpp_lib_parallel_algorithm should be defined in c++17"
  1007. # endif
  1008. # if __cpp_lib_parallel_algorithm != 201603L
  1009. # error "__cpp_lib_parallel_algorithm should have the value 201603L in c++17"
  1010. # endif
  1011. # else // _LIBCPP_VERSION
  1012. # ifdef __cpp_lib_parallel_algorithm
  1013. # error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!"
  1014. # endif
  1015. # endif
  1016. # ifndef __cpp_lib_quoted_string_io
  1017. # error "__cpp_lib_quoted_string_io should be defined in c++17"
  1018. # endif
  1019. # if __cpp_lib_quoted_string_io != 201304L
  1020. # error "__cpp_lib_quoted_string_io should have the value 201304L in c++17"
  1021. # endif
  1022. # ifdef __cpp_lib_ranges
  1023. # error "__cpp_lib_ranges should not be defined before c++2a"
  1024. # endif
  1025. # ifndef __cpp_lib_raw_memory_algorithms
  1026. # error "__cpp_lib_raw_memory_algorithms should be defined in c++17"
  1027. # endif
  1028. # if __cpp_lib_raw_memory_algorithms != 201606L
  1029. # error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17"
  1030. # endif
  1031. # ifndef __cpp_lib_result_of_sfinae
  1032. # error "__cpp_lib_result_of_sfinae should be defined in c++17"
  1033. # endif
  1034. # if __cpp_lib_result_of_sfinae != 201210L
  1035. # error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17"
  1036. # endif
  1037. # ifndef __cpp_lib_robust_nonmodifying_seq_ops
  1038. # error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++17"
  1039. # endif
  1040. # if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
  1041. # error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++17"
  1042. # endif
  1043. # ifndef __cpp_lib_sample
  1044. # error "__cpp_lib_sample should be defined in c++17"
  1045. # endif
  1046. # if __cpp_lib_sample != 201603L
  1047. # error "__cpp_lib_sample should have the value 201603L in c++17"
  1048. # endif
  1049. # ifndef __cpp_lib_scoped_lock
  1050. # error "__cpp_lib_scoped_lock should be defined in c++17"
  1051. # endif
  1052. # if __cpp_lib_scoped_lock != 201703L
  1053. # error "__cpp_lib_scoped_lock should have the value 201703L in c++17"
  1054. # endif
  1055. # ifndef __cpp_lib_shared_mutex
  1056. # error "__cpp_lib_shared_mutex should be defined in c++17"
  1057. # endif
  1058. # if __cpp_lib_shared_mutex != 201505L
  1059. # error "__cpp_lib_shared_mutex should have the value 201505L in c++17"
  1060. # endif
  1061. # if !defined(_LIBCPP_VERSION)
  1062. # ifndef __cpp_lib_shared_ptr_arrays
  1063. # error "__cpp_lib_shared_ptr_arrays should be defined in c++17"
  1064. # endif
  1065. # if __cpp_lib_shared_ptr_arrays != 201611L
  1066. # error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++17"
  1067. # endif
  1068. # else // _LIBCPP_VERSION
  1069. # ifdef __cpp_lib_shared_ptr_arrays
  1070. # error "__cpp_lib_shared_ptr_arrays should not be defined because it is unimplemented in libc++!"
  1071. # endif
  1072. # endif
  1073. # ifndef __cpp_lib_shared_ptr_weak_type
  1074. # error "__cpp_lib_shared_ptr_weak_type should be defined in c++17"
  1075. # endif
  1076. # if __cpp_lib_shared_ptr_weak_type != 201606L
  1077. # error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++17"
  1078. # endif
  1079. # ifndef __cpp_lib_shared_timed_mutex
  1080. # error "__cpp_lib_shared_timed_mutex should be defined in c++17"
  1081. # endif
  1082. # if __cpp_lib_shared_timed_mutex != 201402L
  1083. # error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++17"
  1084. # endif
  1085. # ifndef __cpp_lib_string_udls
  1086. # error "__cpp_lib_string_udls should be defined in c++17"
  1087. # endif
  1088. # if __cpp_lib_string_udls != 201304L
  1089. # error "__cpp_lib_string_udls should have the value 201304L in c++17"
  1090. # endif
  1091. # ifndef __cpp_lib_string_view
  1092. # error "__cpp_lib_string_view should be defined in c++17"
  1093. # endif
  1094. # if __cpp_lib_string_view != 201606L
  1095. # error "__cpp_lib_string_view should have the value 201606L in c++17"
  1096. # endif
  1097. # ifdef __cpp_lib_three_way_comparison
  1098. # error "__cpp_lib_three_way_comparison should not be defined before c++2a"
  1099. # endif
  1100. # if !defined(_LIBCPP_VERSION)
  1101. # ifndef __cpp_lib_to_chars
  1102. # error "__cpp_lib_to_chars should be defined in c++17"
  1103. # endif
  1104. # if __cpp_lib_to_chars != 201611L
  1105. # error "__cpp_lib_to_chars should have the value 201611L in c++17"
  1106. # endif
  1107. # else // _LIBCPP_VERSION
  1108. # ifdef __cpp_lib_to_chars
  1109. # error "__cpp_lib_to_chars should not be defined because it is unimplemented in libc++!"
  1110. # endif
  1111. # endif
  1112. # ifndef __cpp_lib_transformation_trait_aliases
  1113. # error "__cpp_lib_transformation_trait_aliases should be defined in c++17"
  1114. # endif
  1115. # if __cpp_lib_transformation_trait_aliases != 201304L
  1116. # error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++17"
  1117. # endif
  1118. # ifndef __cpp_lib_transparent_operators
  1119. # error "__cpp_lib_transparent_operators should be defined in c++17"
  1120. # endif
  1121. # if __cpp_lib_transparent_operators != 201510L
  1122. # error "__cpp_lib_transparent_operators should have the value 201510L in c++17"
  1123. # endif
  1124. # ifndef __cpp_lib_tuple_element_t
  1125. # error "__cpp_lib_tuple_element_t should be defined in c++17"
  1126. # endif
  1127. # if __cpp_lib_tuple_element_t != 201402L
  1128. # error "__cpp_lib_tuple_element_t should have the value 201402L in c++17"
  1129. # endif
  1130. # ifndef __cpp_lib_tuples_by_type
  1131. # error "__cpp_lib_tuples_by_type should be defined in c++17"
  1132. # endif
  1133. # if __cpp_lib_tuples_by_type != 201304L
  1134. # error "__cpp_lib_tuples_by_type should have the value 201304L in c++17"
  1135. # endif
  1136. # ifndef __cpp_lib_type_trait_variable_templates
  1137. # error "__cpp_lib_type_trait_variable_templates should be defined in c++17"
  1138. # endif
  1139. # if __cpp_lib_type_trait_variable_templates != 201510L
  1140. # error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++17"
  1141. # endif
  1142. # ifndef __cpp_lib_uncaught_exceptions
  1143. # error "__cpp_lib_uncaught_exceptions should be defined in c++17"
  1144. # endif
  1145. # if __cpp_lib_uncaught_exceptions != 201411L
  1146. # error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++17"
  1147. # endif
  1148. # ifndef __cpp_lib_unordered_map_try_emplace
  1149. # error "__cpp_lib_unordered_map_try_emplace should be defined in c++17"
  1150. # endif
  1151. # if __cpp_lib_unordered_map_try_emplace != 201411L
  1152. # error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++17"
  1153. # endif
  1154. # ifndef __cpp_lib_variant
  1155. # error "__cpp_lib_variant should be defined in c++17"
  1156. # endif
  1157. # if __cpp_lib_variant != 201606L
  1158. # error "__cpp_lib_variant should have the value 201606L in c++17"
  1159. # endif
  1160. # ifndef __cpp_lib_void_t
  1161. # error "__cpp_lib_void_t should be defined in c++17"
  1162. # endif
  1163. # if __cpp_lib_void_t != 201411L
  1164. # error "__cpp_lib_void_t should have the value 201411L in c++17"
  1165. # endif
  1166. #elif TEST_STD_VER > 17
  1167. # if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700
  1168. # ifndef __cpp_lib_addressof_constexpr
  1169. # error "__cpp_lib_addressof_constexpr should be defined in c++2a"
  1170. # endif
  1171. # if __cpp_lib_addressof_constexpr != 201603L
  1172. # error "__cpp_lib_addressof_constexpr should have the value 201603L in c++2a"
  1173. # endif
  1174. # else
  1175. # ifdef __cpp_lib_addressof_constexpr
  1176. # error "__cpp_lib_addressof_constexpr should not be defined when TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 is not defined!"
  1177. # endif
  1178. # endif
  1179. # ifndef __cpp_lib_allocator_traits_is_always_equal
  1180. # error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2a"
  1181. # endif
  1182. # if __cpp_lib_allocator_traits_is_always_equal != 201411L
  1183. # error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2a"
  1184. # endif
  1185. # ifndef __cpp_lib_any
  1186. # error "__cpp_lib_any should be defined in c++2a"
  1187. # endif
  1188. # if __cpp_lib_any != 201606L
  1189. # error "__cpp_lib_any should have the value 201606L in c++2a"
  1190. # endif
  1191. # ifndef __cpp_lib_apply
  1192. # error "__cpp_lib_apply should be defined in c++2a"
  1193. # endif
  1194. # if __cpp_lib_apply != 201603L
  1195. # error "__cpp_lib_apply should have the value 201603L in c++2a"
  1196. # endif
  1197. # ifndef __cpp_lib_array_constexpr
  1198. # error "__cpp_lib_array_constexpr should be defined in c++2a"
  1199. # endif
  1200. # if __cpp_lib_array_constexpr != 201603L
  1201. # error "__cpp_lib_array_constexpr should have the value 201603L in c++2a"
  1202. # endif
  1203. # ifndef __cpp_lib_as_const
  1204. # error "__cpp_lib_as_const should be defined in c++2a"
  1205. # endif
  1206. # if __cpp_lib_as_const != 201510L
  1207. # error "__cpp_lib_as_const should have the value 201510L in c++2a"
  1208. # endif
  1209. # ifndef __cpp_lib_atomic_is_always_lock_free
  1210. # error "__cpp_lib_atomic_is_always_lock_free should be defined in c++2a"
  1211. # endif
  1212. # if __cpp_lib_atomic_is_always_lock_free != 201603L
  1213. # error "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++2a"
  1214. # endif
  1215. # if !defined(_LIBCPP_VERSION)
  1216. # ifndef __cpp_lib_atomic_ref
  1217. # error "__cpp_lib_atomic_ref should be defined in c++2a"
  1218. # endif
  1219. # if __cpp_lib_atomic_ref != 201806L
  1220. # error "__cpp_lib_atomic_ref should have the value 201806L in c++2a"
  1221. # endif
  1222. # else // _LIBCPP_VERSION
  1223. # ifdef __cpp_lib_atomic_ref
  1224. # error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!"
  1225. # endif
  1226. # endif
  1227. # if !defined(_LIBCPP_VERSION)
  1228. # ifndef __cpp_lib_bind_front
  1229. # error "__cpp_lib_bind_front should be defined in c++2a"
  1230. # endif
  1231. # if __cpp_lib_bind_front != 201811L
  1232. # error "__cpp_lib_bind_front should have the value 201811L in c++2a"
  1233. # endif
  1234. # else // _LIBCPP_VERSION
  1235. # ifdef __cpp_lib_bind_front
  1236. # error "__cpp_lib_bind_front should not be defined because it is unimplemented in libc++!"
  1237. # endif
  1238. # endif
  1239. # if !defined(_LIBCPP_VERSION)
  1240. # ifndef __cpp_lib_bit_cast
  1241. # error "__cpp_lib_bit_cast should be defined in c++2a"
  1242. # endif
  1243. # if __cpp_lib_bit_cast != 201806L
  1244. # error "__cpp_lib_bit_cast should have the value 201806L in c++2a"
  1245. # endif
  1246. # else // _LIBCPP_VERSION
  1247. # ifdef __cpp_lib_bit_cast
  1248. # error "__cpp_lib_bit_cast should not be defined because it is unimplemented in libc++!"
  1249. # endif
  1250. # endif
  1251. # ifndef __cpp_lib_bool_constant
  1252. # error "__cpp_lib_bool_constant should be defined in c++2a"
  1253. # endif
  1254. # if __cpp_lib_bool_constant != 201505L
  1255. # error "__cpp_lib_bool_constant should have the value 201505L in c++2a"
  1256. # endif
  1257. # if !defined(_LIBCPP_VERSION)
  1258. # ifndef __cpp_lib_boyer_moore_searcher
  1259. # error "__cpp_lib_boyer_moore_searcher should be defined in c++2a"
  1260. # endif
  1261. # if __cpp_lib_boyer_moore_searcher != 201603L
  1262. # error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++2a"
  1263. # endif
  1264. # else // _LIBCPP_VERSION
  1265. # ifdef __cpp_lib_boyer_moore_searcher
  1266. # error "__cpp_lib_boyer_moore_searcher should not be defined because it is unimplemented in libc++!"
  1267. # endif
  1268. # endif
  1269. # ifndef __cpp_lib_byte
  1270. # error "__cpp_lib_byte should be defined in c++2a"
  1271. # endif
  1272. # if __cpp_lib_byte != 201603L
  1273. # error "__cpp_lib_byte should have the value 201603L in c++2a"
  1274. # endif
  1275. # if defined(__cpp_char8_t)
  1276. # ifndef __cpp_lib_char8_t
  1277. # error "__cpp_lib_char8_t should be defined in c++2a"
  1278. # endif
  1279. # if __cpp_lib_char8_t != 201811L
  1280. # error "__cpp_lib_char8_t should have the value 201811L in c++2a"
  1281. # endif
  1282. # else
  1283. # ifdef __cpp_lib_char8_t
  1284. # error "__cpp_lib_char8_t should not be defined when defined(__cpp_char8_t) is not defined!"
  1285. # endif
  1286. # endif
  1287. # ifndef __cpp_lib_chrono
  1288. # error "__cpp_lib_chrono should be defined in c++2a"
  1289. # endif
  1290. # if __cpp_lib_chrono != 201611L
  1291. # error "__cpp_lib_chrono should have the value 201611L in c++2a"
  1292. # endif
  1293. # ifndef __cpp_lib_chrono_udls
  1294. # error "__cpp_lib_chrono_udls should be defined in c++2a"
  1295. # endif
  1296. # if __cpp_lib_chrono_udls != 201304L
  1297. # error "__cpp_lib_chrono_udls should have the value 201304L in c++2a"
  1298. # endif
  1299. # ifndef __cpp_lib_clamp
  1300. # error "__cpp_lib_clamp should be defined in c++2a"
  1301. # endif
  1302. # if __cpp_lib_clamp != 201603L
  1303. # error "__cpp_lib_clamp should have the value 201603L in c++2a"
  1304. # endif
  1305. # ifndef __cpp_lib_complex_udls
  1306. # error "__cpp_lib_complex_udls should be defined in c++2a"
  1307. # endif
  1308. # if __cpp_lib_complex_udls != 201309L
  1309. # error "__cpp_lib_complex_udls should have the value 201309L in c++2a"
  1310. # endif
  1311. # if !defined(_LIBCPP_VERSION)
  1312. # ifndef __cpp_lib_concepts
  1313. # error "__cpp_lib_concepts should be defined in c++2a"
  1314. # endif
  1315. # if __cpp_lib_concepts != 201806L
  1316. # error "__cpp_lib_concepts should have the value 201806L in c++2a"
  1317. # endif
  1318. # else // _LIBCPP_VERSION
  1319. # ifdef __cpp_lib_concepts
  1320. # error "__cpp_lib_concepts should not be defined because it is unimplemented in libc++!"
  1321. # endif
  1322. # endif
  1323. # if !defined(_LIBCPP_VERSION)
  1324. # ifndef __cpp_lib_constexpr_misc
  1325. # error "__cpp_lib_constexpr_misc should be defined in c++2a"
  1326. # endif
  1327. # if __cpp_lib_constexpr_misc != 201811L
  1328. # error "__cpp_lib_constexpr_misc should have the value 201811L in c++2a"
  1329. # endif
  1330. # else // _LIBCPP_VERSION
  1331. # ifdef __cpp_lib_constexpr_misc
  1332. # error "__cpp_lib_constexpr_misc should not be defined because it is unimplemented in libc++!"
  1333. # endif
  1334. # endif
  1335. # if !defined(_LIBCPP_VERSION)
  1336. # ifndef __cpp_lib_constexpr_swap_algorithms
  1337. # error "__cpp_lib_constexpr_swap_algorithms should be defined in c++2a"
  1338. # endif
  1339. # if __cpp_lib_constexpr_swap_algorithms != 201806L
  1340. # error "__cpp_lib_constexpr_swap_algorithms should have the value 201806L in c++2a"
  1341. # endif
  1342. # else // _LIBCPP_VERSION
  1343. # ifdef __cpp_lib_constexpr_swap_algorithms
  1344. # error "__cpp_lib_constexpr_swap_algorithms should not be defined because it is unimplemented in libc++!"
  1345. # endif
  1346. # endif
  1347. # if !defined(_LIBCPP_VERSION)
  1348. # ifndef __cpp_lib_destroying_delete
  1349. # error "__cpp_lib_destroying_delete should be defined in c++2a"
  1350. # endif
  1351. # if __cpp_lib_destroying_delete != 201806L
  1352. # error "__cpp_lib_destroying_delete should have the value 201806L in c++2a"
  1353. # endif
  1354. # else // _LIBCPP_VERSION
  1355. # ifdef __cpp_lib_destroying_delete
  1356. # error "__cpp_lib_destroying_delete should not be defined because it is unimplemented in libc++!"
  1357. # endif
  1358. # endif
  1359. # ifndef __cpp_lib_enable_shared_from_this
  1360. # error "__cpp_lib_enable_shared_from_this should be defined in c++2a"
  1361. # endif
  1362. # if __cpp_lib_enable_shared_from_this != 201603L
  1363. # error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++2a"
  1364. # endif
  1365. # ifndef __cpp_lib_erase_if
  1366. # error "__cpp_lib_erase_if should be defined in c++2a"
  1367. # endif
  1368. # if __cpp_lib_erase_if != 201811L
  1369. # error "__cpp_lib_erase_if should have the value 201811L in c++2a"
  1370. # endif
  1371. # ifndef __cpp_lib_exchange_function
  1372. # error "__cpp_lib_exchange_function should be defined in c++2a"
  1373. # endif
  1374. # if __cpp_lib_exchange_function != 201304L
  1375. # error "__cpp_lib_exchange_function should have the value 201304L in c++2a"
  1376. # endif
  1377. # if !defined(_LIBCPP_VERSION)
  1378. # ifndef __cpp_lib_execution
  1379. # error "__cpp_lib_execution should be defined in c++2a"
  1380. # endif
  1381. # if __cpp_lib_execution != 201603L
  1382. # error "__cpp_lib_execution should have the value 201603L in c++2a"
  1383. # endif
  1384. # else // _LIBCPP_VERSION
  1385. # ifdef __cpp_lib_execution
  1386. # error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!"
  1387. # endif
  1388. # endif
  1389. # ifndef __cpp_lib_filesystem
  1390. # error "__cpp_lib_filesystem should be defined in c++2a"
  1391. # endif
  1392. # if __cpp_lib_filesystem != 201703L
  1393. # error "__cpp_lib_filesystem should have the value 201703L in c++2a"
  1394. # endif
  1395. # ifndef __cpp_lib_gcd_lcm
  1396. # error "__cpp_lib_gcd_lcm should be defined in c++2a"
  1397. # endif
  1398. # if __cpp_lib_gcd_lcm != 201606L
  1399. # error "__cpp_lib_gcd_lcm should have the value 201606L in c++2a"
  1400. # endif
  1401. # ifndef __cpp_lib_generic_associative_lookup
  1402. # error "__cpp_lib_generic_associative_lookup should be defined in c++2a"
  1403. # endif
  1404. # if __cpp_lib_generic_associative_lookup != 201304L
  1405. # error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++2a"
  1406. # endif
  1407. # if !defined(_LIBCPP_VERSION)
  1408. # ifndef __cpp_lib_generic_unordered_lookup
  1409. # error "__cpp_lib_generic_unordered_lookup should be defined in c++2a"
  1410. # endif
  1411. # if __cpp_lib_generic_unordered_lookup != 201811L
  1412. # error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++2a"
  1413. # endif
  1414. # else // _LIBCPP_VERSION
  1415. # ifdef __cpp_lib_generic_unordered_lookup
  1416. # error "__cpp_lib_generic_unordered_lookup should not be defined because it is unimplemented in libc++!"
  1417. # endif
  1418. # endif
  1419. # ifndef __cpp_lib_hardware_interference_size
  1420. # error "__cpp_lib_hardware_interference_size should be defined in c++2a"
  1421. # endif
  1422. # if __cpp_lib_hardware_interference_size != 201703L
  1423. # error "__cpp_lib_hardware_interference_size should have the value 201703L in c++2a"
  1424. # endif
  1425. # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700
  1426. # ifndef __cpp_lib_has_unique_object_representations
  1427. # error "__cpp_lib_has_unique_object_representations should be defined in c++2a"
  1428. # endif
  1429. # if __cpp_lib_has_unique_object_representations != 201606L
  1430. # error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2a"
  1431. # endif
  1432. # else
  1433. # ifdef __cpp_lib_has_unique_object_representations
  1434. # 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!"
  1435. # endif
  1436. # endif
  1437. # ifndef __cpp_lib_hypot
  1438. # error "__cpp_lib_hypot should be defined in c++2a"
  1439. # endif
  1440. # if __cpp_lib_hypot != 201603L
  1441. # error "__cpp_lib_hypot should have the value 201603L in c++2a"
  1442. # endif
  1443. # ifndef __cpp_lib_incomplete_container_elements
  1444. # error "__cpp_lib_incomplete_container_elements should be defined in c++2a"
  1445. # endif
  1446. # if __cpp_lib_incomplete_container_elements != 201505L
  1447. # error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++2a"
  1448. # endif
  1449. # ifndef __cpp_lib_integer_sequence
  1450. # error "__cpp_lib_integer_sequence should be defined in c++2a"
  1451. # endif
  1452. # if __cpp_lib_integer_sequence != 201304L
  1453. # error "__cpp_lib_integer_sequence should have the value 201304L in c++2a"
  1454. # endif
  1455. # ifndef __cpp_lib_integral_constant_callable
  1456. # error "__cpp_lib_integral_constant_callable should be defined in c++2a"
  1457. # endif
  1458. # if __cpp_lib_integral_constant_callable != 201304L
  1459. # error "__cpp_lib_integral_constant_callable should have the value 201304L in c++2a"
  1460. # endif
  1461. # ifndef __cpp_lib_invoke
  1462. # error "__cpp_lib_invoke should be defined in c++2a"
  1463. # endif
  1464. # if __cpp_lib_invoke != 201411L
  1465. # error "__cpp_lib_invoke should have the value 201411L in c++2a"
  1466. # endif
  1467. # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001
  1468. # ifndef __cpp_lib_is_aggregate
  1469. # error "__cpp_lib_is_aggregate should be defined in c++2a"
  1470. # endif
  1471. # if __cpp_lib_is_aggregate != 201703L
  1472. # error "__cpp_lib_is_aggregate should have the value 201703L in c++2a"
  1473. # endif
  1474. # else
  1475. # ifdef __cpp_lib_is_aggregate
  1476. # error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!"
  1477. # endif
  1478. # endif
  1479. # if !defined(_LIBCPP_VERSION)
  1480. # ifndef __cpp_lib_is_constant_evaluated
  1481. # error "__cpp_lib_is_constant_evaluated should be defined in c++2a"
  1482. # endif
  1483. # if __cpp_lib_is_constant_evaluated != 201811L
  1484. # error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++2a"
  1485. # endif
  1486. # else // _LIBCPP_VERSION
  1487. # ifdef __cpp_lib_is_constant_evaluated
  1488. # error "__cpp_lib_is_constant_evaluated should not be defined because it is unimplemented in libc++!"
  1489. # endif
  1490. # endif
  1491. # ifndef __cpp_lib_is_final
  1492. # error "__cpp_lib_is_final should be defined in c++2a"
  1493. # endif
  1494. # if __cpp_lib_is_final != 201402L
  1495. # error "__cpp_lib_is_final should have the value 201402L in c++2a"
  1496. # endif
  1497. # ifndef __cpp_lib_is_invocable
  1498. # error "__cpp_lib_is_invocable should be defined in c++2a"
  1499. # endif
  1500. # if __cpp_lib_is_invocable != 201703L
  1501. # error "__cpp_lib_is_invocable should have the value 201703L in c++2a"
  1502. # endif
  1503. # ifndef __cpp_lib_is_null_pointer
  1504. # error "__cpp_lib_is_null_pointer should be defined in c++2a"
  1505. # endif
  1506. # if __cpp_lib_is_null_pointer != 201309L
  1507. # error "__cpp_lib_is_null_pointer should have the value 201309L in c++2a"
  1508. # endif
  1509. # ifndef __cpp_lib_is_swappable
  1510. # error "__cpp_lib_is_swappable should be defined in c++2a"
  1511. # endif
  1512. # if __cpp_lib_is_swappable != 201603L
  1513. # error "__cpp_lib_is_swappable should have the value 201603L in c++2a"
  1514. # endif
  1515. # ifndef __cpp_lib_launder
  1516. # error "__cpp_lib_launder should be defined in c++2a"
  1517. # endif
  1518. # if __cpp_lib_launder != 201606L
  1519. # error "__cpp_lib_launder should have the value 201606L in c++2a"
  1520. # endif
  1521. # if !defined(_LIBCPP_VERSION)
  1522. # ifndef __cpp_lib_list_remove_return_type
  1523. # error "__cpp_lib_list_remove_return_type should be defined in c++2a"
  1524. # endif
  1525. # if __cpp_lib_list_remove_return_type != 201806L
  1526. # error "__cpp_lib_list_remove_return_type should have the value 201806L in c++2a"
  1527. # endif
  1528. # else // _LIBCPP_VERSION
  1529. # ifdef __cpp_lib_list_remove_return_type
  1530. # error "__cpp_lib_list_remove_return_type should not be defined because it is unimplemented in libc++!"
  1531. # endif
  1532. # endif
  1533. # ifndef __cpp_lib_logical_traits
  1534. # error "__cpp_lib_logical_traits should be defined in c++2a"
  1535. # endif
  1536. # if __cpp_lib_logical_traits != 201510L
  1537. # error "__cpp_lib_logical_traits should have the value 201510L in c++2a"
  1538. # endif
  1539. # ifndef __cpp_lib_make_from_tuple
  1540. # error "__cpp_lib_make_from_tuple should be defined in c++2a"
  1541. # endif
  1542. # if __cpp_lib_make_from_tuple != 201606L
  1543. # error "__cpp_lib_make_from_tuple should have the value 201606L in c++2a"
  1544. # endif
  1545. # ifndef __cpp_lib_make_reverse_iterator
  1546. # error "__cpp_lib_make_reverse_iterator should be defined in c++2a"
  1547. # endif
  1548. # if __cpp_lib_make_reverse_iterator != 201402L
  1549. # error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++2a"
  1550. # endif
  1551. # ifndef __cpp_lib_make_unique
  1552. # error "__cpp_lib_make_unique should be defined in c++2a"
  1553. # endif
  1554. # if __cpp_lib_make_unique != 201304L
  1555. # error "__cpp_lib_make_unique should have the value 201304L in c++2a"
  1556. # endif
  1557. # ifndef __cpp_lib_map_try_emplace
  1558. # error "__cpp_lib_map_try_emplace should be defined in c++2a"
  1559. # endif
  1560. # if __cpp_lib_map_try_emplace != 201411L
  1561. # error "__cpp_lib_map_try_emplace should have the value 201411L in c++2a"
  1562. # endif
  1563. # if !defined(_LIBCPP_VERSION)
  1564. # ifndef __cpp_lib_math_special_functions
  1565. # error "__cpp_lib_math_special_functions should be defined in c++2a"
  1566. # endif
  1567. # if __cpp_lib_math_special_functions != 201603L
  1568. # error "__cpp_lib_math_special_functions should have the value 201603L in c++2a"
  1569. # endif
  1570. # else // _LIBCPP_VERSION
  1571. # ifdef __cpp_lib_math_special_functions
  1572. # error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!"
  1573. # endif
  1574. # endif
  1575. # if !defined(_LIBCPP_VERSION)
  1576. # ifndef __cpp_lib_memory_resource
  1577. # error "__cpp_lib_memory_resource should be defined in c++2a"
  1578. # endif
  1579. # if __cpp_lib_memory_resource != 201603L
  1580. # error "__cpp_lib_memory_resource should have the value 201603L in c++2a"
  1581. # endif
  1582. # else // _LIBCPP_VERSION
  1583. # ifdef __cpp_lib_memory_resource
  1584. # error "__cpp_lib_memory_resource should not be defined because it is unimplemented in libc++!"
  1585. # endif
  1586. # endif
  1587. # ifndef __cpp_lib_node_extract
  1588. # error "__cpp_lib_node_extract should be defined in c++2a"
  1589. # endif
  1590. # if __cpp_lib_node_extract != 201606L
  1591. # error "__cpp_lib_node_extract should have the value 201606L in c++2a"
  1592. # endif
  1593. # ifndef __cpp_lib_nonmember_container_access
  1594. # error "__cpp_lib_nonmember_container_access should be defined in c++2a"
  1595. # endif
  1596. # if __cpp_lib_nonmember_container_access != 201411L
  1597. # error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2a"
  1598. # endif
  1599. # ifndef __cpp_lib_not_fn
  1600. # error "__cpp_lib_not_fn should be defined in c++2a"
  1601. # endif
  1602. # if __cpp_lib_not_fn != 201603L
  1603. # error "__cpp_lib_not_fn should have the value 201603L in c++2a"
  1604. # endif
  1605. # ifndef __cpp_lib_null_iterators
  1606. # error "__cpp_lib_null_iterators should be defined in c++2a"
  1607. # endif
  1608. # if __cpp_lib_null_iterators != 201304L
  1609. # error "__cpp_lib_null_iterators should have the value 201304L in c++2a"
  1610. # endif
  1611. # ifndef __cpp_lib_optional
  1612. # error "__cpp_lib_optional should be defined in c++2a"
  1613. # endif
  1614. # if __cpp_lib_optional != 201606L
  1615. # error "__cpp_lib_optional should have the value 201606L in c++2a"
  1616. # endif
  1617. # if !defined(_LIBCPP_VERSION)
  1618. # ifndef __cpp_lib_parallel_algorithm
  1619. # error "__cpp_lib_parallel_algorithm should be defined in c++2a"
  1620. # endif
  1621. # if __cpp_lib_parallel_algorithm != 201603L
  1622. # error "__cpp_lib_parallel_algorithm should have the value 201603L in c++2a"
  1623. # endif
  1624. # else // _LIBCPP_VERSION
  1625. # ifdef __cpp_lib_parallel_algorithm
  1626. # error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!"
  1627. # endif
  1628. # endif
  1629. # ifndef __cpp_lib_quoted_string_io
  1630. # error "__cpp_lib_quoted_string_io should be defined in c++2a"
  1631. # endif
  1632. # if __cpp_lib_quoted_string_io != 201304L
  1633. # error "__cpp_lib_quoted_string_io should have the value 201304L in c++2a"
  1634. # endif
  1635. # if !defined(_LIBCPP_VERSION)
  1636. # ifndef __cpp_lib_ranges
  1637. # error "__cpp_lib_ranges should be defined in c++2a"
  1638. # endif
  1639. # if __cpp_lib_ranges != 201811L
  1640. # error "__cpp_lib_ranges should have the value 201811L in c++2a"
  1641. # endif
  1642. # else // _LIBCPP_VERSION
  1643. # ifdef __cpp_lib_ranges
  1644. # error "__cpp_lib_ranges should not be defined because it is unimplemented in libc++!"
  1645. # endif
  1646. # endif
  1647. # ifndef __cpp_lib_raw_memory_algorithms
  1648. # error "__cpp_lib_raw_memory_algorithms should be defined in c++2a"
  1649. # endif
  1650. # if __cpp_lib_raw_memory_algorithms != 201606L
  1651. # error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++2a"
  1652. # endif
  1653. # ifndef __cpp_lib_result_of_sfinae
  1654. # error "__cpp_lib_result_of_sfinae should be defined in c++2a"
  1655. # endif
  1656. # if __cpp_lib_result_of_sfinae != 201210L
  1657. # error "__cpp_lib_result_of_sfinae should have the value 201210L in c++2a"
  1658. # endif
  1659. # ifndef __cpp_lib_robust_nonmodifying_seq_ops
  1660. # error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++2a"
  1661. # endif
  1662. # if __cpp_lib_robust_nonmodifying_seq_ops != 201304L
  1663. # error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++2a"
  1664. # endif
  1665. # ifndef __cpp_lib_sample
  1666. # error "__cpp_lib_sample should be defined in c++2a"
  1667. # endif
  1668. # if __cpp_lib_sample != 201603L
  1669. # error "__cpp_lib_sample should have the value 201603L in c++2a"
  1670. # endif
  1671. # ifndef __cpp_lib_scoped_lock
  1672. # error "__cpp_lib_scoped_lock should be defined in c++2a"
  1673. # endif
  1674. # if __cpp_lib_scoped_lock != 201703L
  1675. # error "__cpp_lib_scoped_lock should have the value 201703L in c++2a"
  1676. # endif
  1677. # ifndef __cpp_lib_shared_mutex
  1678. # error "__cpp_lib_shared_mutex should be defined in c++2a"
  1679. # endif
  1680. # if __cpp_lib_shared_mutex != 201505L
  1681. # error "__cpp_lib_shared_mutex should have the value 201505L in c++2a"
  1682. # endif
  1683. # if !defined(_LIBCPP_VERSION)
  1684. # ifndef __cpp_lib_shared_ptr_arrays
  1685. # error "__cpp_lib_shared_ptr_arrays should be defined in c++2a"
  1686. # endif
  1687. # if __cpp_lib_shared_ptr_arrays != 201611L
  1688. # error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++2a"
  1689. # endif
  1690. # else // _LIBCPP_VERSION
  1691. # ifdef __cpp_lib_shared_ptr_arrays
  1692. # error "__cpp_lib_shared_ptr_arrays should not be defined because it is unimplemented in libc++!"
  1693. # endif
  1694. # endif
  1695. # ifndef __cpp_lib_shared_ptr_weak_type
  1696. # error "__cpp_lib_shared_ptr_weak_type should be defined in c++2a"
  1697. # endif
  1698. # if __cpp_lib_shared_ptr_weak_type != 201606L
  1699. # error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++2a"
  1700. # endif
  1701. # ifndef __cpp_lib_shared_timed_mutex
  1702. # error "__cpp_lib_shared_timed_mutex should be defined in c++2a"
  1703. # endif
  1704. # if __cpp_lib_shared_timed_mutex != 201402L
  1705. # error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++2a"
  1706. # endif
  1707. # ifndef __cpp_lib_string_udls
  1708. # error "__cpp_lib_string_udls should be defined in c++2a"
  1709. # endif
  1710. # if __cpp_lib_string_udls != 201304L
  1711. # error "__cpp_lib_string_udls should have the value 201304L in c++2a"
  1712. # endif
  1713. # ifndef __cpp_lib_string_view
  1714. # error "__cpp_lib_string_view should be defined in c++2a"
  1715. # endif
  1716. # if __cpp_lib_string_view != 201606L
  1717. # error "__cpp_lib_string_view should have the value 201606L in c++2a"
  1718. # endif
  1719. # if !defined(_LIBCPP_VERSION)
  1720. # ifndef __cpp_lib_three_way_comparison
  1721. # error "__cpp_lib_three_way_comparison should be defined in c++2a"
  1722. # endif
  1723. # if __cpp_lib_three_way_comparison != 201711L
  1724. # error "__cpp_lib_three_way_comparison should have the value 201711L in c++2a"
  1725. # endif
  1726. # else // _LIBCPP_VERSION
  1727. # ifdef __cpp_lib_three_way_comparison
  1728. # error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
  1729. # endif
  1730. # endif
  1731. # if !defined(_LIBCPP_VERSION)
  1732. # ifndef __cpp_lib_to_chars
  1733. # error "__cpp_lib_to_chars should be defined in c++2a"
  1734. # endif
  1735. # if __cpp_lib_to_chars != 201611L
  1736. # error "__cpp_lib_to_chars should have the value 201611L in c++2a"
  1737. # endif
  1738. # else // _LIBCPP_VERSION
  1739. # ifdef __cpp_lib_to_chars
  1740. # error "__cpp_lib_to_chars should not be defined because it is unimplemented in libc++!"
  1741. # endif
  1742. # endif
  1743. # ifndef __cpp_lib_transformation_trait_aliases
  1744. # error "__cpp_lib_transformation_trait_aliases should be defined in c++2a"
  1745. # endif
  1746. # if __cpp_lib_transformation_trait_aliases != 201304L
  1747. # error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++2a"
  1748. # endif
  1749. # ifndef __cpp_lib_transparent_operators
  1750. # error "__cpp_lib_transparent_operators should be defined in c++2a"
  1751. # endif
  1752. # if __cpp_lib_transparent_operators != 201510L
  1753. # error "__cpp_lib_transparent_operators should have the value 201510L in c++2a"
  1754. # endif
  1755. # ifndef __cpp_lib_tuple_element_t
  1756. # error "__cpp_lib_tuple_element_t should be defined in c++2a"
  1757. # endif
  1758. # if __cpp_lib_tuple_element_t != 201402L
  1759. # error "__cpp_lib_tuple_element_t should have the value 201402L in c++2a"
  1760. # endif
  1761. # ifndef __cpp_lib_tuples_by_type
  1762. # error "__cpp_lib_tuples_by_type should be defined in c++2a"
  1763. # endif
  1764. # if __cpp_lib_tuples_by_type != 201304L
  1765. # error "__cpp_lib_tuples_by_type should have the value 201304L in c++2a"
  1766. # endif
  1767. # ifndef __cpp_lib_type_trait_variable_templates
  1768. # error "__cpp_lib_type_trait_variable_templates should be defined in c++2a"
  1769. # endif
  1770. # if __cpp_lib_type_trait_variable_templates != 201510L
  1771. # error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++2a"
  1772. # endif
  1773. # ifndef __cpp_lib_uncaught_exceptions
  1774. # error "__cpp_lib_uncaught_exceptions should be defined in c++2a"
  1775. # endif
  1776. # if __cpp_lib_uncaught_exceptions != 201411L
  1777. # error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++2a"
  1778. # endif
  1779. # ifndef __cpp_lib_unordered_map_try_emplace
  1780. # error "__cpp_lib_unordered_map_try_emplace should be defined in c++2a"
  1781. # endif
  1782. # if __cpp_lib_unordered_map_try_emplace != 201411L
  1783. # error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++2a"
  1784. # endif
  1785. # ifndef __cpp_lib_variant
  1786. # error "__cpp_lib_variant should be defined in c++2a"
  1787. # endif
  1788. # if __cpp_lib_variant != 201606L
  1789. # error "__cpp_lib_variant should have the value 201606L in c++2a"
  1790. # endif
  1791. # ifndef __cpp_lib_void_t
  1792. # error "__cpp_lib_void_t should be defined in c++2a"
  1793. # endif
  1794. # if __cpp_lib_void_t != 201411L
  1795. # error "__cpp_lib_void_t should have the value 201411L in c++2a"
  1796. # endif
  1797. #endif // TEST_STD_VER > 17
  1798. int main() {}