14ba319b5SDimitry Andric// -*- C++ -*- 24ba319b5SDimitry Andric//===--------------------------- version ----------------------------------===// 34ba319b5SDimitry Andric// 44ba319b5SDimitry Andric// The LLVM Compiler Infrastructure 54ba319b5SDimitry Andric// 64ba319b5SDimitry Andric// This file is dual licensed under the MIT and the University of Illinois Open 74ba319b5SDimitry Andric// Source Licenses. See LICENSE.TXT for details. 84ba319b5SDimitry Andric// 94ba319b5SDimitry Andric//===----------------------------------------------------------------------===// 104ba319b5SDimitry Andric 114ba319b5SDimitry Andric#ifndef _LIBCPP_VERSIONH 124ba319b5SDimitry Andric#define _LIBCPP_VERSIONH 134ba319b5SDimitry Andric 144ba319b5SDimitry Andric/* 154ba319b5SDimitry Andric version synopsis 164ba319b5SDimitry Andric 17*b5893f02SDimitry AndricMacro name Value Headers 18*b5893f02SDimitry Andric__cpp_lib_addressof_constexpr 201603L <memory> 19*b5893f02SDimitry Andric__cpp_lib_allocator_traits_is_always_equal 201411L <memory> <scoped_allocator> <string> 20*b5893f02SDimitry Andric <deque> <forward_list> <list> 21*b5893f02SDimitry Andric <vector> <map> <set> 22*b5893f02SDimitry Andric <unordered_map> <unordered_set> 23*b5893f02SDimitry Andric__cpp_lib_any 201606L <any> 24*b5893f02SDimitry Andric__cpp_lib_apply 201603L <tuple> 25*b5893f02SDimitry Andric__cpp_lib_array_constexpr 201603L <iterator> <array> 26*b5893f02SDimitry Andric__cpp_lib_as_const 201510L <utility> 27*b5893f02SDimitry Andric__cpp_lib_atomic_is_always_lock_free 201603L <atomic> 28*b5893f02SDimitry Andric__cpp_lib_atomic_ref 201806L <atomic> 29*b5893f02SDimitry Andric__cpp_lib_bind_front 201811L <functional> 30*b5893f02SDimitry Andric__cpp_lib_bit_cast 201806L <bit> 31*b5893f02SDimitry Andric__cpp_lib_bool_constant 201505L <type_traits> 32*b5893f02SDimitry Andric__cpp_lib_boyer_moore_searcher 201603L <functional> 33*b5893f02SDimitry Andric__cpp_lib_byte 201603L <cstddef> 34*b5893f02SDimitry Andric__cpp_lib_char8_t 201811L <atomic> <filesystem> <istream> 35*b5893f02SDimitry Andric <limits> <locale> <ostream> 36*b5893f02SDimitry Andric <string> <string_view> 37*b5893f02SDimitry Andric__cpp_lib_chrono 201611L <chrono> 38*b5893f02SDimitry Andric__cpp_lib_chrono_udls 201304L <chrono> 39*b5893f02SDimitry Andric__cpp_lib_clamp 201603L <algorithm> 40*b5893f02SDimitry Andric__cpp_lib_complex_udls 201309L <complex> 41*b5893f02SDimitry Andric__cpp_lib_concepts 201806L <concepts> 42*b5893f02SDimitry Andric__cpp_lib_constexpr_misc 201811L <array> <functional> <iterator> 43*b5893f02SDimitry Andric <string_view> <tuple> <utility> 44*b5893f02SDimitry Andric__cpp_lib_constexpr_swap_algorithms 201806L <algorithm> 45*b5893f02SDimitry Andric__cpp_lib_destroying_delete 201806L <new> 46*b5893f02SDimitry Andric__cpp_lib_enable_shared_from_this 201603L <memory> 47*b5893f02SDimitry Andric__cpp_lib_erase_if 201811L <string> <deque> <forward_list> 48*b5893f02SDimitry Andric <list> <vector> <map> 49*b5893f02SDimitry Andric <set> <unordered_map> <unordered_set> 50*b5893f02SDimitry Andric__cpp_lib_exchange_function 201304L <utility> 51*b5893f02SDimitry Andric__cpp_lib_execution 201603L <execution> 52*b5893f02SDimitry Andric__cpp_lib_filesystem 201703L <filesystem> 53*b5893f02SDimitry Andric__cpp_lib_gcd_lcm 201606L <numeric> 54*b5893f02SDimitry Andric__cpp_lib_generic_associative_lookup 201304L <map> <set> 55*b5893f02SDimitry Andric__cpp_lib_generic_unordered_lookup 201811L <unordered_map> <unordered_set> 56*b5893f02SDimitry Andric__cpp_lib_hardware_interference_size 201703L <new> 57*b5893f02SDimitry Andric__cpp_lib_has_unique_object_representations 201606L <type_traits> 58*b5893f02SDimitry Andric__cpp_lib_hypot 201603L <cmath> 59*b5893f02SDimitry Andric__cpp_lib_incomplete_container_elements 201505L <forward_list> <list> <vector> 60*b5893f02SDimitry Andric__cpp_lib_integer_sequence 201304L <utility> 61*b5893f02SDimitry Andric__cpp_lib_integral_constant_callable 201304L <type_traits> 62*b5893f02SDimitry Andric__cpp_lib_invoke 201411L <functional> 63*b5893f02SDimitry Andric__cpp_lib_is_aggregate 201703L <type_traits> 64*b5893f02SDimitry Andric__cpp_lib_is_constant_evaluated 201811L <type_traits> 65*b5893f02SDimitry Andric__cpp_lib_is_final 201402L <type_traits> 66*b5893f02SDimitry Andric__cpp_lib_is_invocable 201703L <type_traits> 67*b5893f02SDimitry Andric__cpp_lib_is_null_pointer 201309L <type_traits> 68*b5893f02SDimitry Andric__cpp_lib_is_swappable 201603L <type_traits> 69*b5893f02SDimitry Andric__cpp_lib_launder 201606L <new> 70*b5893f02SDimitry Andric__cpp_lib_list_remove_return_type 201806L <forward_list> <list> 71*b5893f02SDimitry Andric__cpp_lib_logical_traits 201510L <type_traits> 72*b5893f02SDimitry Andric__cpp_lib_make_from_tuple 201606L <tuple> 73*b5893f02SDimitry Andric__cpp_lib_make_reverse_iterator 201402L <iterator> 74*b5893f02SDimitry Andric__cpp_lib_make_unique 201304L <memory> 75*b5893f02SDimitry Andric__cpp_lib_map_try_emplace 201411L <map> 76*b5893f02SDimitry Andric__cpp_lib_math_special_functions 201603L <cmath> 77*b5893f02SDimitry Andric__cpp_lib_memory_resource 201603L <memory_resource> 78*b5893f02SDimitry Andric__cpp_lib_node_extract 201606L <map> <set> <unordered_map> 79*b5893f02SDimitry Andric <unordered_set> 80*b5893f02SDimitry Andric__cpp_lib_nonmember_container_access 201411L <iterator> <array> <deque> 81*b5893f02SDimitry Andric <forward_list> <list> <map> 82*b5893f02SDimitry Andric <regex> <set> <string> 83*b5893f02SDimitry Andric <unordered_map> <unordered_set> <vector> 84*b5893f02SDimitry Andric__cpp_lib_not_fn 201603L <functional> 85*b5893f02SDimitry Andric__cpp_lib_null_iterators 201304L <iterator> 86*b5893f02SDimitry Andric__cpp_lib_optional 201606L <optional> 87*b5893f02SDimitry Andric__cpp_lib_parallel_algorithm 201603L <algorithm> <numeric> 88*b5893f02SDimitry Andric__cpp_lib_quoted_string_io 201304L <iomanip> 89*b5893f02SDimitry Andric__cpp_lib_ranges 201811L <algorithm> <functional> <iterator> 90*b5893f02SDimitry Andric <memory> <ranges> 91*b5893f02SDimitry Andric__cpp_lib_raw_memory_algorithms 201606L <memory> 92*b5893f02SDimitry Andric__cpp_lib_result_of_sfinae 201210L <functional> <type_traits> 93*b5893f02SDimitry Andric__cpp_lib_robust_nonmodifying_seq_ops 201304L <algorithm> 94*b5893f02SDimitry Andric__cpp_lib_sample 201603L <algorithm> 95*b5893f02SDimitry Andric__cpp_lib_scoped_lock 201703L <mutex> 96*b5893f02SDimitry Andric__cpp_lib_shared_mutex 201505L <shared_mutex> 97*b5893f02SDimitry Andric__cpp_lib_shared_ptr_arrays 201611L <memory> 98*b5893f02SDimitry Andric__cpp_lib_shared_ptr_weak_type 201606L <memory> 99*b5893f02SDimitry Andric__cpp_lib_shared_timed_mutex 201402L <shared_mutex> 100*b5893f02SDimitry Andric__cpp_lib_string_udls 201304L <string> 101*b5893f02SDimitry Andric__cpp_lib_string_view 201606L <string> <string_view> 102*b5893f02SDimitry Andric__cpp_lib_three_way_comparison 201711L <compare> 103*b5893f02SDimitry Andric__cpp_lib_to_chars 201611L <utility> 104*b5893f02SDimitry Andric__cpp_lib_transformation_trait_aliases 201304L <type_traits> 105*b5893f02SDimitry Andric__cpp_lib_transparent_operators 201510L <functional> 106*b5893f02SDimitry Andric 201210L // C++14 107*b5893f02SDimitry Andric__cpp_lib_tuple_element_t 201402L <tuple> 108*b5893f02SDimitry Andric__cpp_lib_tuples_by_type 201304L <utility> <tuple> 109*b5893f02SDimitry Andric__cpp_lib_type_trait_variable_templates 201510L <type_traits> 110*b5893f02SDimitry Andric__cpp_lib_uncaught_exceptions 201411L <exception> 111*b5893f02SDimitry Andric__cpp_lib_unordered_map_try_emplace 201411L <unordered_map> 112*b5893f02SDimitry Andric__cpp_lib_variant 201606L <variant> 113*b5893f02SDimitry Andric__cpp_lib_void_t 201411L <type_traits> 114*b5893f02SDimitry Andric 1154ba319b5SDimitry Andric*/ 1164ba319b5SDimitry Andric 1174ba319b5SDimitry Andric#include <__config> 1184ba319b5SDimitry Andric 1194ba319b5SDimitry Andric#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 1204ba319b5SDimitry Andric#pragma GCC system_header 1214ba319b5SDimitry Andric#endif 1224ba319b5SDimitry Andric 123*b5893f02SDimitry Andric#if _LIBCPP_STD_VER > 11 124*b5893f02SDimitry Andric# define __cpp_lib_chrono_udls 201304L 125*b5893f02SDimitry Andric# define __cpp_lib_complex_udls 201309L 126*b5893f02SDimitry Andric# define __cpp_lib_exchange_function 201304L 127*b5893f02SDimitry Andric# define __cpp_lib_generic_associative_lookup 201304L 128*b5893f02SDimitry Andric# define __cpp_lib_integer_sequence 201304L 129*b5893f02SDimitry Andric# define __cpp_lib_integral_constant_callable 201304L 130*b5893f02SDimitry Andric# define __cpp_lib_is_final 201402L 131*b5893f02SDimitry Andric# define __cpp_lib_is_null_pointer 201309L 132*b5893f02SDimitry Andric# define __cpp_lib_make_reverse_iterator 201402L 133*b5893f02SDimitry Andric# define __cpp_lib_make_unique 201304L 134*b5893f02SDimitry Andric# define __cpp_lib_null_iterators 201304L 135*b5893f02SDimitry Andric# define __cpp_lib_quoted_string_io 201304L 136*b5893f02SDimitry Andric# define __cpp_lib_result_of_sfinae 201210L 137*b5893f02SDimitry Andric# define __cpp_lib_robust_nonmodifying_seq_ops 201304L 138*b5893f02SDimitry Andric# if !defined(_LIBCPP_HAS_NO_THREADS) 139*b5893f02SDimitry Andric# define __cpp_lib_shared_timed_mutex 201402L 140*b5893f02SDimitry Andric# endif 141*b5893f02SDimitry Andric# define __cpp_lib_string_udls 201304L 142*b5893f02SDimitry Andric# define __cpp_lib_transformation_trait_aliases 201304L 143*b5893f02SDimitry Andric# define __cpp_lib_transparent_operators 201210L 144*b5893f02SDimitry Andric# define __cpp_lib_tuple_element_t 201402L 145*b5893f02SDimitry Andric# define __cpp_lib_tuples_by_type 201304L 146*b5893f02SDimitry Andric#endif 147*b5893f02SDimitry Andric 148*b5893f02SDimitry Andric#if _LIBCPP_STD_VER > 14 149*b5893f02SDimitry Andric# if !defined(_LIBCPP_HAS_NO_BUILTIN_ADDRESSOF) 150*b5893f02SDimitry Andric# define __cpp_lib_addressof_constexpr 201603L 151*b5893f02SDimitry Andric# endif 152*b5893f02SDimitry Andric# define __cpp_lib_allocator_traits_is_always_equal 201411L 153*b5893f02SDimitry Andric# define __cpp_lib_any 201606L 154*b5893f02SDimitry Andric# define __cpp_lib_apply 201603L 155*b5893f02SDimitry Andric# define __cpp_lib_array_constexpr 201603L 156*b5893f02SDimitry Andric# define __cpp_lib_as_const 201510L 157*b5893f02SDimitry Andric# if !defined(_LIBCPP_HAS_NO_THREADS) 158*b5893f02SDimitry Andric# define __cpp_lib_atomic_is_always_lock_free 201603L 159*b5893f02SDimitry Andric# endif 160*b5893f02SDimitry Andric# define __cpp_lib_bool_constant 201505L 161*b5893f02SDimitry Andric// # define __cpp_lib_boyer_moore_searcher 201603L 162*b5893f02SDimitry Andric# define __cpp_lib_byte 201603L 163*b5893f02SDimitry Andric# define __cpp_lib_chrono 201611L 164*b5893f02SDimitry Andric# define __cpp_lib_clamp 201603L 165*b5893f02SDimitry Andric# define __cpp_lib_enable_shared_from_this 201603L 166*b5893f02SDimitry Andric// # define __cpp_lib_execution 201603L 167*b5893f02SDimitry Andric# define __cpp_lib_filesystem 201703L 168*b5893f02SDimitry Andric# define __cpp_lib_gcd_lcm 201606L 169*b5893f02SDimitry Andric# define __cpp_lib_hardware_interference_size 201703L 170*b5893f02SDimitry Andric# if defined(_LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS) 171*b5893f02SDimitry Andric# define __cpp_lib_has_unique_object_representations 201606L 172*b5893f02SDimitry Andric# endif 173*b5893f02SDimitry Andric# define __cpp_lib_hypot 201603L 174*b5893f02SDimitry Andric# define __cpp_lib_incomplete_container_elements 201505L 175*b5893f02SDimitry Andric# define __cpp_lib_invoke 201411L 176*b5893f02SDimitry Andric# if !defined(_LIBCPP_HAS_NO_IS_AGGREGATE) 177*b5893f02SDimitry Andric# define __cpp_lib_is_aggregate 201703L 178*b5893f02SDimitry Andric# endif 179*b5893f02SDimitry Andric# define __cpp_lib_is_invocable 201703L 180*b5893f02SDimitry Andric# define __cpp_lib_is_swappable 201603L 181*b5893f02SDimitry Andric# define __cpp_lib_launder 201606L 182*b5893f02SDimitry Andric# define __cpp_lib_logical_traits 201510L 183*b5893f02SDimitry Andric# define __cpp_lib_make_from_tuple 201606L 184*b5893f02SDimitry Andric# define __cpp_lib_map_try_emplace 201411L 185*b5893f02SDimitry Andric// # define __cpp_lib_math_special_functions 201603L 186*b5893f02SDimitry Andric// # define __cpp_lib_memory_resource 201603L 187*b5893f02SDimitry Andric# define __cpp_lib_node_extract 201606L 188*b5893f02SDimitry Andric# define __cpp_lib_nonmember_container_access 201411L 189*b5893f02SDimitry Andric# define __cpp_lib_not_fn 201603L 190*b5893f02SDimitry Andric# define __cpp_lib_optional 201606L 191*b5893f02SDimitry Andric// # define __cpp_lib_parallel_algorithm 201603L 192*b5893f02SDimitry Andric# define __cpp_lib_raw_memory_algorithms 201606L 193*b5893f02SDimitry Andric# define __cpp_lib_sample 201603L 194*b5893f02SDimitry Andric# define __cpp_lib_scoped_lock 201703L 195*b5893f02SDimitry Andric# if !defined(_LIBCPP_HAS_NO_THREADS) 196*b5893f02SDimitry Andric# define __cpp_lib_shared_mutex 201505L 197*b5893f02SDimitry Andric# endif 198*b5893f02SDimitry Andric// # define __cpp_lib_shared_ptr_arrays 201611L 199*b5893f02SDimitry Andric# define __cpp_lib_shared_ptr_weak_type 201606L 200*b5893f02SDimitry Andric# define __cpp_lib_string_view 201606L 201*b5893f02SDimitry Andric// # define __cpp_lib_to_chars 201611L 202*b5893f02SDimitry Andric# undef __cpp_lib_transparent_operators 203*b5893f02SDimitry Andric# define __cpp_lib_transparent_operators 201510L 204*b5893f02SDimitry Andric# define __cpp_lib_type_trait_variable_templates 201510L 205*b5893f02SDimitry Andric# define __cpp_lib_uncaught_exceptions 201411L 206*b5893f02SDimitry Andric# define __cpp_lib_unordered_map_try_emplace 201411L 207*b5893f02SDimitry Andric# define __cpp_lib_variant 201606L 208*b5893f02SDimitry Andric# define __cpp_lib_void_t 201411L 209*b5893f02SDimitry Andric#endif 210*b5893f02SDimitry Andric 211*b5893f02SDimitry Andric#if _LIBCPP_STD_VER > 17 212*b5893f02SDimitry Andric# if !defined(_LIBCPP_HAS_NO_THREADS) 213*b5893f02SDimitry Andric// # define __cpp_lib_atomic_ref 201806L 214*b5893f02SDimitry Andric# endif 215*b5893f02SDimitry Andric// # define __cpp_lib_bind_front 201811L 216*b5893f02SDimitry Andric// # define __cpp_lib_bit_cast 201806L 217*b5893f02SDimitry Andric# if !defined(_LIBCPP_NO_HAS_CHAR8_T) 218*b5893f02SDimitry Andric# define __cpp_lib_char8_t 201811L 219*b5893f02SDimitry Andric# endif 220*b5893f02SDimitry Andric// # define __cpp_lib_concepts 201806L 221*b5893f02SDimitry Andric// # define __cpp_lib_constexpr_misc 201811L 222*b5893f02SDimitry Andric// # define __cpp_lib_constexpr_swap_algorithms 201806L 223*b5893f02SDimitry Andric// # define __cpp_lib_destroying_delete 201806L 224*b5893f02SDimitry Andric# define __cpp_lib_erase_if 201811L 225*b5893f02SDimitry Andric// # define __cpp_lib_generic_unordered_lookup 201811L 226*b5893f02SDimitry Andric// # define __cpp_lib_is_constant_evaluated 201811L 227*b5893f02SDimitry Andric// # define __cpp_lib_list_remove_return_type 201806L 228*b5893f02SDimitry Andric// # define __cpp_lib_ranges 201811L 229*b5893f02SDimitry Andric// # define __cpp_lib_three_way_comparison 201711L 230*b5893f02SDimitry Andric#endif 231*b5893f02SDimitry Andric 2324ba319b5SDimitry Andric#endif // _LIBCPP_VERSIONH 233