// -*- C++ -*-
//===--------------------------- version ----------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_VERSIONH
#define _LIBCPP_VERSIONH

/*
    version synopsis

    Table 35 — Standard library feature-test macros
Macro name                                  Value   Headers
__cpp_lib_addressof_constexpr               201603L <memory>
__cpp_lib_allocator_traits_is_always_equal  201411L <memory> <scoped_allocator> <string> 
                                                    <deque> <forward_list> <list> <vector>
                                                    <map> <set> <unordered_map> <unordered_set>
__cpp_lib_any                               201606L <any>
__cpp_lib_apply                             201603L <tuple>
__cpp_lib_array_constexpr                   201603L <iterator> <array>
__cpp_lib_as_const                          201510L <utility>
__cpp_lib_atomic_is_always_lock_free        201603L <atomic>
__cpp_lib_atomic_ref                        201806L <atomic>
__cpp_lib_bit_cast                          201806L <bit>
__cpp_lib_bool_constant                     201505L <type_traits>
__cpp_lib_boyer_moore_searcher              201603L <functional>
__cpp_lib_byte                              201603L <cstddef>
__cpp_lib_char8_t                           201811L <atomic> <filesystem> <istream> <limits>
                                                    <locale> <ostream> <string> <string_view>
__cpp_lib_chrono                            201611L <chrono>
__cpp_lib_chrono_udls                       201304L <chrono>
__cpp_lib_clamp                             201603L <algorithm>
__cpp_lib_complex_udls                      201309L <complex>
__cpp_lib_concepts                          201806L <concepts>
__cpp_lib_constexpr_swap_algorithms         201806L <algorithm>
__cpp_lib_enable_shared_from_this           201603L <memory>
__cpp_lib_erase_if                          201811L <string> <deque> <forward_list> <list> 
                                                    <vector> <map> <set> <unordered_map> 
                                                    <unordered_set>
__cpp_lib_exchange_function                 201304L <utility>
__cpp_lib_execution                         201603L <execution>
__cpp_lib_filesystem                        201703L <filesystem>
__cpp_lib_gcd_lcm                           201606L <numeric>
__cpp_lib_generic_associative_lookup        201304L <map> <set>
__cpp_lib_hardware_interference_size        201703L <new>
__cpp_lib_has_unique_object_representations 201606L <type_traits>
__cpp_lib_hypot                             201603L <cmath>
__cpp_lib_incomplete_container_elements     201505L <forward_list> <list> <vector>
__cpp_lib_integer_sequence                  201304L <utility>
__cpp_lib_integral_constant_callable        201304L <type_traits>
__cpp_lib_invoke                            201411L <functional>
__cpp_lib_is_aggregate                      201703L <type_traits>
__cpp_lib_is_final                          201402L <type_traits>
__cpp_lib_is_invocable                      201703L <type_traits>
__cpp_lib_is_null_pointer                   201309L <type_traits>
__cpp_lib_is_swappable                      201603L <type_traits>
__cpp_lib_launder                           201606L <new>
__cpp_lib_list_remove_return_type           201806L <forward_list> <list>
__cpp_lib_logical_traits                    201510L <type_traits>
__cpp_lib_make_from_tuple                   201606L <tuple>
__cpp_lib_make_reverse_iterator             201402L <iterator>
__cpp_lib_make_unique                       201304L <memory>
__cpp_lib_map_try_emplace                   201411L <map>
__cpp_lib_math_special_functions            201603L <cmath>
__cpp_lib_memory_resource                   201603L <memory_resource>
__cpp_lib_node_extract                      201606L <map> <set> <unordered_map> <unordered_set>
__cpp_lib_nonmember_container_access        201411L <iterator> <array> <deque> <forward_list>
                                                    <list> <map> <regex> <set> <string>
                                                    <unordered_map> <unordered_set> <vector>
__cpp_lib_not_fn                            201603L <functional>
__cpp_lib_null_iterators                    201304L <iterator>
__cpp_lib_optional                          201606L <optional>
__cpp_lib_parallel_algorithm                201603L <algorithm> <numeric>
__cpp_lib_quoted_string_io                  201304L <iomanip>
__cpp_lib_raw_memory_algorithms             201606L <memory>
__cpp_lib_result_of_sfinae                  201210L <functional> <type_traits>
__cpp_lib_robust_nonmodifying_seq_ops       201304L <algorithm>
__cpp_lib_sample                            201603L <algorithm>
__cpp_lib_scoped_lock                       201703L <mutex>
__cpp_lib_shared_mutex                      201505L <shared_mutex>
__cpp_lib_shared_ptr_arrays                 201611L <memory>
__cpp_lib_shared_ptr_weak_type              201606L <memory>
__cpp_lib_shared_timed_mutex                201402L <shared_mutex>
__cpp_lib_string_udls                       201304L <string>
__cpp_lib_string_view                       201606L <string> <string_view>
__cpp_lib_to_chars                          201611L <charconv>
__cpp_lib_transformation_trait_aliases      201304L <type_traits>
__cpp_lib_transparent_operators             201510L <memory> <functional>
__cpp_lib_tuple_element_t                   201402L <tuple>
__cpp_lib_tuples_by_type                    201304L <utility> <tuple>
__cpp_lib_type_trait_variable_templates     201510L <type_traits>
__cpp_lib_uncaught_exceptions               201411L <exception>
__cpp_lib_unordered_map_try_emplace         201411L <unordered_map>
__cpp_lib_variant                           201606L <variant>
__cpp_lib_void_t                            201411L <type_traits>

*/

#include <__config>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

#if _LIBCPP_STD_VER > 11
#endif

#if _LIBCPP_STD_VER > 14
# define __cpp_lib_atomic_is_always_lock_free           201603L
# define __cpp_lib_filesystem                           201703L
# define __cpp_lib_invoke                               201411L
# define __cpp_lib_void_t                               201411L
# define __cpp_lib_node_extract                         201606L
#endif

#if _LIBCPP_STD_VER > 17
#ifndef _LIBCPP_NO_HAS_CHAR8_T
# define __cpp_lib_char8_t                              201811L
#endif
#define  __cpp_lib_erase_if                             201811L
#endif

#endif  // _LIBCPP_VERSIONH
