// Standard C++ <version> header
// Copyright (C) Florian Negele

// This file is part of the Eigen Compiler Suite.

// The ECS is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// The ECS is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of the GNU General Public License version 3,
// the copyright holder grants you additional permissions to use
// this file as described in the ECS Runtime Support Exception.

// You should have received a copy of the GNU General Public License
// and a copy of the ECS Runtime Support Exception along with
// the ECS.  If not, see <https://www.gnu.org/licenses/>.

#ifndef ECS_CPP_VERSION_HEADER_INCLUDED
#define ECS_CPP_VERSION_HEADER_INCLUDED

#define __cpp_lib_adaptor_iterator_pair_constructor   202106L
#define __cpp_lib_addressof_constexpr                 201603L
#define __cpp_lib_algorithm_iterator_requirements     202207L
#define __cpp_lib_allocate_at_least                   202302L
#define __cpp_lib_allocator_traits_is_always_equal    201411L
#define __cpp_lib_any                                 201606L
#define __cpp_lib_apply                               201603L
#define __cpp_lib_array_constexpr                     201811L
#define __cpp_lib_as_const                            201510L
#define __cpp_lib_associative_heterogeneous_erasure   202110L
#define __cpp_lib_assume_aligned                      201811L
#define __cpp_lib_atomic_flag_test                    201907L
#define __cpp_lib_atomic_float                        201711L
#define __cpp_lib_atomic_is_always_lock_free          201603L
#define __cpp_lib_atomic_lock_free_type_aliases       201907L
#define __cpp_lib_atomic_ref                          201806L
#define __cpp_lib_atomic_shared_ptr                   201711L
#define __cpp_lib_atomic_value_initialization         201911L
#define __cpp_lib_atomic_wait                         201907L
#define __cpp_lib_barrier                             202302L
#define __cpp_lib_bind_back                           202202L
#define __cpp_lib_bind_front                          201907L
#define __cpp_lib_bit_cast                            201806L
#define __cpp_lib_bitops                              201907L
#define __cpp_lib_bool_constant                       201505L
#define __cpp_lib_bounded_array_traits                201902L
#define __cpp_lib_boyer_moore_searcher                201603L
#define __cpp_lib_byte                                201603L
#define __cpp_lib_byteswap                            202110L
#define __cpp_lib_char8_t                             201907L
#define __cpp_lib_chrono                              201907L
#define __cpp_lib_chrono_udls                         201304L
#define __cpp_lib_clamp                               201603L
#define __cpp_lib_common_reference                    202302L
#define __cpp_lib_common_reference_wrapper            202302L
#define __cpp_lib_complex_udls                        201309L
#define __cpp_lib_concepts                            202207L
#define __cpp_lib_constexpr_algorithms                201806L
#define __cpp_lib_constexpr_bitset                    202207L
#define __cpp_lib_constexpr_charconv                  202207L
#define __cpp_lib_constexpr_cmath                     202202L
#define __cpp_lib_constexpr_complex                   201711L
#define __cpp_lib_constexpr_dynamic_alloc             201907L
#define __cpp_lib_constexpr_functional                201907L
#define __cpp_lib_constexpr_iterator                  201811L
#define __cpp_lib_constexpr_memory                    202202L
#define __cpp_lib_constexpr_numeric                   201911L
#define __cpp_lib_constexpr_string                    201907L
#define __cpp_lib_constexpr_string_view               201811L
#define __cpp_lib_constexpr_tuple                     201811L
#define __cpp_lib_constexpr_typeinfo                  202106L
#define __cpp_lib_constexpr_utility                   201811L
#define __cpp_lib_constexpr_vector                    201907L
#define __cpp_lib_containers_ranges                   202202L
#define __cpp_lib_coroutine                           201902L
#define __cpp_lib_debugging                           202403L
#define __cpp_lib_destroying_delete                   201806L
#define __cpp_lib_enable_shared_from_this             201603L
#define __cpp_lib_endian                              201907L
#define __cpp_lib_erase_if                            202002L
#define __cpp_lib_exchange_function                   201304L
#define __cpp_lib_execution                           201902L
#define __cpp_lib_expected                            202211L
#define __cpp_lib_filesystem                          201703L
#define __cpp_lib_flat_map                            202207L
#define __cpp_lib_flat_set                            202207L
#define __cpp_lib_format                              202207L
#define __cpp_lib_format_ranges                       202207L
#define __cpp_lib_formatters                          202302L
#define __cpp_lib_forward_like                        202207L
#define __cpp_lib_gcd_lcm                             201606L
#define __cpp_lib_generator                           202207L
#define __cpp_lib_generic_associative_lookup          201304L
#define __cpp_lib_generic_unordered_lookup            201811L
#define __cpp_lib_hardware_interference_size          201703L
#define __cpp_lib_has_unique_object_representations   201606L
#define __cpp_lib_hypot                               201603L
#define __cpp_lib_incomplete_container_elements       201505L
#define __cpp_lib_int_pow2                            202002L
#define __cpp_lib_integer_comparison_functions        202002L
#define __cpp_lib_integer_sequence                    201304L
#define __cpp_lib_integral_constant_callable          201304L
#define __cpp_lib_interpolate                         201902L
#define __cpp_lib_invoke                              201411L
#define __cpp_lib_invoke_r                            202106L
#define __cpp_lib_ios_noreplace                       202207L
#define __cpp_lib_is_aggregate                        201703L
#define __cpp_lib_is_constant_evaluated               201811L
#define __cpp_lib_is_final                            201402L
#define __cpp_lib_is_implicit_lifetime                202302L
#define __cpp_lib_is_invocable                        201703L
#define __cpp_lib_is_layout_compatible                201907L
#define __cpp_lib_is_nothrow_convertible              201806L
#define __cpp_lib_is_null_pointer                     201309L
#define __cpp_lib_is_pointer_interconvertible         201907L
#define __cpp_lib_is_scoped_enum                      202011L
#define __cpp_lib_is_swappable                        201603L
#define __cpp_lib_jthread                             201911L
#define __cpp_lib_latch                               201907L
#define __cpp_lib_launder                             201606L
#define __cpp_lib_list_remove_return_type             201806L
#define __cpp_lib_logical_traits                      201510L
#define __cpp_lib_make_from_tuple                     201606L
#define __cpp_lib_make_reverse_iterator               201402L
#define __cpp_lib_make_unique                         201304L
#define __cpp_lib_map_try_emplace                     201411L
#define __cpp_lib_math_constants                      201907L
#define __cpp_lib_math_special_functions              201603L
#define __cpp_lib_mdspan                              202207L
#define __cpp_lib_memory_resource                     201603L
#define __cpp_lib_modules                             202207L
#define __cpp_lib_move_iterator_concept               202207L
#define __cpp_lib_move_only_function                  202110L
#define __cpp_lib_node_extract                        201606L
#define __cpp_lib_nonmember_container_access          201411L
#define __cpp_lib_not_fn                              201603L
#define __cpp_lib_null_iterators                      201304L
#define __cpp_lib_optional                            202110L
#define __cpp_lib_out_ptr                             202106L
#define __cpp_lib_parallel_algorithm                  201603L
#define __cpp_lib_polymorphic_allocator               201902L
#define __cpp_lib_print                               202207L
#define __cpp_lib_quoted_string_io                    201304L
#define __cpp_lib_ranges                              202302L
#define __cpp_lib_ranges_as_const                     202207L
#define __cpp_lib_ranges_as_rvalue                    202207L
#define __cpp_lib_ranges_cartesian_product            202207L
#define __cpp_lib_ranges_chunk                        202202L
#define __cpp_lib_ranges_chunk_by                     202202L
#define __cpp_lib_ranges_contains                     202207L
#define __cpp_lib_ranges_enumerate                    202302L
#define __cpp_lib_ranges_find_last                    202207L
#define __cpp_lib_ranges_fold                         202207L
#define __cpp_lib_ranges_iota                         202202L
#define __cpp_lib_ranges_join_with                    202202L
#define __cpp_lib_ranges_repeat                       202207L
#define __cpp_lib_ranges_slide                        202202L
#define __cpp_lib_ranges_starts_ends_with             202106L
#define __cpp_lib_ranges_stride                       202207L
#define __cpp_lib_ranges_to_container                 202202L
#define __cpp_lib_ranges_zip                          202110L
#define __cpp_lib_raw_memory_algorithms               201606L
#define __cpp_lib_reference_from_temporary            202202L
#define __cpp_lib_remove_cvref                        201711L
#define __cpp_lib_result_of_sfinae                    201210L
#define __cpp_lib_robust_nonmodifying_seq_ops         201304L
#define __cpp_lib_sample                              201603L
#define __cpp_lib_scoped_lock                         201703L
#define __cpp_lib_semaphore                           201907L
#define __cpp_lib_shared_mutex                        201505L
#define __cpp_lib_shared_ptr_arrays                   201707L
#define __cpp_lib_shared_ptr_weak_type                201606L
#define __cpp_lib_shared_timed_mutex                  201402L
#define __cpp_lib_shift                               202202L
#define __cpp_lib_smart_ptr_for_overwrite             202002L
#define __cpp_lib_source_location                     201907L
#define __cpp_lib_span                                202002L
#define __cpp_lib_spanstream                          202106L
#define __cpp_lib_ssize                               201902L
#define __cpp_lib_stacktrace                          202011L
#define __cpp_lib_start_lifetime_as                   202207L
#define __cpp_lib_starts_ends_with                    201711L
#define __cpp_lib_stdatomic_h                         202011L
#define __cpp_lib_string_contains                     202011L
#define __cpp_lib_string_resize_and_overwrite         202110L
#define __cpp_lib_string_udls                         201304L
#define __cpp_lib_string_view                         201803L
#define __cpp_lib_syncbuf                             201803L
#define __cpp_lib_three_way_comparison                201907L
#define __cpp_lib_to_address                          201711L
#define __cpp_lib_to_array                            201907L
#define __cpp_lib_to_chars                            201611L
#define __cpp_lib_to_underlying                       202102L
#define __cpp_lib_transformation_trait_aliases        201304L
#define __cpp_lib_transparent_operators               201510L
#define __cpp_lib_tuple_element_t                     201402L
#define __cpp_lib_tuple_like                          202207L
#define __cpp_lib_tuples_by_type                      201304L
#define __cpp_lib_type_identity                       201806L
#define __cpp_lib_type_trait_variable_templates       201510L
#define __cpp_lib_uncaught_exceptions                 201411L
#define __cpp_lib_unordered_map_try_emplace           201411L
#define __cpp_lib_unreachable                         202202L
#define __cpp_lib_unwrap_ref                          201811L
#define __cpp_lib_variant                             202106L
#define __cpp_lib_void_t                              201411L

#endif // ECS_CPP_VERSION_HEADER_INCLUDED
