Index: libcxx/docs/FeatureTestMacroTable.rst =================================================================== --- libcxx/docs/FeatureTestMacroTable.rst +++ libcxx/docs/FeatureTestMacroTable.rst @@ -196,6 +196,8 @@ ------------------------------------------------- ----------------- ``__cpp_lib_list_remove_return_type`` ``201806L`` ------------------------------------------------- ----------------- + ``__cpp_lib_math_constants`` ``201907L`` + ------------------------------------------------- ----------------- ``__cpp_lib_ranges`` *unimplemented* ------------------------------------------------- ----------------- ``__cpp_lib_three_way_comparison`` *unimplemented* Index: libcxx/include/CMakeLists.txt =================================================================== --- libcxx/include/CMakeLists.txt +++ libcxx/include/CMakeLists.txt @@ -118,6 +118,7 @@ mutex new numeric + numbers optional ostream queue Index: libcxx/include/module.modulemap =================================================================== --- libcxx/include/module.modulemap +++ libcxx/include/module.modulemap @@ -382,6 +382,10 @@ header "numeric" export * } + module numbers { + header "numbers" + export * + } module optional { header "optional" export * Index: libcxx/include/numbers =================================================================== --- /dev/null +++ libcxx/include/numbers @@ -0,0 +1,217 @@ +// -*- C++ -*- +//===---------------------------- numbers ---------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_NUMBERS +#define _LIBCPP_NUMBERS + +/* + numbers synopsis + +namespace std::numbers +{ + template inline constexpr T e_v = unspecified; + template inline constexpr T log2e_v = unspecified; + template inline constexpr T log10e_v = unspecified; + template inline constexpr T pi_v = unspecified; + template inline constexpr T inv_pi_v = unspecified; + template inline constexpr T inv_sqrtpi_v = unspecified; + template inline constexpr T ln2_v = unspecified; + template inline constexpr T ln10_v = unspecified; + template inline constexpr T sqrt2_v = unspecified; + template inline constexpr T sqrt3_v = unspecified; + template inline constexpr T inv_sqrt3_v = unspecified; + template inline constexpr T egamma_v = unspecified; + template inline constexpr T phi_v = unspecified; + + template inline constexpr T e_v = see below; + template inline constexpr T log2e_v = see below; + template inline constexpr T log10e_v = see below; + template inline constexpr T pi_v = see below; + template inline constexpr T inv_pi_v = see below; + template inline constexpr T inv_sqrtpi_v = see below; + template inline constexpr T ln2_v = see below; + template inline constexpr T ln10_v = see below; + template inline constexpr T sqrt2_v = see below; + template inline constexpr T sqrt3_v = see below; + template inline constexpr T inv_sqrt3_v = see below; + template inline constexpr T egamma_v = see below; + template inline constexpr T phi_v = see below; + + inline constexpr double e = e_v; + inline constexpr double log2e = log2e_v; + inline constexpr double log10e = log10e_v; + inline constexpr double pi = pi_v; + inline constexpr double inv_pi = inv_pi_v; + inline constexpr double inv_sqrtpi = inv_sqrtpi_v; + inline constexpr double ln2 = ln2_v; + inline constexpr double ln10 = ln10_v; + inline constexpr double sqrt2 = sqrt2_v; + inline constexpr double sqrt3 = sqrt3_v; + inline constexpr double inv_sqrt3 = inv_sqrt3_v; + inline constexpr double egamma = egamma_v; + inline constexpr double phi = phi_v; +} // std::numbers + +*/ + +#include <__config> +#include + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +#pragma GCC system_header +#endif + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + +_LIBCPP_BEGIN_NAMESPACE_STD + +#if _LIBCPP_STD_VER > 17 + +namespace numbers { + +template +inline constexpr bool __false_value = false; + +template +constexpr T _AlwaysFalse() { + static_assert(__false_value, " header requires floating point types"); + return T(); +} + +template +inline constexpr T e_v = _AlwaysFalse(); + +template +inline constexpr T log2e_v = _AlwaysFalse(); + +template +inline constexpr T log10e_v = _AlwaysFalse(); + +template +inline constexpr T pi_v = _AlwaysFalse(); + +template +inline constexpr T inv_pi_v = _AlwaysFalse(); + +template +inline constexpr T inv_sqrtpi_v = _AlwaysFalse(); + +template +inline constexpr T ln2_v = _AlwaysFalse(); + +template +inline constexpr T ln10_v = _AlwaysFalse(); + +template +inline constexpr T sqrt2_v = _AlwaysFalse(); + +template +inline constexpr T sqrt3_v = _AlwaysFalse(); + +template +inline constexpr T inv_sqrt3_v = _AlwaysFalse(); + +template +inline constexpr T egamma_v = _AlwaysFalse(); + +template +inline constexpr T phi_v = _AlwaysFalse(); + +template +concept floating_point = is_floating_point_v; + +// e +template +inline constexpr +T e_v = T(2.718281828459045235360287471352662498L); + +// log2(e) +template +inline constexpr +T log2e_v = T(1.442695040888963407359924681001892137L); + +// log10(e) +template +inline constexpr +T log10e_v = T(0.434294481903251827651128918916605082L); + +// pi +template +inline constexpr +T pi_v = T(3.141592653589793238462643383279502884L); + +// 1/pi +template +inline constexpr +T inv_pi_v = T(0.318309886183790671537767526745028724L); + +// 1/sqrt(pi) +template +inline constexpr +T inv_sqrtpi_v = T(0.564189583547756286948079451560772586L); + +// log_e(2) +template +inline constexpr +T ln2_v = T(0.693147180559945309417232121458176568L); + +// log_e(10) +template +inline constexpr +T ln10_v = T(2.302585092994045684017991454684364208L); + +// sqrt(2) +template +inline constexpr +T sqrt2_v = T(1.414213562373095048801688724209698078L); + +// sqrt(3) +template +inline constexpr +T sqrt3_v = T(1.732050807568877293527446341505872366L); + +// 1/sqrt(3) +template +inline constexpr +T inv_sqrt3_v = T(0.577350269189625764509148780501957456L); + +// Euler-Mascheroni gama constant +template +inline constexpr +T egamma_v = T(0.577215664901532860606512090082402402431L); + +// Golden ratio phi constant +template +inline constexpr +T phi_v = T(1.618033988749894848204586834365638117L); + + +inline constexpr double e = e_v; +inline constexpr double log2e = log2e_v; +inline constexpr double log10e = log10e_v; +inline constexpr double pi = pi_v; +inline constexpr double inv_pi = inv_pi_v; +inline constexpr double inv_sqrtpi = inv_sqrtpi_v; +inline constexpr double ln2 = ln2_v; +inline constexpr double ln10 = ln10_v; +inline constexpr double sqrt2 = sqrt2_v; +inline constexpr double sqrt3 = sqrt3_v; +inline constexpr double inv_sqrt3 = inv_sqrt3_v; +inline constexpr double egamma = egamma_v; +inline constexpr double phi = phi_v; +} //namespace numbers + +#endif //_LIBCPP_STD_VER > 17 + +_LIBCPP_END_NAMESPACE_STD + +_LIBCPP_POP_MACROS + +#endif //_LIBCPP_NUMBERS Index: libcxx/include/version =================================================================== --- libcxx/include/version +++ libcxx/include/version @@ -74,6 +74,7 @@ __cpp_lib_make_reverse_iterator 201402L __cpp_lib_make_unique 201304L __cpp_lib_map_try_emplace 201411L +__cpp_lib_math_constants 201907L __cpp_lib_math_special_functions 201603L __cpp_lib_memory_resource 201603L __cpp_lib_node_extract 201606L @@ -233,9 +234,10 @@ # define __cpp_lib_is_constant_evaluated 201811L # endif # define __cpp_lib_list_remove_return_type 201806L +# define __cpp_lib_math_constants 201907L // # define __cpp_lib_ranges 201811L -# define __cpp_lib_to_array 201907L // # define __cpp_lib_three_way_comparison 201711L +# define __cpp_lib_to_array 201907L #endif #endif // _LIBCPP_VERSIONH Index: libcxx/test/libcxx/double_include.sh.cpp =================================================================== --- libcxx/test/libcxx/double_include.sh.cpp +++ libcxx/test/libcxx/double_include.sh.cpp @@ -99,6 +99,7 @@ #endif #include #include +#include #include #include #include Index: libcxx/test/std/language.support/support.limits/support.limits.general/numbers.version.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/language.support/support.limits/support.limits.general/numbers.version.pass.cpp @@ -0,0 +1,52 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// WARNING: This test was generated by generate_feature_test_macro_components.py +// and should not be edited manually. + +// + +// Test the feature test macros defined by + +/* Constant Value + __cpp_lib_math_constants 201907L [C++2a] +*/ + +#include +#include "test_macros.h" + +#if TEST_STD_VER < 14 + +#ifdef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should not be defined before c++2a" +#endif + +#elif TEST_STD_VER == 14 + +#ifdef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should not be defined before c++2a" +#endif + +#elif TEST_STD_VER == 17 + +#ifdef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should not be defined before c++2a" +#endif + +#elif TEST_STD_VER > 17 + +#ifndef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should be defined in c++2a" +#endif +#if __cpp_lib_math_constants != 201907L +#error "__cpp_lib_math_constants should have the value 201907L in c++2a" +#endif + +#endif // TEST_STD_VER > 17 + +int main(int, char**) { return 0; } Index: libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp =================================================================== --- libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp +++ libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp @@ -66,6 +66,7 @@ __cpp_lib_make_reverse_iterator 201402L [C++14] __cpp_lib_make_unique 201304L [C++14] __cpp_lib_map_try_emplace 201411L [C++17] + __cpp_lib_math_constants 201907L [C++2a] __cpp_lib_math_special_functions 201603L [C++17] __cpp_lib_memory_resource 201603L [C++17] __cpp_lib_node_extract 201606L [C++17] @@ -107,2124 +108,2228 @@ #if TEST_STD_VER < 14 -# ifdef __cpp_lib_addressof_constexpr -# error "__cpp_lib_addressof_constexpr should not be defined before c++17" -# endif +#ifdef __cpp_lib_addressof_constexpr +#error "__cpp_lib_addressof_constexpr should not be defined before c++17" +#endif -# ifdef __cpp_lib_allocator_traits_is_always_equal -# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17" -# endif +#ifdef __cpp_lib_allocator_traits_is_always_equal +#error \ + "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17" +#endif -# ifdef __cpp_lib_any -# error "__cpp_lib_any should not be defined before c++17" -# endif +#ifdef __cpp_lib_any +#error "__cpp_lib_any should not be defined before c++17" +#endif -# ifdef __cpp_lib_apply -# error "__cpp_lib_apply should not be defined before c++17" -# endif +#ifdef __cpp_lib_apply +#error "__cpp_lib_apply should not be defined before c++17" +#endif -# ifdef __cpp_lib_array_constexpr -# error "__cpp_lib_array_constexpr should not be defined before c++17" -# endif +#ifdef __cpp_lib_array_constexpr +#error "__cpp_lib_array_constexpr should not be defined before c++17" +#endif -# ifdef __cpp_lib_as_const -# error "__cpp_lib_as_const should not be defined before c++17" -# endif +#ifdef __cpp_lib_as_const +#error "__cpp_lib_as_const should not be defined before c++17" +#endif -# ifdef __cpp_lib_atomic_is_always_lock_free -# error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17" -# endif +#ifdef __cpp_lib_atomic_is_always_lock_free +#error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17" +#endif -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined before c++2a" -# endif +#ifdef __cpp_lib_atomic_ref +#error "__cpp_lib_atomic_ref should not be defined before c++2a" +#endif -# ifdef __cpp_lib_bind_front -# error "__cpp_lib_bind_front should not be defined before c++2a" -# endif +#ifdef __cpp_lib_bind_front +#error "__cpp_lib_bind_front should not be defined before c++2a" +#endif -# ifdef __cpp_lib_bit_cast -# error "__cpp_lib_bit_cast should not be defined before c++2a" -# endif +#ifdef __cpp_lib_bit_cast +#error "__cpp_lib_bit_cast should not be defined before c++2a" +#endif -# ifdef __cpp_lib_bool_constant -# error "__cpp_lib_bool_constant should not be defined before c++17" -# endif +#ifdef __cpp_lib_bool_constant +#error "__cpp_lib_bool_constant should not be defined before c++17" +#endif -# ifdef __cpp_lib_boyer_moore_searcher -# error "__cpp_lib_boyer_moore_searcher should not be defined before c++17" -# endif +#ifdef __cpp_lib_boyer_moore_searcher +#error "__cpp_lib_boyer_moore_searcher should not be defined before c++17" +#endif -# ifdef __cpp_lib_byte -# error "__cpp_lib_byte should not be defined before c++17" -# endif +#ifdef __cpp_lib_byte +#error "__cpp_lib_byte should not be defined before c++17" +#endif -# ifdef __cpp_lib_char8_t -# error "__cpp_lib_char8_t should not be defined before c++2a" -# endif +#ifdef __cpp_lib_char8_t +#error "__cpp_lib_char8_t should not be defined before c++2a" +#endif -# ifdef __cpp_lib_chrono -# error "__cpp_lib_chrono should not be defined before c++17" -# endif +#ifdef __cpp_lib_chrono +#error "__cpp_lib_chrono should not be defined before c++17" +#endif -# ifdef __cpp_lib_chrono_udls -# error "__cpp_lib_chrono_udls should not be defined before c++14" -# endif +#ifdef __cpp_lib_chrono_udls +#error "__cpp_lib_chrono_udls should not be defined before c++14" +#endif -# ifdef __cpp_lib_clamp -# error "__cpp_lib_clamp should not be defined before c++17" -# endif +#ifdef __cpp_lib_clamp +#error "__cpp_lib_clamp should not be defined before c++17" +#endif -# ifdef __cpp_lib_complex_udls -# error "__cpp_lib_complex_udls should not be defined before c++14" -# endif +#ifdef __cpp_lib_complex_udls +#error "__cpp_lib_complex_udls should not be defined before c++14" +#endif -# ifdef __cpp_lib_concepts -# error "__cpp_lib_concepts should not be defined before c++2a" -# endif +#ifdef __cpp_lib_concepts +#error "__cpp_lib_concepts should not be defined before c++2a" +#endif -# ifdef __cpp_lib_constexpr_misc -# error "__cpp_lib_constexpr_misc should not be defined before c++2a" -# endif +#ifdef __cpp_lib_constexpr_misc +#error "__cpp_lib_constexpr_misc should not be defined before c++2a" +#endif -# ifdef __cpp_lib_constexpr_swap_algorithms -# error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a" -# endif +#ifdef __cpp_lib_constexpr_swap_algorithms +#error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a" +#endif -# ifdef __cpp_lib_destroying_delete -# error "__cpp_lib_destroying_delete should not be defined before c++2a" -# endif +#ifdef __cpp_lib_destroying_delete +#error "__cpp_lib_destroying_delete should not be defined before c++2a" +#endif -# ifdef __cpp_lib_enable_shared_from_this -# error "__cpp_lib_enable_shared_from_this should not be defined before c++17" -# endif +#ifdef __cpp_lib_enable_shared_from_this +#error "__cpp_lib_enable_shared_from_this should not be defined before c++17" +#endif -# ifdef __cpp_lib_endian -# error "__cpp_lib_endian should not be defined before c++2a" -# endif +#ifdef __cpp_lib_endian +#error "__cpp_lib_endian should not be defined before c++2a" +#endif -# ifdef __cpp_lib_erase_if -# error "__cpp_lib_erase_if should not be defined before c++2a" -# endif +#ifdef __cpp_lib_erase_if +#error "__cpp_lib_erase_if should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_exchange_function +#error "__cpp_lib_exchange_function should not be defined before c++14" +#endif + +#ifdef __cpp_lib_execution +#error "__cpp_lib_execution should not be defined before c++17" +#endif -# ifdef __cpp_lib_exchange_function -# error "__cpp_lib_exchange_function should not be defined before c++14" -# endif +#ifdef __cpp_lib_filesystem +#error "__cpp_lib_filesystem should not be defined before c++17" +#endif -# ifdef __cpp_lib_execution -# error "__cpp_lib_execution should not be defined before c++17" -# endif +#ifdef __cpp_lib_gcd_lcm +#error "__cpp_lib_gcd_lcm should not be defined before c++17" +#endif -# ifdef __cpp_lib_filesystem -# error "__cpp_lib_filesystem should not be defined before c++17" -# endif +#ifdef __cpp_lib_generic_associative_lookup +#error "__cpp_lib_generic_associative_lookup should not be defined before c++14" +#endif -# ifdef __cpp_lib_gcd_lcm -# error "__cpp_lib_gcd_lcm should not be defined before c++17" -# endif +#ifdef __cpp_lib_generic_unordered_lookup +#error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a" +#endif -# ifdef __cpp_lib_generic_associative_lookup -# error "__cpp_lib_generic_associative_lookup should not be defined before c++14" -# endif +#ifdef __cpp_lib_hardware_interference_size +#error "__cpp_lib_hardware_interference_size should not be defined before c++17" +#endif -# ifdef __cpp_lib_generic_unordered_lookup -# error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a" -# endif +#ifdef __cpp_lib_has_unique_object_representations +#error \ + "__cpp_lib_has_unique_object_representations should not be defined before c++17" +#endif + +#ifdef __cpp_lib_hypot +#error "__cpp_lib_hypot should not be defined before c++17" +#endif + +#ifdef __cpp_lib_incomplete_container_elements +#error \ + "__cpp_lib_incomplete_container_elements should not be defined before c++17" +#endif -# ifdef __cpp_lib_hardware_interference_size -# error "__cpp_lib_hardware_interference_size should not be defined before c++17" -# endif +#ifdef __cpp_lib_integer_sequence +#error "__cpp_lib_integer_sequence should not be defined before c++14" +#endif -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined before c++17" -# endif +#ifdef __cpp_lib_integral_constant_callable +#error "__cpp_lib_integral_constant_callable should not be defined before c++14" +#endif -# ifdef __cpp_lib_hypot -# error "__cpp_lib_hypot should not be defined before c++17" -# endif +#ifdef __cpp_lib_interpolate +#error "__cpp_lib_interpolate should not be defined before c++2a" +#endif -# ifdef __cpp_lib_incomplete_container_elements -# error "__cpp_lib_incomplete_container_elements should not be defined before c++17" -# endif +#ifdef __cpp_lib_invoke +#error "__cpp_lib_invoke should not be defined before c++17" +#endif -# ifdef __cpp_lib_integer_sequence -# error "__cpp_lib_integer_sequence should not be defined before c++14" -# endif +#ifdef __cpp_lib_is_aggregate +#error "__cpp_lib_is_aggregate should not be defined before c++17" +#endif -# ifdef __cpp_lib_integral_constant_callable -# error "__cpp_lib_integral_constant_callable should not be defined before c++14" -# endif +#ifdef __cpp_lib_is_constant_evaluated +#error "__cpp_lib_is_constant_evaluated should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_is_final +#error "__cpp_lib_is_final should not be defined before c++14" +#endif + +#ifdef __cpp_lib_is_invocable +#error "__cpp_lib_is_invocable should not be defined before c++17" +#endif + +#ifdef __cpp_lib_is_null_pointer +#error "__cpp_lib_is_null_pointer should not be defined before c++14" +#endif + +#ifdef __cpp_lib_is_swappable +#error "__cpp_lib_is_swappable should not be defined before c++17" +#endif + +#ifdef __cpp_lib_launder +#error "__cpp_lib_launder should not be defined before c++17" +#endif + +#ifdef __cpp_lib_list_remove_return_type +#error "__cpp_lib_list_remove_return_type should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_logical_traits +#error "__cpp_lib_logical_traits should not be defined before c++17" +#endif + +#ifdef __cpp_lib_make_from_tuple +#error "__cpp_lib_make_from_tuple should not be defined before c++17" +#endif + +#ifdef __cpp_lib_make_reverse_iterator +#error "__cpp_lib_make_reverse_iterator should not be defined before c++14" +#endif + +#ifdef __cpp_lib_make_unique +#error "__cpp_lib_make_unique should not be defined before c++14" +#endif + +#ifdef __cpp_lib_map_try_emplace +#error "__cpp_lib_map_try_emplace should not be defined before c++17" +#endif + +#ifdef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_math_special_functions +#error "__cpp_lib_math_special_functions should not be defined before c++17" +#endif + +#ifdef __cpp_lib_memory_resource +#error "__cpp_lib_memory_resource should not be defined before c++17" +#endif + +#ifdef __cpp_lib_node_extract +#error "__cpp_lib_node_extract should not be defined before c++17" +#endif + +#ifdef __cpp_lib_nonmember_container_access +#error "__cpp_lib_nonmember_container_access should not be defined before c++17" +#endif + +#ifdef __cpp_lib_not_fn +#error "__cpp_lib_not_fn should not be defined before c++17" +#endif + +#ifdef __cpp_lib_null_iterators +#error "__cpp_lib_null_iterators should not be defined before c++14" +#endif + +#ifdef __cpp_lib_optional +#error "__cpp_lib_optional should not be defined before c++17" +#endif -# ifdef __cpp_lib_interpolate -# error "__cpp_lib_interpolate should not be defined before c++2a" -# endif +#ifdef __cpp_lib_parallel_algorithm +#error "__cpp_lib_parallel_algorithm should not be defined before c++17" +#endif -# ifdef __cpp_lib_invoke -# error "__cpp_lib_invoke should not be defined before c++17" -# endif +#ifdef __cpp_lib_quoted_string_io +#error "__cpp_lib_quoted_string_io should not be defined before c++14" +#endif -# ifdef __cpp_lib_is_aggregate -# error "__cpp_lib_is_aggregate should not be defined before c++17" -# endif +#ifdef __cpp_lib_ranges +#error "__cpp_lib_ranges should not be defined before c++2a" +#endif -# ifdef __cpp_lib_is_constant_evaluated -# error "__cpp_lib_is_constant_evaluated should not be defined before c++2a" -# endif +#ifdef __cpp_lib_raw_memory_algorithms +#error "__cpp_lib_raw_memory_algorithms should not be defined before c++17" +#endif -# ifdef __cpp_lib_is_final -# error "__cpp_lib_is_final should not be defined before c++14" -# endif +#ifdef __cpp_lib_result_of_sfinae +#error "__cpp_lib_result_of_sfinae should not be defined before c++14" +#endif -# ifdef __cpp_lib_is_invocable -# error "__cpp_lib_is_invocable should not be defined before c++17" -# endif +#ifdef __cpp_lib_robust_nonmodifying_seq_ops +#error \ + "__cpp_lib_robust_nonmodifying_seq_ops should not be defined before c++14" +#endif -# ifdef __cpp_lib_is_null_pointer -# error "__cpp_lib_is_null_pointer should not be defined before c++14" -# endif +#ifdef __cpp_lib_sample +#error "__cpp_lib_sample should not be defined before c++17" +#endif -# ifdef __cpp_lib_is_swappable -# error "__cpp_lib_is_swappable should not be defined before c++17" -# endif +#ifdef __cpp_lib_scoped_lock +#error "__cpp_lib_scoped_lock should not be defined before c++17" +#endif -# ifdef __cpp_lib_launder -# error "__cpp_lib_launder should not be defined before c++17" -# endif +#ifdef __cpp_lib_shared_mutex +#error "__cpp_lib_shared_mutex should not be defined before c++17" +#endif -# ifdef __cpp_lib_list_remove_return_type -# error "__cpp_lib_list_remove_return_type should not be defined before c++2a" -# endif +#ifdef __cpp_lib_shared_ptr_arrays +#error "__cpp_lib_shared_ptr_arrays should not be defined before c++17" +#endif -# ifdef __cpp_lib_logical_traits -# error "__cpp_lib_logical_traits should not be defined before c++17" -# endif +#ifdef __cpp_lib_shared_ptr_weak_type +#error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17" +#endif -# ifdef __cpp_lib_make_from_tuple -# error "__cpp_lib_make_from_tuple should not be defined before c++17" -# endif +#ifdef __cpp_lib_shared_timed_mutex +#error "__cpp_lib_shared_timed_mutex should not be defined before c++14" +#endif -# ifdef __cpp_lib_make_reverse_iterator -# error "__cpp_lib_make_reverse_iterator should not be defined before c++14" -# endif +#ifdef __cpp_lib_string_udls +#error "__cpp_lib_string_udls should not be defined before c++14" +#endif -# ifdef __cpp_lib_make_unique -# error "__cpp_lib_make_unique should not be defined before c++14" -# endif +#ifdef __cpp_lib_string_view +#error "__cpp_lib_string_view should not be defined before c++17" +#endif -# ifdef __cpp_lib_map_try_emplace -# error "__cpp_lib_map_try_emplace should not be defined before c++17" -# endif +#ifdef __cpp_lib_three_way_comparison +#error "__cpp_lib_three_way_comparison should not be defined before c++2a" +#endif -# ifdef __cpp_lib_math_special_functions -# error "__cpp_lib_math_special_functions should not be defined before c++17" -# endif +#ifdef __cpp_lib_to_array +#error "__cpp_lib_to_array should not be defined before c++2a" +#endif -# ifdef __cpp_lib_memory_resource -# error "__cpp_lib_memory_resource should not be defined before c++17" -# endif +#ifdef __cpp_lib_to_chars +#error "__cpp_lib_to_chars should not be defined before c++17" +#endif -# ifdef __cpp_lib_node_extract -# error "__cpp_lib_node_extract should not be defined before c++17" -# endif +#ifdef __cpp_lib_transformation_trait_aliases +#error \ + "__cpp_lib_transformation_trait_aliases should not be defined before c++14" +#endif -# ifdef __cpp_lib_nonmember_container_access -# error "__cpp_lib_nonmember_container_access should not be defined before c++17" -# endif +#ifdef __cpp_lib_transparent_operators +#error "__cpp_lib_transparent_operators should not be defined before c++14" +#endif -# ifdef __cpp_lib_not_fn -# error "__cpp_lib_not_fn should not be defined before c++17" -# endif +#ifdef __cpp_lib_tuple_element_t +#error "__cpp_lib_tuple_element_t should not be defined before c++14" +#endif -# ifdef __cpp_lib_null_iterators -# error "__cpp_lib_null_iterators should not be defined before c++14" -# endif +#ifdef __cpp_lib_tuples_by_type +#error "__cpp_lib_tuples_by_type should not be defined before c++14" +#endif -# ifdef __cpp_lib_optional -# error "__cpp_lib_optional should not be defined before c++17" -# endif +#ifdef __cpp_lib_type_trait_variable_templates +#error \ + "__cpp_lib_type_trait_variable_templates should not be defined before c++17" +#endif -# ifdef __cpp_lib_parallel_algorithm -# error "__cpp_lib_parallel_algorithm should not be defined before c++17" -# endif +#ifdef __cpp_lib_uncaught_exceptions +#error "__cpp_lib_uncaught_exceptions should not be defined before c++17" +#endif -# ifdef __cpp_lib_quoted_string_io -# error "__cpp_lib_quoted_string_io should not be defined before c++14" -# endif +#ifdef __cpp_lib_unordered_map_try_emplace +#error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17" +#endif -# ifdef __cpp_lib_ranges -# error "__cpp_lib_ranges should not be defined before c++2a" -# endif +#ifdef __cpp_lib_variant +#error "__cpp_lib_variant should not be defined before c++17" +#endif -# ifdef __cpp_lib_raw_memory_algorithms -# error "__cpp_lib_raw_memory_algorithms should not be defined before c++17" -# endif - -# ifdef __cpp_lib_result_of_sfinae -# error "__cpp_lib_result_of_sfinae should not be defined before c++14" -# endif - -# ifdef __cpp_lib_robust_nonmodifying_seq_ops -# error "__cpp_lib_robust_nonmodifying_seq_ops should not be defined before c++14" -# endif - -# ifdef __cpp_lib_sample -# error "__cpp_lib_sample should not be defined before c++17" -# endif - -# ifdef __cpp_lib_scoped_lock -# error "__cpp_lib_scoped_lock should not be defined before c++17" -# endif - -# ifdef __cpp_lib_shared_mutex -# error "__cpp_lib_shared_mutex should not be defined before c++17" -# endif - -# ifdef __cpp_lib_shared_ptr_arrays -# error "__cpp_lib_shared_ptr_arrays should not be defined before c++17" -# endif - -# ifdef __cpp_lib_shared_ptr_weak_type -# error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17" -# endif - -# ifdef __cpp_lib_shared_timed_mutex -# error "__cpp_lib_shared_timed_mutex should not be defined before c++14" -# endif - -# ifdef __cpp_lib_string_udls -# error "__cpp_lib_string_udls should not be defined before c++14" -# endif - -# ifdef __cpp_lib_string_view -# error "__cpp_lib_string_view should not be defined before c++17" -# endif - -# ifdef __cpp_lib_three_way_comparison -# error "__cpp_lib_three_way_comparison should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_to_array -# error "__cpp_lib_to_array should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_to_chars -# error "__cpp_lib_to_chars should not be defined before c++17" -# endif - -# ifdef __cpp_lib_transformation_trait_aliases -# error "__cpp_lib_transformation_trait_aliases should not be defined before c++14" -# endif - -# ifdef __cpp_lib_transparent_operators -# error "__cpp_lib_transparent_operators should not be defined before c++14" -# endif - -# ifdef __cpp_lib_tuple_element_t -# error "__cpp_lib_tuple_element_t should not be defined before c++14" -# endif - -# ifdef __cpp_lib_tuples_by_type -# error "__cpp_lib_tuples_by_type should not be defined before c++14" -# endif - -# ifdef __cpp_lib_type_trait_variable_templates -# error "__cpp_lib_type_trait_variable_templates should not be defined before c++17" -# endif - -# ifdef __cpp_lib_uncaught_exceptions -# error "__cpp_lib_uncaught_exceptions should not be defined before c++17" -# endif - -# ifdef __cpp_lib_unordered_map_try_emplace -# error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17" -# endif - -# ifdef __cpp_lib_variant -# error "__cpp_lib_variant should not be defined before c++17" -# endif - -# ifdef __cpp_lib_void_t -# error "__cpp_lib_void_t should not be defined before c++17" -# endif +#ifdef __cpp_lib_void_t +#error "__cpp_lib_void_t should not be defined before c++17" +#endif #elif TEST_STD_VER == 14 -# ifdef __cpp_lib_addressof_constexpr -# error "__cpp_lib_addressof_constexpr should not be defined before c++17" -# endif - -# ifdef __cpp_lib_allocator_traits_is_always_equal -# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17" -# endif - -# ifdef __cpp_lib_any -# error "__cpp_lib_any should not be defined before c++17" -# endif - -# ifdef __cpp_lib_apply -# error "__cpp_lib_apply should not be defined before c++17" -# endif - -# ifdef __cpp_lib_array_constexpr -# error "__cpp_lib_array_constexpr should not be defined before c++17" -# endif - -# ifdef __cpp_lib_as_const -# error "__cpp_lib_as_const should not be defined before c++17" -# endif - -# ifdef __cpp_lib_atomic_is_always_lock_free -# error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17" -# endif - -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_bind_front -# error "__cpp_lib_bind_front should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_bit_cast -# error "__cpp_lib_bit_cast should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_bool_constant -# error "__cpp_lib_bool_constant should not be defined before c++17" -# endif - -# ifdef __cpp_lib_boyer_moore_searcher -# error "__cpp_lib_boyer_moore_searcher should not be defined before c++17" -# endif - -# ifdef __cpp_lib_byte -# error "__cpp_lib_byte should not be defined before c++17" -# endif - -# ifdef __cpp_lib_char8_t -# error "__cpp_lib_char8_t should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_chrono -# error "__cpp_lib_chrono should not be defined before c++17" -# endif - -# ifndef __cpp_lib_chrono_udls -# error "__cpp_lib_chrono_udls should be defined in c++14" -# endif -# if __cpp_lib_chrono_udls != 201304L -# error "__cpp_lib_chrono_udls should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_clamp -# error "__cpp_lib_clamp should not be defined before c++17" -# endif - -# ifndef __cpp_lib_complex_udls -# error "__cpp_lib_complex_udls should be defined in c++14" -# endif -# if __cpp_lib_complex_udls != 201309L -# error "__cpp_lib_complex_udls should have the value 201309L in c++14" -# endif - -# ifdef __cpp_lib_concepts -# error "__cpp_lib_concepts should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_constexpr_misc -# error "__cpp_lib_constexpr_misc should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_constexpr_swap_algorithms -# error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_destroying_delete -# error "__cpp_lib_destroying_delete should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_enable_shared_from_this -# error "__cpp_lib_enable_shared_from_this should not be defined before c++17" -# endif - -# ifdef __cpp_lib_endian -# error "__cpp_lib_endian should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_erase_if -# error "__cpp_lib_erase_if should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_exchange_function -# error "__cpp_lib_exchange_function should be defined in c++14" -# endif -# if __cpp_lib_exchange_function != 201304L -# error "__cpp_lib_exchange_function should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_execution -# error "__cpp_lib_execution should not be defined before c++17" -# endif - -# ifdef __cpp_lib_filesystem -# error "__cpp_lib_filesystem should not be defined before c++17" -# endif - -# ifdef __cpp_lib_gcd_lcm -# error "__cpp_lib_gcd_lcm should not be defined before c++17" -# endif - -# ifndef __cpp_lib_generic_associative_lookup -# error "__cpp_lib_generic_associative_lookup should be defined in c++14" -# endif -# if __cpp_lib_generic_associative_lookup != 201304L -# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_generic_unordered_lookup -# error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_hardware_interference_size -# error "__cpp_lib_hardware_interference_size should not be defined before c++17" -# endif - -# ifdef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should not be defined before c++17" -# endif - -# ifdef __cpp_lib_hypot -# error "__cpp_lib_hypot should not be defined before c++17" -# endif - -# ifdef __cpp_lib_incomplete_container_elements -# error "__cpp_lib_incomplete_container_elements should not be defined before c++17" -# endif - -# ifndef __cpp_lib_integer_sequence -# error "__cpp_lib_integer_sequence should be defined in c++14" -# endif -# if __cpp_lib_integer_sequence != 201304L -# error "__cpp_lib_integer_sequence should have the value 201304L in c++14" -# endif - -# ifndef __cpp_lib_integral_constant_callable -# error "__cpp_lib_integral_constant_callable should be defined in c++14" -# endif -# if __cpp_lib_integral_constant_callable != 201304L -# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_interpolate -# error "__cpp_lib_interpolate should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_invoke -# error "__cpp_lib_invoke should not be defined before c++17" -# endif - -# ifdef __cpp_lib_is_aggregate -# error "__cpp_lib_is_aggregate should not be defined before c++17" -# endif - -# ifdef __cpp_lib_is_constant_evaluated -# error "__cpp_lib_is_constant_evaluated should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_is_final -# error "__cpp_lib_is_final should be defined in c++14" -# endif -# if __cpp_lib_is_final != 201402L -# error "__cpp_lib_is_final should have the value 201402L in c++14" -# endif - -# ifdef __cpp_lib_is_invocable -# error "__cpp_lib_is_invocable should not be defined before c++17" -# endif - -# ifndef __cpp_lib_is_null_pointer -# error "__cpp_lib_is_null_pointer should be defined in c++14" -# endif -# if __cpp_lib_is_null_pointer != 201309L -# error "__cpp_lib_is_null_pointer should have the value 201309L in c++14" -# endif - -# ifdef __cpp_lib_is_swappable -# error "__cpp_lib_is_swappable should not be defined before c++17" -# endif - -# ifdef __cpp_lib_launder -# error "__cpp_lib_launder should not be defined before c++17" -# endif - -# ifdef __cpp_lib_list_remove_return_type -# error "__cpp_lib_list_remove_return_type should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_logical_traits -# error "__cpp_lib_logical_traits should not be defined before c++17" -# endif - -# ifdef __cpp_lib_make_from_tuple -# error "__cpp_lib_make_from_tuple should not be defined before c++17" -# endif - -# ifndef __cpp_lib_make_reverse_iterator -# error "__cpp_lib_make_reverse_iterator should be defined in c++14" -# endif -# if __cpp_lib_make_reverse_iterator != 201402L -# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++14" -# endif - -# ifndef __cpp_lib_make_unique -# error "__cpp_lib_make_unique should be defined in c++14" -# endif -# if __cpp_lib_make_unique != 201304L -# error "__cpp_lib_make_unique should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_map_try_emplace -# error "__cpp_lib_map_try_emplace should not be defined before c++17" -# endif - -# ifdef __cpp_lib_math_special_functions -# error "__cpp_lib_math_special_functions should not be defined before c++17" -# endif - -# ifdef __cpp_lib_memory_resource -# error "__cpp_lib_memory_resource should not be defined before c++17" -# endif - -# ifdef __cpp_lib_node_extract -# error "__cpp_lib_node_extract should not be defined before c++17" -# endif - -# ifdef __cpp_lib_nonmember_container_access -# error "__cpp_lib_nonmember_container_access should not be defined before c++17" -# endif - -# ifdef __cpp_lib_not_fn -# error "__cpp_lib_not_fn should not be defined before c++17" -# endif - -# ifndef __cpp_lib_null_iterators -# error "__cpp_lib_null_iterators should be defined in c++14" -# endif -# if __cpp_lib_null_iterators != 201304L -# error "__cpp_lib_null_iterators should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_optional -# error "__cpp_lib_optional should not be defined before c++17" -# endif - -# ifdef __cpp_lib_parallel_algorithm -# error "__cpp_lib_parallel_algorithm should not be defined before c++17" -# endif - -# ifndef __cpp_lib_quoted_string_io -# error "__cpp_lib_quoted_string_io should be defined in c++14" -# endif -# if __cpp_lib_quoted_string_io != 201304L -# error "__cpp_lib_quoted_string_io should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_ranges -# error "__cpp_lib_ranges should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_raw_memory_algorithms -# error "__cpp_lib_raw_memory_algorithms should not be defined before c++17" -# endif - -# ifndef __cpp_lib_result_of_sfinae -# error "__cpp_lib_result_of_sfinae should be defined in c++14" -# endif -# if __cpp_lib_result_of_sfinae != 201210L -# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++14" -# endif - -# ifndef __cpp_lib_robust_nonmodifying_seq_ops -# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++14" -# endif -# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L -# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_sample -# error "__cpp_lib_sample should not be defined before c++17" -# endif - -# ifdef __cpp_lib_scoped_lock -# error "__cpp_lib_scoped_lock should not be defined before c++17" -# endif - -# ifdef __cpp_lib_shared_mutex -# error "__cpp_lib_shared_mutex should not be defined before c++17" -# endif - -# ifdef __cpp_lib_shared_ptr_arrays -# error "__cpp_lib_shared_ptr_arrays should not be defined before c++17" -# endif - -# ifdef __cpp_lib_shared_ptr_weak_type -# error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17" -# endif - -# if !defined(_LIBCPP_HAS_NO_THREADS) -# ifndef __cpp_lib_shared_timed_mutex -# error "__cpp_lib_shared_timed_mutex should be defined in c++14" -# endif -# if __cpp_lib_shared_timed_mutex != 201402L -# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++14" -# endif -# else -# ifdef __cpp_lib_shared_timed_mutex -# error "__cpp_lib_shared_timed_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" -# endif -# endif - -# ifndef __cpp_lib_string_udls -# error "__cpp_lib_string_udls should be defined in c++14" -# endif -# if __cpp_lib_string_udls != 201304L -# error "__cpp_lib_string_udls should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_string_view -# error "__cpp_lib_string_view should not be defined before c++17" -# endif - -# ifdef __cpp_lib_three_way_comparison -# error "__cpp_lib_three_way_comparison should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_to_array -# error "__cpp_lib_to_array should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_to_chars -# error "__cpp_lib_to_chars should not be defined before c++17" -# endif - -# ifndef __cpp_lib_transformation_trait_aliases -# error "__cpp_lib_transformation_trait_aliases should be defined in c++14" -# endif -# if __cpp_lib_transformation_trait_aliases != 201304L -# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++14" -# endif - -# ifndef __cpp_lib_transparent_operators -# error "__cpp_lib_transparent_operators should be defined in c++14" -# endif -# if __cpp_lib_transparent_operators != 201210L -# error "__cpp_lib_transparent_operators should have the value 201210L in c++14" -# endif - -# ifndef __cpp_lib_tuple_element_t -# error "__cpp_lib_tuple_element_t should be defined in c++14" -# endif -# if __cpp_lib_tuple_element_t != 201402L -# error "__cpp_lib_tuple_element_t should have the value 201402L in c++14" -# endif - -# ifndef __cpp_lib_tuples_by_type -# error "__cpp_lib_tuples_by_type should be defined in c++14" -# endif -# if __cpp_lib_tuples_by_type != 201304L -# error "__cpp_lib_tuples_by_type should have the value 201304L in c++14" -# endif - -# ifdef __cpp_lib_type_trait_variable_templates -# error "__cpp_lib_type_trait_variable_templates should not be defined before c++17" -# endif - -# ifdef __cpp_lib_uncaught_exceptions -# error "__cpp_lib_uncaught_exceptions should not be defined before c++17" -# endif - -# ifdef __cpp_lib_unordered_map_try_emplace -# error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17" -# endif - -# ifdef __cpp_lib_variant -# error "__cpp_lib_variant should not be defined before c++17" -# endif - -# ifdef __cpp_lib_void_t -# error "__cpp_lib_void_t should not be defined before c++17" -# endif +#ifdef __cpp_lib_addressof_constexpr +#error "__cpp_lib_addressof_constexpr should not be defined before c++17" +#endif + +#ifdef __cpp_lib_allocator_traits_is_always_equal +#error \ + "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17" +#endif + +#ifdef __cpp_lib_any +#error "__cpp_lib_any should not be defined before c++17" +#endif + +#ifdef __cpp_lib_apply +#error "__cpp_lib_apply should not be defined before c++17" +#endif + +#ifdef __cpp_lib_array_constexpr +#error "__cpp_lib_array_constexpr should not be defined before c++17" +#endif + +#ifdef __cpp_lib_as_const +#error "__cpp_lib_as_const should not be defined before c++17" +#endif + +#ifdef __cpp_lib_atomic_is_always_lock_free +#error "__cpp_lib_atomic_is_always_lock_free should not be defined before c++17" +#endif + +#ifdef __cpp_lib_atomic_ref +#error "__cpp_lib_atomic_ref should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_bind_front +#error "__cpp_lib_bind_front should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_bit_cast +#error "__cpp_lib_bit_cast should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_bool_constant +#error "__cpp_lib_bool_constant should not be defined before c++17" +#endif + +#ifdef __cpp_lib_boyer_moore_searcher +#error "__cpp_lib_boyer_moore_searcher should not be defined before c++17" +#endif + +#ifdef __cpp_lib_byte +#error "__cpp_lib_byte should not be defined before c++17" +#endif + +#ifdef __cpp_lib_char8_t +#error "__cpp_lib_char8_t should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_chrono +#error "__cpp_lib_chrono should not be defined before c++17" +#endif + +#ifndef __cpp_lib_chrono_udls +#error "__cpp_lib_chrono_udls should be defined in c++14" +#endif +#if __cpp_lib_chrono_udls != 201304L +#error "__cpp_lib_chrono_udls should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_clamp +#error "__cpp_lib_clamp should not be defined before c++17" +#endif + +#ifndef __cpp_lib_complex_udls +#error "__cpp_lib_complex_udls should be defined in c++14" +#endif +#if __cpp_lib_complex_udls != 201309L +#error "__cpp_lib_complex_udls should have the value 201309L in c++14" +#endif + +#ifdef __cpp_lib_concepts +#error "__cpp_lib_concepts should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_constexpr_misc +#error "__cpp_lib_constexpr_misc should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_constexpr_swap_algorithms +#error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_destroying_delete +#error "__cpp_lib_destroying_delete should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_enable_shared_from_this +#error "__cpp_lib_enable_shared_from_this should not be defined before c++17" +#endif + +#ifdef __cpp_lib_endian +#error "__cpp_lib_endian should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_erase_if +#error "__cpp_lib_erase_if should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_exchange_function +#error "__cpp_lib_exchange_function should be defined in c++14" +#endif +#if __cpp_lib_exchange_function != 201304L +#error "__cpp_lib_exchange_function should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_execution +#error "__cpp_lib_execution should not be defined before c++17" +#endif + +#ifdef __cpp_lib_filesystem +#error "__cpp_lib_filesystem should not be defined before c++17" +#endif + +#ifdef __cpp_lib_gcd_lcm +#error "__cpp_lib_gcd_lcm should not be defined before c++17" +#endif + +#ifndef __cpp_lib_generic_associative_lookup +#error "__cpp_lib_generic_associative_lookup should be defined in c++14" +#endif +#if __cpp_lib_generic_associative_lookup != 201304L +#error \ + "__cpp_lib_generic_associative_lookup should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_generic_unordered_lookup +#error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_hardware_interference_size +#error "__cpp_lib_hardware_interference_size should not be defined before c++17" +#endif + +#ifdef __cpp_lib_has_unique_object_representations +#error \ + "__cpp_lib_has_unique_object_representations should not be defined before c++17" +#endif + +#ifdef __cpp_lib_hypot +#error "__cpp_lib_hypot should not be defined before c++17" +#endif + +#ifdef __cpp_lib_incomplete_container_elements +#error \ + "__cpp_lib_incomplete_container_elements should not be defined before c++17" +#endif + +#ifndef __cpp_lib_integer_sequence +#error "__cpp_lib_integer_sequence should be defined in c++14" +#endif +#if __cpp_lib_integer_sequence != 201304L +#error "__cpp_lib_integer_sequence should have the value 201304L in c++14" +#endif + +#ifndef __cpp_lib_integral_constant_callable +#error "__cpp_lib_integral_constant_callable should be defined in c++14" +#endif +#if __cpp_lib_integral_constant_callable != 201304L +#error \ + "__cpp_lib_integral_constant_callable should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_interpolate +#error "__cpp_lib_interpolate should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_invoke +#error "__cpp_lib_invoke should not be defined before c++17" +#endif + +#ifdef __cpp_lib_is_aggregate +#error "__cpp_lib_is_aggregate should not be defined before c++17" +#endif + +#ifdef __cpp_lib_is_constant_evaluated +#error "__cpp_lib_is_constant_evaluated should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_is_final +#error "__cpp_lib_is_final should be defined in c++14" +#endif +#if __cpp_lib_is_final != 201402L +#error "__cpp_lib_is_final should have the value 201402L in c++14" +#endif + +#ifdef __cpp_lib_is_invocable +#error "__cpp_lib_is_invocable should not be defined before c++17" +#endif + +#ifndef __cpp_lib_is_null_pointer +#error "__cpp_lib_is_null_pointer should be defined in c++14" +#endif +#if __cpp_lib_is_null_pointer != 201309L +#error "__cpp_lib_is_null_pointer should have the value 201309L in c++14" +#endif + +#ifdef __cpp_lib_is_swappable +#error "__cpp_lib_is_swappable should not be defined before c++17" +#endif + +#ifdef __cpp_lib_launder +#error "__cpp_lib_launder should not be defined before c++17" +#endif + +#ifdef __cpp_lib_list_remove_return_type +#error "__cpp_lib_list_remove_return_type should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_logical_traits +#error "__cpp_lib_logical_traits should not be defined before c++17" +#endif + +#ifdef __cpp_lib_make_from_tuple +#error "__cpp_lib_make_from_tuple should not be defined before c++17" +#endif + +#ifndef __cpp_lib_make_reverse_iterator +#error "__cpp_lib_make_reverse_iterator should be defined in c++14" +#endif +#if __cpp_lib_make_reverse_iterator != 201402L +#error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++14" +#endif + +#ifndef __cpp_lib_make_unique +#error "__cpp_lib_make_unique should be defined in c++14" +#endif +#if __cpp_lib_make_unique != 201304L +#error "__cpp_lib_make_unique should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_map_try_emplace +#error "__cpp_lib_map_try_emplace should not be defined before c++17" +#endif + +#ifdef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_math_special_functions +#error "__cpp_lib_math_special_functions should not be defined before c++17" +#endif + +#ifdef __cpp_lib_memory_resource +#error "__cpp_lib_memory_resource should not be defined before c++17" +#endif + +#ifdef __cpp_lib_node_extract +#error "__cpp_lib_node_extract should not be defined before c++17" +#endif + +#ifdef __cpp_lib_nonmember_container_access +#error "__cpp_lib_nonmember_container_access should not be defined before c++17" +#endif + +#ifdef __cpp_lib_not_fn +#error "__cpp_lib_not_fn should not be defined before c++17" +#endif + +#ifndef __cpp_lib_null_iterators +#error "__cpp_lib_null_iterators should be defined in c++14" +#endif +#if __cpp_lib_null_iterators != 201304L +#error "__cpp_lib_null_iterators should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_optional +#error "__cpp_lib_optional should not be defined before c++17" +#endif + +#ifdef __cpp_lib_parallel_algorithm +#error "__cpp_lib_parallel_algorithm should not be defined before c++17" +#endif + +#ifndef __cpp_lib_quoted_string_io +#error "__cpp_lib_quoted_string_io should be defined in c++14" +#endif +#if __cpp_lib_quoted_string_io != 201304L +#error "__cpp_lib_quoted_string_io should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_ranges +#error "__cpp_lib_ranges should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_raw_memory_algorithms +#error "__cpp_lib_raw_memory_algorithms should not be defined before c++17" +#endif + +#ifndef __cpp_lib_result_of_sfinae +#error "__cpp_lib_result_of_sfinae should be defined in c++14" +#endif +#if __cpp_lib_result_of_sfinae != 201210L +#error "__cpp_lib_result_of_sfinae should have the value 201210L in c++14" +#endif + +#ifndef __cpp_lib_robust_nonmodifying_seq_ops +#error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++14" +#endif +#if __cpp_lib_robust_nonmodifying_seq_ops != 201304L +#error \ + "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_sample +#error "__cpp_lib_sample should not be defined before c++17" +#endif + +#ifdef __cpp_lib_scoped_lock +#error "__cpp_lib_scoped_lock should not be defined before c++17" +#endif + +#ifdef __cpp_lib_shared_mutex +#error "__cpp_lib_shared_mutex should not be defined before c++17" +#endif + +#ifdef __cpp_lib_shared_ptr_arrays +#error "__cpp_lib_shared_ptr_arrays should not be defined before c++17" +#endif + +#ifdef __cpp_lib_shared_ptr_weak_type +#error "__cpp_lib_shared_ptr_weak_type should not be defined before c++17" +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) +#ifndef __cpp_lib_shared_timed_mutex +#error "__cpp_lib_shared_timed_mutex should be defined in c++14" +#endif +#if __cpp_lib_shared_timed_mutex != 201402L +#error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++14" +#endif +#else +#ifdef __cpp_lib_shared_timed_mutex +#error \ + "__cpp_lib_shared_timed_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" +#endif +#endif + +#ifndef __cpp_lib_string_udls +#error "__cpp_lib_string_udls should be defined in c++14" +#endif +#if __cpp_lib_string_udls != 201304L +#error "__cpp_lib_string_udls should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_string_view +#error "__cpp_lib_string_view should not be defined before c++17" +#endif + +#ifdef __cpp_lib_three_way_comparison +#error "__cpp_lib_three_way_comparison should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_to_array +#error "__cpp_lib_to_array should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_to_chars +#error "__cpp_lib_to_chars should not be defined before c++17" +#endif + +#ifndef __cpp_lib_transformation_trait_aliases +#error "__cpp_lib_transformation_trait_aliases should be defined in c++14" +#endif +#if __cpp_lib_transformation_trait_aliases != 201304L +#error \ + "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++14" +#endif + +#ifndef __cpp_lib_transparent_operators +#error "__cpp_lib_transparent_operators should be defined in c++14" +#endif +#if __cpp_lib_transparent_operators != 201210L +#error "__cpp_lib_transparent_operators should have the value 201210L in c++14" +#endif + +#ifndef __cpp_lib_tuple_element_t +#error "__cpp_lib_tuple_element_t should be defined in c++14" +#endif +#if __cpp_lib_tuple_element_t != 201402L +#error "__cpp_lib_tuple_element_t should have the value 201402L in c++14" +#endif + +#ifndef __cpp_lib_tuples_by_type +#error "__cpp_lib_tuples_by_type should be defined in c++14" +#endif +#if __cpp_lib_tuples_by_type != 201304L +#error "__cpp_lib_tuples_by_type should have the value 201304L in c++14" +#endif + +#ifdef __cpp_lib_type_trait_variable_templates +#error \ + "__cpp_lib_type_trait_variable_templates should not be defined before c++17" +#endif + +#ifdef __cpp_lib_uncaught_exceptions +#error "__cpp_lib_uncaught_exceptions should not be defined before c++17" +#endif + +#ifdef __cpp_lib_unordered_map_try_emplace +#error "__cpp_lib_unordered_map_try_emplace should not be defined before c++17" +#endif + +#ifdef __cpp_lib_variant +#error "__cpp_lib_variant should not be defined before c++17" +#endif + +#ifdef __cpp_lib_void_t +#error "__cpp_lib_void_t should not be defined before c++17" +#endif #elif TEST_STD_VER == 17 -# if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_addressof_constexpr -# error "__cpp_lib_addressof_constexpr should be defined in c++17" -# endif -# if __cpp_lib_addressof_constexpr != 201603L -# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++17" -# endif -# else -# ifdef __cpp_lib_addressof_constexpr -# error "__cpp_lib_addressof_constexpr should not be defined when TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 is not defined!" -# endif -# endif - -# ifndef __cpp_lib_allocator_traits_is_always_equal -# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17" -# endif -# if __cpp_lib_allocator_traits_is_always_equal != 201411L -# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17" -# endif - -# ifndef __cpp_lib_any -# error "__cpp_lib_any should be defined in c++17" -# endif -# if __cpp_lib_any != 201606L -# error "__cpp_lib_any should have the value 201606L in c++17" -# endif - -# ifndef __cpp_lib_apply -# error "__cpp_lib_apply should be defined in c++17" -# endif -# if __cpp_lib_apply != 201603L -# error "__cpp_lib_apply should have the value 201603L in c++17" -# endif - -# ifndef __cpp_lib_array_constexpr -# error "__cpp_lib_array_constexpr should be defined in c++17" -# endif -# if __cpp_lib_array_constexpr != 201603L -# error "__cpp_lib_array_constexpr should have the value 201603L in c++17" -# endif - -# ifndef __cpp_lib_as_const -# error "__cpp_lib_as_const should be defined in c++17" -# endif -# if __cpp_lib_as_const != 201510L -# error "__cpp_lib_as_const should have the value 201510L in c++17" -# endif - -# if !defined(_LIBCPP_HAS_NO_THREADS) -# ifndef __cpp_lib_atomic_is_always_lock_free -# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++17" -# endif -# if __cpp_lib_atomic_is_always_lock_free != 201603L -# error "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++17" -# endif -# else -# ifdef __cpp_lib_atomic_is_always_lock_free -# error "__cpp_lib_atomic_is_always_lock_free should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" -# endif -# endif - -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_bind_front -# error "__cpp_lib_bind_front should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_bit_cast -# error "__cpp_lib_bit_cast should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_bool_constant -# error "__cpp_lib_bool_constant should be defined in c++17" -# endif -# if __cpp_lib_bool_constant != 201505L -# error "__cpp_lib_bool_constant should have the value 201505L in c++17" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_boyer_moore_searcher -# error "__cpp_lib_boyer_moore_searcher should be defined in c++17" -# endif -# if __cpp_lib_boyer_moore_searcher != 201603L -# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++17" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_boyer_moore_searcher -# error "__cpp_lib_boyer_moore_searcher should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_byte -# error "__cpp_lib_byte should be defined in c++17" -# endif -# if __cpp_lib_byte != 201603L -# error "__cpp_lib_byte should have the value 201603L in c++17" -# endif - -# ifdef __cpp_lib_char8_t -# error "__cpp_lib_char8_t should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_chrono -# error "__cpp_lib_chrono should be defined in c++17" -# endif -# if __cpp_lib_chrono != 201611L -# error "__cpp_lib_chrono should have the value 201611L in c++17" -# endif - -# ifndef __cpp_lib_chrono_udls -# error "__cpp_lib_chrono_udls should be defined in c++17" -# endif -# if __cpp_lib_chrono_udls != 201304L -# error "__cpp_lib_chrono_udls should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_clamp -# error "__cpp_lib_clamp should be defined in c++17" -# endif -# if __cpp_lib_clamp != 201603L -# error "__cpp_lib_clamp should have the value 201603L in c++17" -# endif - -# ifndef __cpp_lib_complex_udls -# error "__cpp_lib_complex_udls should be defined in c++17" -# endif -# if __cpp_lib_complex_udls != 201309L -# error "__cpp_lib_complex_udls should have the value 201309L in c++17" -# endif - -# ifdef __cpp_lib_concepts -# error "__cpp_lib_concepts should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_constexpr_misc -# error "__cpp_lib_constexpr_misc should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_constexpr_swap_algorithms -# error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_destroying_delete -# error "__cpp_lib_destroying_delete should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_enable_shared_from_this -# error "__cpp_lib_enable_shared_from_this should be defined in c++17" -# endif -# if __cpp_lib_enable_shared_from_this != 201603L -# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++17" -# endif - -# ifdef __cpp_lib_endian -# error "__cpp_lib_endian should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_erase_if -# error "__cpp_lib_erase_if should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_exchange_function -# error "__cpp_lib_exchange_function should be defined in c++17" -# endif -# if __cpp_lib_exchange_function != 201304L -# error "__cpp_lib_exchange_function should have the value 201304L in c++17" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_execution -# error "__cpp_lib_execution should be defined in c++17" -# endif -# if __cpp_lib_execution != 201603L -# error "__cpp_lib_execution should have the value 201603L in c++17" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_execution -# error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_filesystem -# error "__cpp_lib_filesystem should be defined in c++17" -# endif -# if __cpp_lib_filesystem != 201703L -# error "__cpp_lib_filesystem should have the value 201703L in c++17" -# endif - -# ifndef __cpp_lib_gcd_lcm -# error "__cpp_lib_gcd_lcm should be defined in c++17" -# endif -# if __cpp_lib_gcd_lcm != 201606L -# error "__cpp_lib_gcd_lcm should have the value 201606L in c++17" -# endif - -# ifndef __cpp_lib_generic_associative_lookup -# error "__cpp_lib_generic_associative_lookup should be defined in c++17" -# endif -# if __cpp_lib_generic_associative_lookup != 201304L -# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++17" -# endif - -# ifdef __cpp_lib_generic_unordered_lookup -# error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_hardware_interference_size -# error "__cpp_lib_hardware_interference_size should be defined in c++17" -# endif -# if __cpp_lib_hardware_interference_size != 201703L -# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++17" -# endif - -# if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++17" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# 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!" -# endif -# endif - -# ifndef __cpp_lib_hypot -# error "__cpp_lib_hypot should be defined in c++17" -# endif -# if __cpp_lib_hypot != 201603L -# error "__cpp_lib_hypot should have the value 201603L in c++17" -# endif - -# ifndef __cpp_lib_incomplete_container_elements -# error "__cpp_lib_incomplete_container_elements should be defined in c++17" -# endif -# if __cpp_lib_incomplete_container_elements != 201505L -# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++17" -# endif - -# ifndef __cpp_lib_integer_sequence -# error "__cpp_lib_integer_sequence should be defined in c++17" -# endif -# if __cpp_lib_integer_sequence != 201304L -# error "__cpp_lib_integer_sequence should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_integral_constant_callable -# error "__cpp_lib_integral_constant_callable should be defined in c++17" -# endif -# if __cpp_lib_integral_constant_callable != 201304L -# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++17" -# endif - -# ifdef __cpp_lib_interpolate -# error "__cpp_lib_interpolate should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_invoke -# error "__cpp_lib_invoke should be defined in c++17" -# endif -# if __cpp_lib_invoke != 201411L -# error "__cpp_lib_invoke should have the value 201411L in c++17" -# endif - -# if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 -# ifndef __cpp_lib_is_aggregate -# error "__cpp_lib_is_aggregate should be defined in c++17" -# endif -# if __cpp_lib_is_aggregate != 201703L -# error "__cpp_lib_is_aggregate should have the value 201703L in c++17" -# endif -# else -# ifdef __cpp_lib_is_aggregate -# error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!" -# endif -# endif - -# ifdef __cpp_lib_is_constant_evaluated -# error "__cpp_lib_is_constant_evaluated should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_is_final -# error "__cpp_lib_is_final should be defined in c++17" -# endif -# if __cpp_lib_is_final != 201402L -# error "__cpp_lib_is_final should have the value 201402L in c++17" -# endif - -# ifndef __cpp_lib_is_invocable -# error "__cpp_lib_is_invocable should be defined in c++17" -# endif -# if __cpp_lib_is_invocable != 201703L -# error "__cpp_lib_is_invocable should have the value 201703L in c++17" -# endif - -# ifndef __cpp_lib_is_null_pointer -# error "__cpp_lib_is_null_pointer should be defined in c++17" -# endif -# if __cpp_lib_is_null_pointer != 201309L -# error "__cpp_lib_is_null_pointer should have the value 201309L in c++17" -# endif - -# ifndef __cpp_lib_is_swappable -# error "__cpp_lib_is_swappable should be defined in c++17" -# endif -# if __cpp_lib_is_swappable != 201603L -# error "__cpp_lib_is_swappable should have the value 201603L in c++17" -# endif - -# ifndef __cpp_lib_launder -# error "__cpp_lib_launder should be defined in c++17" -# endif -# if __cpp_lib_launder != 201606L -# error "__cpp_lib_launder should have the value 201606L in c++17" -# endif - -# ifdef __cpp_lib_list_remove_return_type -# error "__cpp_lib_list_remove_return_type should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_logical_traits -# error "__cpp_lib_logical_traits should be defined in c++17" -# endif -# if __cpp_lib_logical_traits != 201510L -# error "__cpp_lib_logical_traits should have the value 201510L in c++17" -# endif - -# ifndef __cpp_lib_make_from_tuple -# error "__cpp_lib_make_from_tuple should be defined in c++17" -# endif -# if __cpp_lib_make_from_tuple != 201606L -# error "__cpp_lib_make_from_tuple should have the value 201606L in c++17" -# endif - -# ifndef __cpp_lib_make_reverse_iterator -# error "__cpp_lib_make_reverse_iterator should be defined in c++17" -# endif -# if __cpp_lib_make_reverse_iterator != 201402L -# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++17" -# endif - -# ifndef __cpp_lib_make_unique -# error "__cpp_lib_make_unique should be defined in c++17" -# endif -# if __cpp_lib_make_unique != 201304L -# error "__cpp_lib_make_unique should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_map_try_emplace -# error "__cpp_lib_map_try_emplace should be defined in c++17" -# endif -# if __cpp_lib_map_try_emplace != 201411L -# error "__cpp_lib_map_try_emplace should have the value 201411L in c++17" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_math_special_functions -# error "__cpp_lib_math_special_functions should be defined in c++17" -# endif -# if __cpp_lib_math_special_functions != 201603L -# error "__cpp_lib_math_special_functions should have the value 201603L in c++17" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_math_special_functions -# error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_memory_resource -# error "__cpp_lib_memory_resource should be defined in c++17" -# endif -# if __cpp_lib_memory_resource != 201603L -# error "__cpp_lib_memory_resource should have the value 201603L in c++17" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_memory_resource -# error "__cpp_lib_memory_resource should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_node_extract -# error "__cpp_lib_node_extract should be defined in c++17" -# endif -# if __cpp_lib_node_extract != 201606L -# error "__cpp_lib_node_extract should have the value 201606L in c++17" -# endif - -# ifndef __cpp_lib_nonmember_container_access -# error "__cpp_lib_nonmember_container_access should be defined in c++17" -# endif -# if __cpp_lib_nonmember_container_access != 201411L -# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17" -# endif - -# ifndef __cpp_lib_not_fn -# error "__cpp_lib_not_fn should be defined in c++17" -# endif -# if __cpp_lib_not_fn != 201603L -# error "__cpp_lib_not_fn should have the value 201603L in c++17" -# endif - -# ifndef __cpp_lib_null_iterators -# error "__cpp_lib_null_iterators should be defined in c++17" -# endif -# if __cpp_lib_null_iterators != 201304L -# error "__cpp_lib_null_iterators should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_optional -# error "__cpp_lib_optional should be defined in c++17" -# endif -# if __cpp_lib_optional != 201606L -# error "__cpp_lib_optional should have the value 201606L in c++17" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_parallel_algorithm -# error "__cpp_lib_parallel_algorithm should be defined in c++17" -# endif -# if __cpp_lib_parallel_algorithm != 201603L -# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++17" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_parallel_algorithm -# error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_quoted_string_io -# error "__cpp_lib_quoted_string_io should be defined in c++17" -# endif -# if __cpp_lib_quoted_string_io != 201304L -# error "__cpp_lib_quoted_string_io should have the value 201304L in c++17" -# endif - -# ifdef __cpp_lib_ranges -# error "__cpp_lib_ranges should not be defined before c++2a" -# endif - -# ifndef __cpp_lib_raw_memory_algorithms -# error "__cpp_lib_raw_memory_algorithms should be defined in c++17" -# endif -# if __cpp_lib_raw_memory_algorithms != 201606L -# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17" -# endif - -# ifndef __cpp_lib_result_of_sfinae -# error "__cpp_lib_result_of_sfinae should be defined in c++17" -# endif -# if __cpp_lib_result_of_sfinae != 201210L -# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17" -# endif - -# ifndef __cpp_lib_robust_nonmodifying_seq_ops -# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++17" -# endif -# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L -# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_sample -# error "__cpp_lib_sample should be defined in c++17" -# endif -# if __cpp_lib_sample != 201603L -# error "__cpp_lib_sample should have the value 201603L in c++17" -# endif - -# ifndef __cpp_lib_scoped_lock -# error "__cpp_lib_scoped_lock should be defined in c++17" -# endif -# if __cpp_lib_scoped_lock != 201703L -# error "__cpp_lib_scoped_lock should have the value 201703L in c++17" -# endif - -# if !defined(_LIBCPP_HAS_NO_THREADS) -# ifndef __cpp_lib_shared_mutex -# error "__cpp_lib_shared_mutex should be defined in c++17" -# endif -# if __cpp_lib_shared_mutex != 201505L -# error "__cpp_lib_shared_mutex should have the value 201505L in c++17" -# endif -# else -# ifdef __cpp_lib_shared_mutex -# error "__cpp_lib_shared_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_shared_ptr_arrays -# error "__cpp_lib_shared_ptr_arrays should be defined in c++17" -# endif -# if __cpp_lib_shared_ptr_arrays != 201611L -# error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++17" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_shared_ptr_arrays -# error "__cpp_lib_shared_ptr_arrays should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_shared_ptr_weak_type -# error "__cpp_lib_shared_ptr_weak_type should be defined in c++17" -# endif -# if __cpp_lib_shared_ptr_weak_type != 201606L -# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++17" -# endif - -# if !defined(_LIBCPP_HAS_NO_THREADS) -# ifndef __cpp_lib_shared_timed_mutex -# error "__cpp_lib_shared_timed_mutex should be defined in c++17" -# endif -# if __cpp_lib_shared_timed_mutex != 201402L -# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++17" -# endif -# else -# ifdef __cpp_lib_shared_timed_mutex -# error "__cpp_lib_shared_timed_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" -# endif -# endif - -# ifndef __cpp_lib_string_udls -# error "__cpp_lib_string_udls should be defined in c++17" -# endif -# if __cpp_lib_string_udls != 201304L -# error "__cpp_lib_string_udls should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_string_view -# error "__cpp_lib_string_view should be defined in c++17" -# endif -# if __cpp_lib_string_view != 201606L -# error "__cpp_lib_string_view should have the value 201606L in c++17" -# endif - -# ifdef __cpp_lib_three_way_comparison -# error "__cpp_lib_three_way_comparison should not be defined before c++2a" -# endif - -# ifdef __cpp_lib_to_array -# error "__cpp_lib_to_array should not be defined before c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_to_chars -# error "__cpp_lib_to_chars should be defined in c++17" -# endif -# if __cpp_lib_to_chars != 201611L -# error "__cpp_lib_to_chars should have the value 201611L in c++17" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_to_chars -# error "__cpp_lib_to_chars should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_transformation_trait_aliases -# error "__cpp_lib_transformation_trait_aliases should be defined in c++17" -# endif -# if __cpp_lib_transformation_trait_aliases != 201304L -# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_transparent_operators -# error "__cpp_lib_transparent_operators should be defined in c++17" -# endif -# if __cpp_lib_transparent_operators != 201510L -# error "__cpp_lib_transparent_operators should have the value 201510L in c++17" -# endif - -# ifndef __cpp_lib_tuple_element_t -# error "__cpp_lib_tuple_element_t should be defined in c++17" -# endif -# if __cpp_lib_tuple_element_t != 201402L -# error "__cpp_lib_tuple_element_t should have the value 201402L in c++17" -# endif - -# ifndef __cpp_lib_tuples_by_type -# error "__cpp_lib_tuples_by_type should be defined in c++17" -# endif -# if __cpp_lib_tuples_by_type != 201304L -# error "__cpp_lib_tuples_by_type should have the value 201304L in c++17" -# endif - -# ifndef __cpp_lib_type_trait_variable_templates -# error "__cpp_lib_type_trait_variable_templates should be defined in c++17" -# endif -# if __cpp_lib_type_trait_variable_templates != 201510L -# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++17" -# endif - -# ifndef __cpp_lib_uncaught_exceptions -# error "__cpp_lib_uncaught_exceptions should be defined in c++17" -# endif -# if __cpp_lib_uncaught_exceptions != 201411L -# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++17" -# endif - -# ifndef __cpp_lib_unordered_map_try_emplace -# error "__cpp_lib_unordered_map_try_emplace should be defined in c++17" -# endif -# if __cpp_lib_unordered_map_try_emplace != 201411L -# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++17" -# endif - -# ifndef __cpp_lib_variant -# error "__cpp_lib_variant should be defined in c++17" -# endif -# if __cpp_lib_variant != 201606L -# error "__cpp_lib_variant should have the value 201606L in c++17" -# endif - -# ifndef __cpp_lib_void_t -# error "__cpp_lib_void_t should be defined in c++17" -# endif -# if __cpp_lib_void_t != 201411L -# error "__cpp_lib_void_t should have the value 201411L in c++17" -# endif +#if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 +#ifndef __cpp_lib_addressof_constexpr +#error "__cpp_lib_addressof_constexpr should be defined in c++17" +#endif +#if __cpp_lib_addressof_constexpr != 201603L +#error "__cpp_lib_addressof_constexpr should have the value 201603L in c++17" +#endif +#else +#ifdef __cpp_lib_addressof_constexpr +#error \ + "__cpp_lib_addressof_constexpr should not be defined when TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 is not defined!" +#endif +#endif + +#ifndef __cpp_lib_allocator_traits_is_always_equal +#error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17" +#endif +#if __cpp_lib_allocator_traits_is_always_equal != 201411L +#error \ + "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17" +#endif + +#ifndef __cpp_lib_any +#error "__cpp_lib_any should be defined in c++17" +#endif +#if __cpp_lib_any != 201606L +#error "__cpp_lib_any should have the value 201606L in c++17" +#endif + +#ifndef __cpp_lib_apply +#error "__cpp_lib_apply should be defined in c++17" +#endif +#if __cpp_lib_apply != 201603L +#error "__cpp_lib_apply should have the value 201603L in c++17" +#endif + +#ifndef __cpp_lib_array_constexpr +#error "__cpp_lib_array_constexpr should be defined in c++17" +#endif +#if __cpp_lib_array_constexpr != 201603L +#error "__cpp_lib_array_constexpr should have the value 201603L in c++17" +#endif + +#ifndef __cpp_lib_as_const +#error "__cpp_lib_as_const should be defined in c++17" +#endif +#if __cpp_lib_as_const != 201510L +#error "__cpp_lib_as_const should have the value 201510L in c++17" +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) +#ifndef __cpp_lib_atomic_is_always_lock_free +#error "__cpp_lib_atomic_is_always_lock_free should be defined in c++17" +#endif +#if __cpp_lib_atomic_is_always_lock_free != 201603L +#error \ + "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++17" +#endif +#else +#ifdef __cpp_lib_atomic_is_always_lock_free +#error \ + "__cpp_lib_atomic_is_always_lock_free should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" +#endif +#endif + +#ifdef __cpp_lib_atomic_ref +#error "__cpp_lib_atomic_ref should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_bind_front +#error "__cpp_lib_bind_front should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_bit_cast +#error "__cpp_lib_bit_cast should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_bool_constant +#error "__cpp_lib_bool_constant should be defined in c++17" +#endif +#if __cpp_lib_bool_constant != 201505L +#error "__cpp_lib_bool_constant should have the value 201505L in c++17" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_boyer_moore_searcher +#error "__cpp_lib_boyer_moore_searcher should be defined in c++17" +#endif +#if __cpp_lib_boyer_moore_searcher != 201603L +#error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++17" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_boyer_moore_searcher +#error \ + "__cpp_lib_boyer_moore_searcher should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_byte +#error "__cpp_lib_byte should be defined in c++17" +#endif +#if __cpp_lib_byte != 201603L +#error "__cpp_lib_byte should have the value 201603L in c++17" +#endif + +#ifdef __cpp_lib_char8_t +#error "__cpp_lib_char8_t should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_chrono +#error "__cpp_lib_chrono should be defined in c++17" +#endif +#if __cpp_lib_chrono != 201611L +#error "__cpp_lib_chrono should have the value 201611L in c++17" +#endif + +#ifndef __cpp_lib_chrono_udls +#error "__cpp_lib_chrono_udls should be defined in c++17" +#endif +#if __cpp_lib_chrono_udls != 201304L +#error "__cpp_lib_chrono_udls should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_clamp +#error "__cpp_lib_clamp should be defined in c++17" +#endif +#if __cpp_lib_clamp != 201603L +#error "__cpp_lib_clamp should have the value 201603L in c++17" +#endif + +#ifndef __cpp_lib_complex_udls +#error "__cpp_lib_complex_udls should be defined in c++17" +#endif +#if __cpp_lib_complex_udls != 201309L +#error "__cpp_lib_complex_udls should have the value 201309L in c++17" +#endif + +#ifdef __cpp_lib_concepts +#error "__cpp_lib_concepts should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_constexpr_misc +#error "__cpp_lib_constexpr_misc should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_constexpr_swap_algorithms +#error "__cpp_lib_constexpr_swap_algorithms should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_destroying_delete +#error "__cpp_lib_destroying_delete should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_enable_shared_from_this +#error "__cpp_lib_enable_shared_from_this should be defined in c++17" +#endif +#if __cpp_lib_enable_shared_from_this != 201603L +#error \ + "__cpp_lib_enable_shared_from_this should have the value 201603L in c++17" +#endif + +#ifdef __cpp_lib_endian +#error "__cpp_lib_endian should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_erase_if +#error "__cpp_lib_erase_if should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_exchange_function +#error "__cpp_lib_exchange_function should be defined in c++17" +#endif +#if __cpp_lib_exchange_function != 201304L +#error "__cpp_lib_exchange_function should have the value 201304L in c++17" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_execution +#error "__cpp_lib_execution should be defined in c++17" +#endif +#if __cpp_lib_execution != 201603L +#error "__cpp_lib_execution should have the value 201603L in c++17" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_execution +#error \ + "__cpp_lib_execution should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_filesystem +#error "__cpp_lib_filesystem should be defined in c++17" +#endif +#if __cpp_lib_filesystem != 201703L +#error "__cpp_lib_filesystem should have the value 201703L in c++17" +#endif + +#ifndef __cpp_lib_gcd_lcm +#error "__cpp_lib_gcd_lcm should be defined in c++17" +#endif +#if __cpp_lib_gcd_lcm != 201606L +#error "__cpp_lib_gcd_lcm should have the value 201606L in c++17" +#endif + +#ifndef __cpp_lib_generic_associative_lookup +#error "__cpp_lib_generic_associative_lookup should be defined in c++17" +#endif +#if __cpp_lib_generic_associative_lookup != 201304L +#error \ + "__cpp_lib_generic_associative_lookup should have the value 201304L in c++17" +#endif + +#ifdef __cpp_lib_generic_unordered_lookup +#error "__cpp_lib_generic_unordered_lookup should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_hardware_interference_size +#error "__cpp_lib_hardware_interference_size should be defined in c++17" +#endif +#if __cpp_lib_hardware_interference_size != 201703L +#error \ + "__cpp_lib_hardware_interference_size should have the value 201703L in c++17" +#endif + +#if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || \ + TEST_GCC_VER >= 700 +#ifndef __cpp_lib_has_unique_object_representations +#error "__cpp_lib_has_unique_object_representations should be defined in c++17" +#endif +#if __cpp_lib_has_unique_object_representations != 201606L +#error \ + "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17" +#endif +#else +#ifdef __cpp_lib_has_unique_object_representations +#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!" +#endif +#endif + +#ifndef __cpp_lib_hypot +#error "__cpp_lib_hypot should be defined in c++17" +#endif +#if __cpp_lib_hypot != 201603L +#error "__cpp_lib_hypot should have the value 201603L in c++17" +#endif + +#ifndef __cpp_lib_incomplete_container_elements +#error "__cpp_lib_incomplete_container_elements should be defined in c++17" +#endif +#if __cpp_lib_incomplete_container_elements != 201505L +#error \ + "__cpp_lib_incomplete_container_elements should have the value 201505L in c++17" +#endif + +#ifndef __cpp_lib_integer_sequence +#error "__cpp_lib_integer_sequence should be defined in c++17" +#endif +#if __cpp_lib_integer_sequence != 201304L +#error "__cpp_lib_integer_sequence should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_integral_constant_callable +#error "__cpp_lib_integral_constant_callable should be defined in c++17" +#endif +#if __cpp_lib_integral_constant_callable != 201304L +#error \ + "__cpp_lib_integral_constant_callable should have the value 201304L in c++17" +#endif + +#ifdef __cpp_lib_interpolate +#error "__cpp_lib_interpolate should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_invoke +#error "__cpp_lib_invoke should be defined in c++17" +#endif +#if __cpp_lib_invoke != 201411L +#error "__cpp_lib_invoke should have the value 201411L in c++17" +#endif + +#if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 +#ifndef __cpp_lib_is_aggregate +#error "__cpp_lib_is_aggregate should be defined in c++17" +#endif +#if __cpp_lib_is_aggregate != 201703L +#error "__cpp_lib_is_aggregate should have the value 201703L in c++17" +#endif +#else +#ifdef __cpp_lib_is_aggregate +#error \ + "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!" +#endif +#endif + +#ifdef __cpp_lib_is_constant_evaluated +#error "__cpp_lib_is_constant_evaluated should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_is_final +#error "__cpp_lib_is_final should be defined in c++17" +#endif +#if __cpp_lib_is_final != 201402L +#error "__cpp_lib_is_final should have the value 201402L in c++17" +#endif + +#ifndef __cpp_lib_is_invocable +#error "__cpp_lib_is_invocable should be defined in c++17" +#endif +#if __cpp_lib_is_invocable != 201703L +#error "__cpp_lib_is_invocable should have the value 201703L in c++17" +#endif + +#ifndef __cpp_lib_is_null_pointer +#error "__cpp_lib_is_null_pointer should be defined in c++17" +#endif +#if __cpp_lib_is_null_pointer != 201309L +#error "__cpp_lib_is_null_pointer should have the value 201309L in c++17" +#endif + +#ifndef __cpp_lib_is_swappable +#error "__cpp_lib_is_swappable should be defined in c++17" +#endif +#if __cpp_lib_is_swappable != 201603L +#error "__cpp_lib_is_swappable should have the value 201603L in c++17" +#endif + +#ifndef __cpp_lib_launder +#error "__cpp_lib_launder should be defined in c++17" +#endif +#if __cpp_lib_launder != 201606L +#error "__cpp_lib_launder should have the value 201606L in c++17" +#endif + +#ifdef __cpp_lib_list_remove_return_type +#error "__cpp_lib_list_remove_return_type should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_logical_traits +#error "__cpp_lib_logical_traits should be defined in c++17" +#endif +#if __cpp_lib_logical_traits != 201510L +#error "__cpp_lib_logical_traits should have the value 201510L in c++17" +#endif + +#ifndef __cpp_lib_make_from_tuple +#error "__cpp_lib_make_from_tuple should be defined in c++17" +#endif +#if __cpp_lib_make_from_tuple != 201606L +#error "__cpp_lib_make_from_tuple should have the value 201606L in c++17" +#endif + +#ifndef __cpp_lib_make_reverse_iterator +#error "__cpp_lib_make_reverse_iterator should be defined in c++17" +#endif +#if __cpp_lib_make_reverse_iterator != 201402L +#error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++17" +#endif + +#ifndef __cpp_lib_make_unique +#error "__cpp_lib_make_unique should be defined in c++17" +#endif +#if __cpp_lib_make_unique != 201304L +#error "__cpp_lib_make_unique should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_map_try_emplace +#error "__cpp_lib_map_try_emplace should be defined in c++17" +#endif +#if __cpp_lib_map_try_emplace != 201411L +#error "__cpp_lib_map_try_emplace should have the value 201411L in c++17" +#endif + +#ifdef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should not be defined before c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_math_special_functions +#error "__cpp_lib_math_special_functions should be defined in c++17" +#endif +#if __cpp_lib_math_special_functions != 201603L +#error "__cpp_lib_math_special_functions should have the value 201603L in c++17" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_math_special_functions +#error \ + "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_memory_resource +#error "__cpp_lib_memory_resource should be defined in c++17" +#endif +#if __cpp_lib_memory_resource != 201603L +#error "__cpp_lib_memory_resource should have the value 201603L in c++17" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_memory_resource +#error \ + "__cpp_lib_memory_resource should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_node_extract +#error "__cpp_lib_node_extract should be defined in c++17" +#endif +#if __cpp_lib_node_extract != 201606L +#error "__cpp_lib_node_extract should have the value 201606L in c++17" +#endif + +#ifndef __cpp_lib_nonmember_container_access +#error "__cpp_lib_nonmember_container_access should be defined in c++17" +#endif +#if __cpp_lib_nonmember_container_access != 201411L +#error \ + "__cpp_lib_nonmember_container_access should have the value 201411L in c++17" +#endif + +#ifndef __cpp_lib_not_fn +#error "__cpp_lib_not_fn should be defined in c++17" +#endif +#if __cpp_lib_not_fn != 201603L +#error "__cpp_lib_not_fn should have the value 201603L in c++17" +#endif + +#ifndef __cpp_lib_null_iterators +#error "__cpp_lib_null_iterators should be defined in c++17" +#endif +#if __cpp_lib_null_iterators != 201304L +#error "__cpp_lib_null_iterators should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_optional +#error "__cpp_lib_optional should be defined in c++17" +#endif +#if __cpp_lib_optional != 201606L +#error "__cpp_lib_optional should have the value 201606L in c++17" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_parallel_algorithm +#error "__cpp_lib_parallel_algorithm should be defined in c++17" +#endif +#if __cpp_lib_parallel_algorithm != 201603L +#error "__cpp_lib_parallel_algorithm should have the value 201603L in c++17" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_parallel_algorithm +#error \ + "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_quoted_string_io +#error "__cpp_lib_quoted_string_io should be defined in c++17" +#endif +#if __cpp_lib_quoted_string_io != 201304L +#error "__cpp_lib_quoted_string_io should have the value 201304L in c++17" +#endif + +#ifdef __cpp_lib_ranges +#error "__cpp_lib_ranges should not be defined before c++2a" +#endif + +#ifndef __cpp_lib_raw_memory_algorithms +#error "__cpp_lib_raw_memory_algorithms should be defined in c++17" +#endif +#if __cpp_lib_raw_memory_algorithms != 201606L +#error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++17" +#endif + +#ifndef __cpp_lib_result_of_sfinae +#error "__cpp_lib_result_of_sfinae should be defined in c++17" +#endif +#if __cpp_lib_result_of_sfinae != 201210L +#error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17" +#endif + +#ifndef __cpp_lib_robust_nonmodifying_seq_ops +#error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++17" +#endif +#if __cpp_lib_robust_nonmodifying_seq_ops != 201304L +#error \ + "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_sample +#error "__cpp_lib_sample should be defined in c++17" +#endif +#if __cpp_lib_sample != 201603L +#error "__cpp_lib_sample should have the value 201603L in c++17" +#endif + +#ifndef __cpp_lib_scoped_lock +#error "__cpp_lib_scoped_lock should be defined in c++17" +#endif +#if __cpp_lib_scoped_lock != 201703L +#error "__cpp_lib_scoped_lock should have the value 201703L in c++17" +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) +#ifndef __cpp_lib_shared_mutex +#error "__cpp_lib_shared_mutex should be defined in c++17" +#endif +#if __cpp_lib_shared_mutex != 201505L +#error "__cpp_lib_shared_mutex should have the value 201505L in c++17" +#endif +#else +#ifdef __cpp_lib_shared_mutex +#error \ + "__cpp_lib_shared_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_shared_ptr_arrays +#error "__cpp_lib_shared_ptr_arrays should be defined in c++17" +#endif +#if __cpp_lib_shared_ptr_arrays != 201611L +#error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++17" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_shared_ptr_arrays +#error \ + "__cpp_lib_shared_ptr_arrays should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_shared_ptr_weak_type +#error "__cpp_lib_shared_ptr_weak_type should be defined in c++17" +#endif +#if __cpp_lib_shared_ptr_weak_type != 201606L +#error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++17" +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) +#ifndef __cpp_lib_shared_timed_mutex +#error "__cpp_lib_shared_timed_mutex should be defined in c++17" +#endif +#if __cpp_lib_shared_timed_mutex != 201402L +#error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++17" +#endif +#else +#ifdef __cpp_lib_shared_timed_mutex +#error \ + "__cpp_lib_shared_timed_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" +#endif +#endif + +#ifndef __cpp_lib_string_udls +#error "__cpp_lib_string_udls should be defined in c++17" +#endif +#if __cpp_lib_string_udls != 201304L +#error "__cpp_lib_string_udls should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_string_view +#error "__cpp_lib_string_view should be defined in c++17" +#endif +#if __cpp_lib_string_view != 201606L +#error "__cpp_lib_string_view should have the value 201606L in c++17" +#endif + +#ifdef __cpp_lib_three_way_comparison +#error "__cpp_lib_three_way_comparison should not be defined before c++2a" +#endif + +#ifdef __cpp_lib_to_array +#error "__cpp_lib_to_array should not be defined before c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_to_chars +#error "__cpp_lib_to_chars should be defined in c++17" +#endif +#if __cpp_lib_to_chars != 201611L +#error "__cpp_lib_to_chars should have the value 201611L in c++17" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_to_chars +#error \ + "__cpp_lib_to_chars should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_transformation_trait_aliases +#error "__cpp_lib_transformation_trait_aliases should be defined in c++17" +#endif +#if __cpp_lib_transformation_trait_aliases != 201304L +#error \ + "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_transparent_operators +#error "__cpp_lib_transparent_operators should be defined in c++17" +#endif +#if __cpp_lib_transparent_operators != 201510L +#error "__cpp_lib_transparent_operators should have the value 201510L in c++17" +#endif + +#ifndef __cpp_lib_tuple_element_t +#error "__cpp_lib_tuple_element_t should be defined in c++17" +#endif +#if __cpp_lib_tuple_element_t != 201402L +#error "__cpp_lib_tuple_element_t should have the value 201402L in c++17" +#endif + +#ifndef __cpp_lib_tuples_by_type +#error "__cpp_lib_tuples_by_type should be defined in c++17" +#endif +#if __cpp_lib_tuples_by_type != 201304L +#error "__cpp_lib_tuples_by_type should have the value 201304L in c++17" +#endif + +#ifndef __cpp_lib_type_trait_variable_templates +#error "__cpp_lib_type_trait_variable_templates should be defined in c++17" +#endif +#if __cpp_lib_type_trait_variable_templates != 201510L +#error \ + "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++17" +#endif + +#ifndef __cpp_lib_uncaught_exceptions +#error "__cpp_lib_uncaught_exceptions should be defined in c++17" +#endif +#if __cpp_lib_uncaught_exceptions != 201411L +#error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++17" +#endif + +#ifndef __cpp_lib_unordered_map_try_emplace +#error "__cpp_lib_unordered_map_try_emplace should be defined in c++17" +#endif +#if __cpp_lib_unordered_map_try_emplace != 201411L +#error \ + "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++17" +#endif + +#ifndef __cpp_lib_variant +#error "__cpp_lib_variant should be defined in c++17" +#endif +#if __cpp_lib_variant != 201606L +#error "__cpp_lib_variant should have the value 201606L in c++17" +#endif + +#ifndef __cpp_lib_void_t +#error "__cpp_lib_void_t should be defined in c++17" +#endif +#if __cpp_lib_void_t != 201411L +#error "__cpp_lib_void_t should have the value 201411L in c++17" +#endif #elif TEST_STD_VER > 17 -# if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_addressof_constexpr -# error "__cpp_lib_addressof_constexpr should be defined in c++2a" -# endif -# if __cpp_lib_addressof_constexpr != 201603L -# error "__cpp_lib_addressof_constexpr should have the value 201603L in c++2a" -# endif -# else -# ifdef __cpp_lib_addressof_constexpr -# error "__cpp_lib_addressof_constexpr should not be defined when TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 is not defined!" -# endif -# endif - -# ifndef __cpp_lib_allocator_traits_is_always_equal -# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2a" -# endif -# if __cpp_lib_allocator_traits_is_always_equal != 201411L -# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2a" -# endif - -# ifndef __cpp_lib_any -# error "__cpp_lib_any should be defined in c++2a" -# endif -# if __cpp_lib_any != 201606L -# error "__cpp_lib_any should have the value 201606L in c++2a" -# endif - -# ifndef __cpp_lib_apply -# error "__cpp_lib_apply should be defined in c++2a" -# endif -# if __cpp_lib_apply != 201603L -# error "__cpp_lib_apply should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_array_constexpr -# error "__cpp_lib_array_constexpr should be defined in c++2a" -# endif -# if __cpp_lib_array_constexpr != 201603L -# error "__cpp_lib_array_constexpr should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_as_const -# error "__cpp_lib_as_const should be defined in c++2a" -# endif -# if __cpp_lib_as_const != 201510L -# error "__cpp_lib_as_const should have the value 201510L in c++2a" -# endif - -# if !defined(_LIBCPP_HAS_NO_THREADS) -# ifndef __cpp_lib_atomic_is_always_lock_free -# error "__cpp_lib_atomic_is_always_lock_free should be defined in c++2a" -# endif -# if __cpp_lib_atomic_is_always_lock_free != 201603L -# error "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++2a" -# endif -# else -# ifdef __cpp_lib_atomic_is_always_lock_free -# error "__cpp_lib_atomic_is_always_lock_free should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should be defined in c++2a" -# endif -# if __cpp_lib_atomic_ref != 201806L -# error "__cpp_lib_atomic_ref should have the value 201806L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_atomic_ref -# error "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_bind_front -# error "__cpp_lib_bind_front should be defined in c++2a" -# endif -# if __cpp_lib_bind_front != 201811L -# error "__cpp_lib_bind_front should have the value 201811L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_bind_front -# error "__cpp_lib_bind_front should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_bit_cast -# error "__cpp_lib_bit_cast should be defined in c++2a" -# endif -# if __cpp_lib_bit_cast != 201806L -# error "__cpp_lib_bit_cast should have the value 201806L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_bit_cast -# error "__cpp_lib_bit_cast should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_bool_constant -# error "__cpp_lib_bool_constant should be defined in c++2a" -# endif -# if __cpp_lib_bool_constant != 201505L -# error "__cpp_lib_bool_constant should have the value 201505L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_boyer_moore_searcher -# error "__cpp_lib_boyer_moore_searcher should be defined in c++2a" -# endif -# if __cpp_lib_boyer_moore_searcher != 201603L -# error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_boyer_moore_searcher -# error "__cpp_lib_boyer_moore_searcher should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_byte -# error "__cpp_lib_byte should be defined in c++2a" -# endif -# if __cpp_lib_byte != 201603L -# error "__cpp_lib_byte should have the value 201603L in c++2a" -# endif - -# if defined(__cpp_char8_t) -# ifndef __cpp_lib_char8_t -# error "__cpp_lib_char8_t should be defined in c++2a" -# endif -# if __cpp_lib_char8_t != 201811L -# error "__cpp_lib_char8_t should have the value 201811L in c++2a" -# endif -# else -# ifdef __cpp_lib_char8_t -# error "__cpp_lib_char8_t should not be defined when defined(__cpp_char8_t) is not defined!" -# endif -# endif - -# ifndef __cpp_lib_chrono -# error "__cpp_lib_chrono should be defined in c++2a" -# endif -# if __cpp_lib_chrono != 201611L -# error "__cpp_lib_chrono should have the value 201611L in c++2a" -# endif - -# ifndef __cpp_lib_chrono_udls -# error "__cpp_lib_chrono_udls should be defined in c++2a" -# endif -# if __cpp_lib_chrono_udls != 201304L -# error "__cpp_lib_chrono_udls should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_clamp -# error "__cpp_lib_clamp should be defined in c++2a" -# endif -# if __cpp_lib_clamp != 201603L -# error "__cpp_lib_clamp should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_complex_udls -# error "__cpp_lib_complex_udls should be defined in c++2a" -# endif -# if __cpp_lib_complex_udls != 201309L -# error "__cpp_lib_complex_udls should have the value 201309L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_concepts -# error "__cpp_lib_concepts should be defined in c++2a" -# endif -# if __cpp_lib_concepts != 201806L -# error "__cpp_lib_concepts should have the value 201806L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_concepts -# error "__cpp_lib_concepts should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_constexpr_misc -# error "__cpp_lib_constexpr_misc should be defined in c++2a" -# endif -# if __cpp_lib_constexpr_misc != 201811L -# error "__cpp_lib_constexpr_misc should have the value 201811L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_constexpr_misc -# error "__cpp_lib_constexpr_misc should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_constexpr_swap_algorithms -# error "__cpp_lib_constexpr_swap_algorithms should be defined in c++2a" -# endif -# if __cpp_lib_constexpr_swap_algorithms != 201806L -# error "__cpp_lib_constexpr_swap_algorithms should have the value 201806L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_constexpr_swap_algorithms -# error "__cpp_lib_constexpr_swap_algorithms should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L -# ifndef __cpp_lib_destroying_delete -# error "__cpp_lib_destroying_delete should be defined in c++2a" -# endif -# if __cpp_lib_destroying_delete != 201806L -# error "__cpp_lib_destroying_delete should have the value 201806L in c++2a" -# endif -# else -# ifdef __cpp_lib_destroying_delete -# error "__cpp_lib_destroying_delete should not be defined when TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L is not defined!" -# endif -# endif - -# ifndef __cpp_lib_enable_shared_from_this -# error "__cpp_lib_enable_shared_from_this should be defined in c++2a" -# endif -# if __cpp_lib_enable_shared_from_this != 201603L -# error "__cpp_lib_enable_shared_from_this should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_endian -# error "__cpp_lib_endian should be defined in c++2a" -# endif -# if __cpp_lib_endian != 201907L -# error "__cpp_lib_endian should have the value 201907L in c++2a" -# endif - -# ifndef __cpp_lib_erase_if -# error "__cpp_lib_erase_if should be defined in c++2a" -# endif -# if __cpp_lib_erase_if != 202002L -# error "__cpp_lib_erase_if should have the value 202002L in c++2a" -# endif - -# ifndef __cpp_lib_exchange_function -# error "__cpp_lib_exchange_function should be defined in c++2a" -# endif -# if __cpp_lib_exchange_function != 201304L -# error "__cpp_lib_exchange_function should have the value 201304L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_execution -# error "__cpp_lib_execution should be defined in c++2a" -# endif -# if __cpp_lib_execution != 201603L -# error "__cpp_lib_execution should have the value 201603L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_execution -# error "__cpp_lib_execution should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_filesystem -# error "__cpp_lib_filesystem should be defined in c++2a" -# endif -# if __cpp_lib_filesystem != 201703L -# error "__cpp_lib_filesystem should have the value 201703L in c++2a" -# endif - -# ifndef __cpp_lib_gcd_lcm -# error "__cpp_lib_gcd_lcm should be defined in c++2a" -# endif -# if __cpp_lib_gcd_lcm != 201606L -# error "__cpp_lib_gcd_lcm should have the value 201606L in c++2a" -# endif - -# ifndef __cpp_lib_generic_associative_lookup -# error "__cpp_lib_generic_associative_lookup should be defined in c++2a" -# endif -# if __cpp_lib_generic_associative_lookup != 201304L -# error "__cpp_lib_generic_associative_lookup should have the value 201304L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_generic_unordered_lookup -# error "__cpp_lib_generic_unordered_lookup should be defined in c++2a" -# endif -# if __cpp_lib_generic_unordered_lookup != 201811L -# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_generic_unordered_lookup -# error "__cpp_lib_generic_unordered_lookup should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_hardware_interference_size -# error "__cpp_lib_hardware_interference_size should be defined in c++2a" -# endif -# if __cpp_lib_hardware_interference_size != 201703L -# error "__cpp_lib_hardware_interference_size should have the value 201703L in c++2a" -# endif - -# if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 -# ifndef __cpp_lib_has_unique_object_representations -# error "__cpp_lib_has_unique_object_representations should be defined in c++2a" -# endif -# if __cpp_lib_has_unique_object_representations != 201606L -# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2a" -# endif -# else -# ifdef __cpp_lib_has_unique_object_representations -# 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!" -# endif -# endif - -# ifndef __cpp_lib_hypot -# error "__cpp_lib_hypot should be defined in c++2a" -# endif -# if __cpp_lib_hypot != 201603L -# error "__cpp_lib_hypot should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_incomplete_container_elements -# error "__cpp_lib_incomplete_container_elements should be defined in c++2a" -# endif -# if __cpp_lib_incomplete_container_elements != 201505L -# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++2a" -# endif - -# ifndef __cpp_lib_integer_sequence -# error "__cpp_lib_integer_sequence should be defined in c++2a" -# endif -# if __cpp_lib_integer_sequence != 201304L -# error "__cpp_lib_integer_sequence should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_integral_constant_callable -# error "__cpp_lib_integral_constant_callable should be defined in c++2a" -# endif -# if __cpp_lib_integral_constant_callable != 201304L -# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_interpolate -# error "__cpp_lib_interpolate should be defined in c++2a" -# endif -# if __cpp_lib_interpolate != 201902L -# error "__cpp_lib_interpolate should have the value 201902L in c++2a" -# endif - -# ifndef __cpp_lib_invoke -# error "__cpp_lib_invoke should be defined in c++2a" -# endif -# if __cpp_lib_invoke != 201411L -# error "__cpp_lib_invoke should have the value 201411L in c++2a" -# endif - -# if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 -# ifndef __cpp_lib_is_aggregate -# error "__cpp_lib_is_aggregate should be defined in c++2a" -# endif -# if __cpp_lib_is_aggregate != 201703L -# error "__cpp_lib_is_aggregate should have the value 201703L in c++2a" -# endif -# else -# ifdef __cpp_lib_is_aggregate -# error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!" -# endif -# endif - -# if TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 -# ifndef __cpp_lib_is_constant_evaluated -# error "__cpp_lib_is_constant_evaluated should be defined in c++2a" -# endif -# if __cpp_lib_is_constant_evaluated != 201811L -# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++2a" -# endif -# else -# ifdef __cpp_lib_is_constant_evaluated -# error "__cpp_lib_is_constant_evaluated should not be defined when TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 is not defined!" -# endif -# endif - -# ifndef __cpp_lib_is_final -# error "__cpp_lib_is_final should be defined in c++2a" -# endif -# if __cpp_lib_is_final != 201402L -# error "__cpp_lib_is_final should have the value 201402L in c++2a" -# endif - -# ifndef __cpp_lib_is_invocable -# error "__cpp_lib_is_invocable should be defined in c++2a" -# endif -# if __cpp_lib_is_invocable != 201703L -# error "__cpp_lib_is_invocable should have the value 201703L in c++2a" -# endif - -# ifndef __cpp_lib_is_null_pointer -# error "__cpp_lib_is_null_pointer should be defined in c++2a" -# endif -# if __cpp_lib_is_null_pointer != 201309L -# error "__cpp_lib_is_null_pointer should have the value 201309L in c++2a" -# endif - -# ifndef __cpp_lib_is_swappable -# error "__cpp_lib_is_swappable should be defined in c++2a" -# endif -# if __cpp_lib_is_swappable != 201603L -# error "__cpp_lib_is_swappable should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_launder -# error "__cpp_lib_launder should be defined in c++2a" -# endif -# if __cpp_lib_launder != 201606L -# error "__cpp_lib_launder should have the value 201606L in c++2a" -# endif - -# ifndef __cpp_lib_list_remove_return_type -# error "__cpp_lib_list_remove_return_type should be defined in c++2a" -# endif -# if __cpp_lib_list_remove_return_type != 201806L -# error "__cpp_lib_list_remove_return_type should have the value 201806L in c++2a" -# endif - -# ifndef __cpp_lib_logical_traits -# error "__cpp_lib_logical_traits should be defined in c++2a" -# endif -# if __cpp_lib_logical_traits != 201510L -# error "__cpp_lib_logical_traits should have the value 201510L in c++2a" -# endif - -# ifndef __cpp_lib_make_from_tuple -# error "__cpp_lib_make_from_tuple should be defined in c++2a" -# endif -# if __cpp_lib_make_from_tuple != 201606L -# error "__cpp_lib_make_from_tuple should have the value 201606L in c++2a" -# endif - -# ifndef __cpp_lib_make_reverse_iterator -# error "__cpp_lib_make_reverse_iterator should be defined in c++2a" -# endif -# if __cpp_lib_make_reverse_iterator != 201402L -# error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++2a" -# endif - -# ifndef __cpp_lib_make_unique -# error "__cpp_lib_make_unique should be defined in c++2a" -# endif -# if __cpp_lib_make_unique != 201304L -# error "__cpp_lib_make_unique should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_map_try_emplace -# error "__cpp_lib_map_try_emplace should be defined in c++2a" -# endif -# if __cpp_lib_map_try_emplace != 201411L -# error "__cpp_lib_map_try_emplace should have the value 201411L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_math_special_functions -# error "__cpp_lib_math_special_functions should be defined in c++2a" -# endif -# if __cpp_lib_math_special_functions != 201603L -# error "__cpp_lib_math_special_functions should have the value 201603L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_math_special_functions -# error "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_memory_resource -# error "__cpp_lib_memory_resource should be defined in c++2a" -# endif -# if __cpp_lib_memory_resource != 201603L -# error "__cpp_lib_memory_resource should have the value 201603L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_memory_resource -# error "__cpp_lib_memory_resource should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_node_extract -# error "__cpp_lib_node_extract should be defined in c++2a" -# endif -# if __cpp_lib_node_extract != 201606L -# error "__cpp_lib_node_extract should have the value 201606L in c++2a" -# endif - -# ifndef __cpp_lib_nonmember_container_access -# error "__cpp_lib_nonmember_container_access should be defined in c++2a" -# endif -# if __cpp_lib_nonmember_container_access != 201411L -# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2a" -# endif - -# ifndef __cpp_lib_not_fn -# error "__cpp_lib_not_fn should be defined in c++2a" -# endif -# if __cpp_lib_not_fn != 201603L -# error "__cpp_lib_not_fn should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_null_iterators -# error "__cpp_lib_null_iterators should be defined in c++2a" -# endif -# if __cpp_lib_null_iterators != 201304L -# error "__cpp_lib_null_iterators should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_optional -# error "__cpp_lib_optional should be defined in c++2a" -# endif -# if __cpp_lib_optional != 201606L -# error "__cpp_lib_optional should have the value 201606L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_parallel_algorithm -# error "__cpp_lib_parallel_algorithm should be defined in c++2a" -# endif -# if __cpp_lib_parallel_algorithm != 201603L -# error "__cpp_lib_parallel_algorithm should have the value 201603L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_parallel_algorithm -# error "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_quoted_string_io -# error "__cpp_lib_quoted_string_io should be defined in c++2a" -# endif -# if __cpp_lib_quoted_string_io != 201304L -# error "__cpp_lib_quoted_string_io should have the value 201304L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_ranges -# error "__cpp_lib_ranges should be defined in c++2a" -# endif -# if __cpp_lib_ranges != 201811L -# error "__cpp_lib_ranges should have the value 201811L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_ranges -# error "__cpp_lib_ranges should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_raw_memory_algorithms -# error "__cpp_lib_raw_memory_algorithms should be defined in c++2a" -# endif -# if __cpp_lib_raw_memory_algorithms != 201606L -# error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++2a" -# endif - -# ifndef __cpp_lib_result_of_sfinae -# error "__cpp_lib_result_of_sfinae should be defined in c++2a" -# endif -# if __cpp_lib_result_of_sfinae != 201210L -# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++2a" -# endif - -# ifndef __cpp_lib_robust_nonmodifying_seq_ops -# error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++2a" -# endif -# if __cpp_lib_robust_nonmodifying_seq_ops != 201304L -# error "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_sample -# error "__cpp_lib_sample should be defined in c++2a" -# endif -# if __cpp_lib_sample != 201603L -# error "__cpp_lib_sample should have the value 201603L in c++2a" -# endif - -# ifndef __cpp_lib_scoped_lock -# error "__cpp_lib_scoped_lock should be defined in c++2a" -# endif -# if __cpp_lib_scoped_lock != 201703L -# error "__cpp_lib_scoped_lock should have the value 201703L in c++2a" -# endif - -# if !defined(_LIBCPP_HAS_NO_THREADS) -# ifndef __cpp_lib_shared_mutex -# error "__cpp_lib_shared_mutex should be defined in c++2a" -# endif -# if __cpp_lib_shared_mutex != 201505L -# error "__cpp_lib_shared_mutex should have the value 201505L in c++2a" -# endif -# else -# ifdef __cpp_lib_shared_mutex -# error "__cpp_lib_shared_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" -# endif -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_shared_ptr_arrays -# error "__cpp_lib_shared_ptr_arrays should be defined in c++2a" -# endif -# if __cpp_lib_shared_ptr_arrays != 201611L -# error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_shared_ptr_arrays -# error "__cpp_lib_shared_ptr_arrays should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_shared_ptr_weak_type -# error "__cpp_lib_shared_ptr_weak_type should be defined in c++2a" -# endif -# if __cpp_lib_shared_ptr_weak_type != 201606L -# error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++2a" -# endif - -# if !defined(_LIBCPP_HAS_NO_THREADS) -# ifndef __cpp_lib_shared_timed_mutex -# error "__cpp_lib_shared_timed_mutex should be defined in c++2a" -# endif -# if __cpp_lib_shared_timed_mutex != 201402L -# error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++2a" -# endif -# else -# ifdef __cpp_lib_shared_timed_mutex -# error "__cpp_lib_shared_timed_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" -# endif -# endif - -# ifndef __cpp_lib_string_udls -# error "__cpp_lib_string_udls should be defined in c++2a" -# endif -# if __cpp_lib_string_udls != 201304L -# error "__cpp_lib_string_udls should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_string_view -# error "__cpp_lib_string_view should be defined in c++2a" -# endif -# if __cpp_lib_string_view != 201606L -# error "__cpp_lib_string_view should have the value 201606L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_three_way_comparison -# error "__cpp_lib_three_way_comparison should be defined in c++2a" -# endif -# if __cpp_lib_three_way_comparison != 201711L -# error "__cpp_lib_three_way_comparison should have the value 201711L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_three_way_comparison -# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_to_array -# error "__cpp_lib_to_array should be defined in c++2a" -# endif -# if __cpp_lib_to_array != 201907L -# error "__cpp_lib_to_array should have the value 201907L in c++2a" -# endif - -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_to_chars -# error "__cpp_lib_to_chars should be defined in c++2a" -# endif -# if __cpp_lib_to_chars != 201611L -# error "__cpp_lib_to_chars should have the value 201611L in c++2a" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_to_chars -# error "__cpp_lib_to_chars should not be defined because it is unimplemented in libc++!" -# endif -# endif - -# ifndef __cpp_lib_transformation_trait_aliases -# error "__cpp_lib_transformation_trait_aliases should be defined in c++2a" -# endif -# if __cpp_lib_transformation_trait_aliases != 201304L -# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_transparent_operators -# error "__cpp_lib_transparent_operators should be defined in c++2a" -# endif -# if __cpp_lib_transparent_operators != 201510L -# error "__cpp_lib_transparent_operators should have the value 201510L in c++2a" -# endif - -# ifndef __cpp_lib_tuple_element_t -# error "__cpp_lib_tuple_element_t should be defined in c++2a" -# endif -# if __cpp_lib_tuple_element_t != 201402L -# error "__cpp_lib_tuple_element_t should have the value 201402L in c++2a" -# endif - -# ifndef __cpp_lib_tuples_by_type -# error "__cpp_lib_tuples_by_type should be defined in c++2a" -# endif -# if __cpp_lib_tuples_by_type != 201304L -# error "__cpp_lib_tuples_by_type should have the value 201304L in c++2a" -# endif - -# ifndef __cpp_lib_type_trait_variable_templates -# error "__cpp_lib_type_trait_variable_templates should be defined in c++2a" -# endif -# if __cpp_lib_type_trait_variable_templates != 201510L -# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++2a" -# endif - -# ifndef __cpp_lib_uncaught_exceptions -# error "__cpp_lib_uncaught_exceptions should be defined in c++2a" -# endif -# if __cpp_lib_uncaught_exceptions != 201411L -# error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++2a" -# endif - -# ifndef __cpp_lib_unordered_map_try_emplace -# error "__cpp_lib_unordered_map_try_emplace should be defined in c++2a" -# endif -# if __cpp_lib_unordered_map_try_emplace != 201411L -# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++2a" -# endif - -# ifndef __cpp_lib_variant -# error "__cpp_lib_variant should be defined in c++2a" -# endif -# if __cpp_lib_variant != 201606L -# error "__cpp_lib_variant should have the value 201606L in c++2a" -# endif - -# ifndef __cpp_lib_void_t -# error "__cpp_lib_void_t should be defined in c++2a" -# endif -# if __cpp_lib_void_t != 201411L -# error "__cpp_lib_void_t should have the value 201411L in c++2a" -# endif +#if TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 +#ifndef __cpp_lib_addressof_constexpr +#error "__cpp_lib_addressof_constexpr should be defined in c++2a" +#endif +#if __cpp_lib_addressof_constexpr != 201603L +#error "__cpp_lib_addressof_constexpr should have the value 201603L in c++2a" +#endif +#else +#ifdef __cpp_lib_addressof_constexpr +#error \ + "__cpp_lib_addressof_constexpr should not be defined when TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700 is not defined!" +#endif +#endif + +#ifndef __cpp_lib_allocator_traits_is_always_equal +#error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2a" +#endif +#if __cpp_lib_allocator_traits_is_always_equal != 201411L +#error \ + "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2a" +#endif + +#ifndef __cpp_lib_any +#error "__cpp_lib_any should be defined in c++2a" +#endif +#if __cpp_lib_any != 201606L +#error "__cpp_lib_any should have the value 201606L in c++2a" +#endif + +#ifndef __cpp_lib_apply +#error "__cpp_lib_apply should be defined in c++2a" +#endif +#if __cpp_lib_apply != 201603L +#error "__cpp_lib_apply should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_array_constexpr +#error "__cpp_lib_array_constexpr should be defined in c++2a" +#endif +#if __cpp_lib_array_constexpr != 201603L +#error "__cpp_lib_array_constexpr should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_as_const +#error "__cpp_lib_as_const should be defined in c++2a" +#endif +#if __cpp_lib_as_const != 201510L +#error "__cpp_lib_as_const should have the value 201510L in c++2a" +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) +#ifndef __cpp_lib_atomic_is_always_lock_free +#error "__cpp_lib_atomic_is_always_lock_free should be defined in c++2a" +#endif +#if __cpp_lib_atomic_is_always_lock_free != 201603L +#error \ + "__cpp_lib_atomic_is_always_lock_free should have the value 201603L in c++2a" +#endif +#else +#ifdef __cpp_lib_atomic_is_always_lock_free +#error \ + "__cpp_lib_atomic_is_always_lock_free should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_atomic_ref +#error "__cpp_lib_atomic_ref should be defined in c++2a" +#endif +#if __cpp_lib_atomic_ref != 201806L +#error "__cpp_lib_atomic_ref should have the value 201806L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_atomic_ref +#error \ + "__cpp_lib_atomic_ref should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_bind_front +#error "__cpp_lib_bind_front should be defined in c++2a" +#endif +#if __cpp_lib_bind_front != 201811L +#error "__cpp_lib_bind_front should have the value 201811L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_bind_front +#error \ + "__cpp_lib_bind_front should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_bit_cast +#error "__cpp_lib_bit_cast should be defined in c++2a" +#endif +#if __cpp_lib_bit_cast != 201806L +#error "__cpp_lib_bit_cast should have the value 201806L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_bit_cast +#error \ + "__cpp_lib_bit_cast should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_bool_constant +#error "__cpp_lib_bool_constant should be defined in c++2a" +#endif +#if __cpp_lib_bool_constant != 201505L +#error "__cpp_lib_bool_constant should have the value 201505L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_boyer_moore_searcher +#error "__cpp_lib_boyer_moore_searcher should be defined in c++2a" +#endif +#if __cpp_lib_boyer_moore_searcher != 201603L +#error "__cpp_lib_boyer_moore_searcher should have the value 201603L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_boyer_moore_searcher +#error \ + "__cpp_lib_boyer_moore_searcher should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_byte +#error "__cpp_lib_byte should be defined in c++2a" +#endif +#if __cpp_lib_byte != 201603L +#error "__cpp_lib_byte should have the value 201603L in c++2a" +#endif + +#if defined(__cpp_char8_t) +#ifndef __cpp_lib_char8_t +#error "__cpp_lib_char8_t should be defined in c++2a" +#endif +#if __cpp_lib_char8_t != 201811L +#error "__cpp_lib_char8_t should have the value 201811L in c++2a" +#endif +#else +#ifdef __cpp_lib_char8_t +#error \ + "__cpp_lib_char8_t should not be defined when defined(__cpp_char8_t) is not defined!" +#endif +#endif + +#ifndef __cpp_lib_chrono +#error "__cpp_lib_chrono should be defined in c++2a" +#endif +#if __cpp_lib_chrono != 201611L +#error "__cpp_lib_chrono should have the value 201611L in c++2a" +#endif + +#ifndef __cpp_lib_chrono_udls +#error "__cpp_lib_chrono_udls should be defined in c++2a" +#endif +#if __cpp_lib_chrono_udls != 201304L +#error "__cpp_lib_chrono_udls should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_clamp +#error "__cpp_lib_clamp should be defined in c++2a" +#endif +#if __cpp_lib_clamp != 201603L +#error "__cpp_lib_clamp should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_complex_udls +#error "__cpp_lib_complex_udls should be defined in c++2a" +#endif +#if __cpp_lib_complex_udls != 201309L +#error "__cpp_lib_complex_udls should have the value 201309L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_concepts +#error "__cpp_lib_concepts should be defined in c++2a" +#endif +#if __cpp_lib_concepts != 201806L +#error "__cpp_lib_concepts should have the value 201806L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_concepts +#error \ + "__cpp_lib_concepts should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_constexpr_misc +#error "__cpp_lib_constexpr_misc should be defined in c++2a" +#endif +#if __cpp_lib_constexpr_misc != 201811L +#error "__cpp_lib_constexpr_misc should have the value 201811L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_constexpr_misc +#error \ + "__cpp_lib_constexpr_misc should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_constexpr_swap_algorithms +#error "__cpp_lib_constexpr_swap_algorithms should be defined in c++2a" +#endif +#if __cpp_lib_constexpr_swap_algorithms != 201806L +#error \ + "__cpp_lib_constexpr_swap_algorithms should have the value 201806L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_constexpr_swap_algorithms +#error \ + "__cpp_lib_constexpr_swap_algorithms should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && \ + __cpp_impl_destroying_delete >= 201806L +#ifndef __cpp_lib_destroying_delete +#error "__cpp_lib_destroying_delete should be defined in c++2a" +#endif +#if __cpp_lib_destroying_delete != 201806L +#error "__cpp_lib_destroying_delete should have the value 201806L in c++2a" +#endif +#else +#ifdef __cpp_lib_destroying_delete +#error \ + "__cpp_lib_destroying_delete should not be defined when TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L is not defined!" +#endif +#endif + +#ifndef __cpp_lib_enable_shared_from_this +#error "__cpp_lib_enable_shared_from_this should be defined in c++2a" +#endif +#if __cpp_lib_enable_shared_from_this != 201603L +#error \ + "__cpp_lib_enable_shared_from_this should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_endian +#error "__cpp_lib_endian should be defined in c++2a" +#endif +#if __cpp_lib_endian != 201907L +#error "__cpp_lib_endian should have the value 201907L in c++2a" +#endif + +#ifndef __cpp_lib_erase_if +#error "__cpp_lib_erase_if should be defined in c++2a" +#endif +#if __cpp_lib_erase_if != 202002L +#error "__cpp_lib_erase_if should have the value 202002L in c++2a" +#endif + +#ifndef __cpp_lib_exchange_function +#error "__cpp_lib_exchange_function should be defined in c++2a" +#endif +#if __cpp_lib_exchange_function != 201304L +#error "__cpp_lib_exchange_function should have the value 201304L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_execution +#error "__cpp_lib_execution should be defined in c++2a" +#endif +#if __cpp_lib_execution != 201603L +#error "__cpp_lib_execution should have the value 201603L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_execution +#error \ + "__cpp_lib_execution should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_filesystem +#error "__cpp_lib_filesystem should be defined in c++2a" +#endif +#if __cpp_lib_filesystem != 201703L +#error "__cpp_lib_filesystem should have the value 201703L in c++2a" +#endif + +#ifndef __cpp_lib_gcd_lcm +#error "__cpp_lib_gcd_lcm should be defined in c++2a" +#endif +#if __cpp_lib_gcd_lcm != 201606L +#error "__cpp_lib_gcd_lcm should have the value 201606L in c++2a" +#endif + +#ifndef __cpp_lib_generic_associative_lookup +#error "__cpp_lib_generic_associative_lookup should be defined in c++2a" +#endif +#if __cpp_lib_generic_associative_lookup != 201304L +#error \ + "__cpp_lib_generic_associative_lookup should have the value 201304L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_generic_unordered_lookup +#error "__cpp_lib_generic_unordered_lookup should be defined in c++2a" +#endif +#if __cpp_lib_generic_unordered_lookup != 201811L +#error \ + "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_generic_unordered_lookup +#error \ + "__cpp_lib_generic_unordered_lookup should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_hardware_interference_size +#error "__cpp_lib_hardware_interference_size should be defined in c++2a" +#endif +#if __cpp_lib_hardware_interference_size != 201703L +#error \ + "__cpp_lib_hardware_interference_size should have the value 201703L in c++2a" +#endif + +#if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || \ + TEST_GCC_VER >= 700 +#ifndef __cpp_lib_has_unique_object_representations +#error "__cpp_lib_has_unique_object_representations should be defined in c++2a" +#endif +#if __cpp_lib_has_unique_object_representations != 201606L +#error \ + "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2a" +#endif +#else +#ifdef __cpp_lib_has_unique_object_representations +#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!" +#endif +#endif + +#ifndef __cpp_lib_hypot +#error "__cpp_lib_hypot should be defined in c++2a" +#endif +#if __cpp_lib_hypot != 201603L +#error "__cpp_lib_hypot should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_incomplete_container_elements +#error "__cpp_lib_incomplete_container_elements should be defined in c++2a" +#endif +#if __cpp_lib_incomplete_container_elements != 201505L +#error \ + "__cpp_lib_incomplete_container_elements should have the value 201505L in c++2a" +#endif + +#ifndef __cpp_lib_integer_sequence +#error "__cpp_lib_integer_sequence should be defined in c++2a" +#endif +#if __cpp_lib_integer_sequence != 201304L +#error "__cpp_lib_integer_sequence should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_integral_constant_callable +#error "__cpp_lib_integral_constant_callable should be defined in c++2a" +#endif +#if __cpp_lib_integral_constant_callable != 201304L +#error \ + "__cpp_lib_integral_constant_callable should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_interpolate +#error "__cpp_lib_interpolate should be defined in c++2a" +#endif +#if __cpp_lib_interpolate != 201902L +#error "__cpp_lib_interpolate should have the value 201902L in c++2a" +#endif + +#ifndef __cpp_lib_invoke +#error "__cpp_lib_invoke should be defined in c++2a" +#endif +#if __cpp_lib_invoke != 201411L +#error "__cpp_lib_invoke should have the value 201411L in c++2a" +#endif + +#if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 +#ifndef __cpp_lib_is_aggregate +#error "__cpp_lib_is_aggregate should be defined in c++2a" +#endif +#if __cpp_lib_is_aggregate != 201703L +#error "__cpp_lib_is_aggregate should have the value 201703L in c++2a" +#endif +#else +#ifdef __cpp_lib_is_aggregate +#error \ + "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!" +#endif +#endif + +#if TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 +#ifndef __cpp_lib_is_constant_evaluated +#error "__cpp_lib_is_constant_evaluated should be defined in c++2a" +#endif +#if __cpp_lib_is_constant_evaluated != 201811L +#error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++2a" +#endif +#else +#ifdef __cpp_lib_is_constant_evaluated +#error \ + "__cpp_lib_is_constant_evaluated should not be defined when TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 is not defined!" +#endif +#endif + +#ifndef __cpp_lib_is_final +#error "__cpp_lib_is_final should be defined in c++2a" +#endif +#if __cpp_lib_is_final != 201402L +#error "__cpp_lib_is_final should have the value 201402L in c++2a" +#endif + +#ifndef __cpp_lib_is_invocable +#error "__cpp_lib_is_invocable should be defined in c++2a" +#endif +#if __cpp_lib_is_invocable != 201703L +#error "__cpp_lib_is_invocable should have the value 201703L in c++2a" +#endif + +#ifndef __cpp_lib_is_null_pointer +#error "__cpp_lib_is_null_pointer should be defined in c++2a" +#endif +#if __cpp_lib_is_null_pointer != 201309L +#error "__cpp_lib_is_null_pointer should have the value 201309L in c++2a" +#endif + +#ifndef __cpp_lib_is_swappable +#error "__cpp_lib_is_swappable should be defined in c++2a" +#endif +#if __cpp_lib_is_swappable != 201603L +#error "__cpp_lib_is_swappable should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_launder +#error "__cpp_lib_launder should be defined in c++2a" +#endif +#if __cpp_lib_launder != 201606L +#error "__cpp_lib_launder should have the value 201606L in c++2a" +#endif + +#ifndef __cpp_lib_list_remove_return_type +#error "__cpp_lib_list_remove_return_type should be defined in c++2a" +#endif +#if __cpp_lib_list_remove_return_type != 201806L +#error \ + "__cpp_lib_list_remove_return_type should have the value 201806L in c++2a" +#endif + +#ifndef __cpp_lib_logical_traits +#error "__cpp_lib_logical_traits should be defined in c++2a" +#endif +#if __cpp_lib_logical_traits != 201510L +#error "__cpp_lib_logical_traits should have the value 201510L in c++2a" +#endif + +#ifndef __cpp_lib_make_from_tuple +#error "__cpp_lib_make_from_tuple should be defined in c++2a" +#endif +#if __cpp_lib_make_from_tuple != 201606L +#error "__cpp_lib_make_from_tuple should have the value 201606L in c++2a" +#endif + +#ifndef __cpp_lib_make_reverse_iterator +#error "__cpp_lib_make_reverse_iterator should be defined in c++2a" +#endif +#if __cpp_lib_make_reverse_iterator != 201402L +#error "__cpp_lib_make_reverse_iterator should have the value 201402L in c++2a" +#endif + +#ifndef __cpp_lib_make_unique +#error "__cpp_lib_make_unique should be defined in c++2a" +#endif +#if __cpp_lib_make_unique != 201304L +#error "__cpp_lib_make_unique should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_map_try_emplace +#error "__cpp_lib_map_try_emplace should be defined in c++2a" +#endif +#if __cpp_lib_map_try_emplace != 201411L +#error "__cpp_lib_map_try_emplace should have the value 201411L in c++2a" +#endif + +#ifndef __cpp_lib_math_constants +#error "__cpp_lib_math_constants should be defined in c++2a" +#endif +#if __cpp_lib_math_constants != 201907L +#error "__cpp_lib_math_constants should have the value 201907L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_math_special_functions +#error "__cpp_lib_math_special_functions should be defined in c++2a" +#endif +#if __cpp_lib_math_special_functions != 201603L +#error "__cpp_lib_math_special_functions should have the value 201603L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_math_special_functions +#error \ + "__cpp_lib_math_special_functions should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_memory_resource +#error "__cpp_lib_memory_resource should be defined in c++2a" +#endif +#if __cpp_lib_memory_resource != 201603L +#error "__cpp_lib_memory_resource should have the value 201603L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_memory_resource +#error \ + "__cpp_lib_memory_resource should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_node_extract +#error "__cpp_lib_node_extract should be defined in c++2a" +#endif +#if __cpp_lib_node_extract != 201606L +#error "__cpp_lib_node_extract should have the value 201606L in c++2a" +#endif + +#ifndef __cpp_lib_nonmember_container_access +#error "__cpp_lib_nonmember_container_access should be defined in c++2a" +#endif +#if __cpp_lib_nonmember_container_access != 201411L +#error \ + "__cpp_lib_nonmember_container_access should have the value 201411L in c++2a" +#endif + +#ifndef __cpp_lib_not_fn +#error "__cpp_lib_not_fn should be defined in c++2a" +#endif +#if __cpp_lib_not_fn != 201603L +#error "__cpp_lib_not_fn should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_null_iterators +#error "__cpp_lib_null_iterators should be defined in c++2a" +#endif +#if __cpp_lib_null_iterators != 201304L +#error "__cpp_lib_null_iterators should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_optional +#error "__cpp_lib_optional should be defined in c++2a" +#endif +#if __cpp_lib_optional != 201606L +#error "__cpp_lib_optional should have the value 201606L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_parallel_algorithm +#error "__cpp_lib_parallel_algorithm should be defined in c++2a" +#endif +#if __cpp_lib_parallel_algorithm != 201603L +#error "__cpp_lib_parallel_algorithm should have the value 201603L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_parallel_algorithm +#error \ + "__cpp_lib_parallel_algorithm should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_quoted_string_io +#error "__cpp_lib_quoted_string_io should be defined in c++2a" +#endif +#if __cpp_lib_quoted_string_io != 201304L +#error "__cpp_lib_quoted_string_io should have the value 201304L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_ranges +#error "__cpp_lib_ranges should be defined in c++2a" +#endif +#if __cpp_lib_ranges != 201811L +#error "__cpp_lib_ranges should have the value 201811L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_ranges +#error \ + "__cpp_lib_ranges should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_raw_memory_algorithms +#error "__cpp_lib_raw_memory_algorithms should be defined in c++2a" +#endif +#if __cpp_lib_raw_memory_algorithms != 201606L +#error "__cpp_lib_raw_memory_algorithms should have the value 201606L in c++2a" +#endif + +#ifndef __cpp_lib_result_of_sfinae +#error "__cpp_lib_result_of_sfinae should be defined in c++2a" +#endif +#if __cpp_lib_result_of_sfinae != 201210L +#error "__cpp_lib_result_of_sfinae should have the value 201210L in c++2a" +#endif + +#ifndef __cpp_lib_robust_nonmodifying_seq_ops +#error "__cpp_lib_robust_nonmodifying_seq_ops should be defined in c++2a" +#endif +#if __cpp_lib_robust_nonmodifying_seq_ops != 201304L +#error \ + "__cpp_lib_robust_nonmodifying_seq_ops should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_sample +#error "__cpp_lib_sample should be defined in c++2a" +#endif +#if __cpp_lib_sample != 201603L +#error "__cpp_lib_sample should have the value 201603L in c++2a" +#endif + +#ifndef __cpp_lib_scoped_lock +#error "__cpp_lib_scoped_lock should be defined in c++2a" +#endif +#if __cpp_lib_scoped_lock != 201703L +#error "__cpp_lib_scoped_lock should have the value 201703L in c++2a" +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) +#ifndef __cpp_lib_shared_mutex +#error "__cpp_lib_shared_mutex should be defined in c++2a" +#endif +#if __cpp_lib_shared_mutex != 201505L +#error "__cpp_lib_shared_mutex should have the value 201505L in c++2a" +#endif +#else +#ifdef __cpp_lib_shared_mutex +#error \ + "__cpp_lib_shared_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" +#endif +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_shared_ptr_arrays +#error "__cpp_lib_shared_ptr_arrays should be defined in c++2a" +#endif +#if __cpp_lib_shared_ptr_arrays != 201611L +#error "__cpp_lib_shared_ptr_arrays should have the value 201611L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_shared_ptr_arrays +#error \ + "__cpp_lib_shared_ptr_arrays should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_shared_ptr_weak_type +#error "__cpp_lib_shared_ptr_weak_type should be defined in c++2a" +#endif +#if __cpp_lib_shared_ptr_weak_type != 201606L +#error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++2a" +#endif + +#if !defined(_LIBCPP_HAS_NO_THREADS) +#ifndef __cpp_lib_shared_timed_mutex +#error "__cpp_lib_shared_timed_mutex should be defined in c++2a" +#endif +#if __cpp_lib_shared_timed_mutex != 201402L +#error "__cpp_lib_shared_timed_mutex should have the value 201402L in c++2a" +#endif +#else +#ifdef __cpp_lib_shared_timed_mutex +#error \ + "__cpp_lib_shared_timed_mutex should not be defined when !defined(_LIBCPP_HAS_NO_THREADS) is not defined!" +#endif +#endif + +#ifndef __cpp_lib_string_udls +#error "__cpp_lib_string_udls should be defined in c++2a" +#endif +#if __cpp_lib_string_udls != 201304L +#error "__cpp_lib_string_udls should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_string_view +#error "__cpp_lib_string_view should be defined in c++2a" +#endif +#if __cpp_lib_string_view != 201606L +#error "__cpp_lib_string_view should have the value 201606L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_three_way_comparison +#error "__cpp_lib_three_way_comparison should be defined in c++2a" +#endif +#if __cpp_lib_three_way_comparison != 201711L +#error "__cpp_lib_three_way_comparison should have the value 201711L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_three_way_comparison +#error \ + "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_to_array +#error "__cpp_lib_to_array should be defined in c++2a" +#endif +#if __cpp_lib_to_array != 201907L +#error "__cpp_lib_to_array should have the value 201907L in c++2a" +#endif + +#if !defined(_LIBCPP_VERSION) +#ifndef __cpp_lib_to_chars +#error "__cpp_lib_to_chars should be defined in c++2a" +#endif +#if __cpp_lib_to_chars != 201611L +#error "__cpp_lib_to_chars should have the value 201611L in c++2a" +#endif +#else // _LIBCPP_VERSION +#ifdef __cpp_lib_to_chars +#error \ + "__cpp_lib_to_chars should not be defined because it is unimplemented in libc++!" +#endif +#endif + +#ifndef __cpp_lib_transformation_trait_aliases +#error "__cpp_lib_transformation_trait_aliases should be defined in c++2a" +#endif +#if __cpp_lib_transformation_trait_aliases != 201304L +#error \ + "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_transparent_operators +#error "__cpp_lib_transparent_operators should be defined in c++2a" +#endif +#if __cpp_lib_transparent_operators != 201510L +#error "__cpp_lib_transparent_operators should have the value 201510L in c++2a" +#endif + +#ifndef __cpp_lib_tuple_element_t +#error "__cpp_lib_tuple_element_t should be defined in c++2a" +#endif +#if __cpp_lib_tuple_element_t != 201402L +#error "__cpp_lib_tuple_element_t should have the value 201402L in c++2a" +#endif + +#ifndef __cpp_lib_tuples_by_type +#error "__cpp_lib_tuples_by_type should be defined in c++2a" +#endif +#if __cpp_lib_tuples_by_type != 201304L +#error "__cpp_lib_tuples_by_type should have the value 201304L in c++2a" +#endif + +#ifndef __cpp_lib_type_trait_variable_templates +#error "__cpp_lib_type_trait_variable_templates should be defined in c++2a" +#endif +#if __cpp_lib_type_trait_variable_templates != 201510L +#error \ + "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++2a" +#endif + +#ifndef __cpp_lib_uncaught_exceptions +#error "__cpp_lib_uncaught_exceptions should be defined in c++2a" +#endif +#if __cpp_lib_uncaught_exceptions != 201411L +#error "__cpp_lib_uncaught_exceptions should have the value 201411L in c++2a" +#endif + +#ifndef __cpp_lib_unordered_map_try_emplace +#error "__cpp_lib_unordered_map_try_emplace should be defined in c++2a" +#endif +#if __cpp_lib_unordered_map_try_emplace != 201411L +#error \ + "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++2a" +#endif + +#ifndef __cpp_lib_variant +#error "__cpp_lib_variant should be defined in c++2a" +#endif +#if __cpp_lib_variant != 201606L +#error "__cpp_lib_variant should have the value 201606L in c++2a" +#endif + +#ifndef __cpp_lib_void_t +#error "__cpp_lib_void_t should be defined in c++2a" +#endif +#if __cpp_lib_void_t != 201411L +#error "__cpp_lib_void_t should have the value 201411L in c++2a" +#endif #endif // TEST_STD_VER > 17 Index: libcxx/test/std/numerics/numbers/numbers.fail.cpp =================================================================== --- /dev/null +++ libcxx/test/std/numerics/numbers/numbers.fail.cpp @@ -0,0 +1,21 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 + +#include +#include "test_macros.h" +struct S1 {}; +int main() { + + constexpr int d = std::numbers::e_v< + int>; // expected-error-re@numbers:* {{static_assert failed{{( due to requirement '.*')?}}}} + constexpr S1 s = std::numbers::e_v< + S1>; // expected-error-re@numbers:* {{static_assert failed{{( due to requirement '.*')?}}}} + return 0; +} Index: libcxx/test/std/numerics/numbers/numbers.pass.cpp =================================================================== --- /dev/null +++ libcxx/test/std/numerics/numbers/numbers.pass.cpp @@ -0,0 +1,77 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// UNSUPPORTED: c++98, c++03, c++11, c++14, c++17 + +#include +#include "test_macros.h" + +int main() { + + // float + constexpr float f = std::numbers::e_v; + constexpr float f1 = std::numbers::log2e_v; + constexpr float f2 = std::numbers::log10e_v; + constexpr float f3 = std::numbers::pi_v; + constexpr float f4 = std::numbers::inv_pi_v; + constexpr float f5 = std::numbers::inv_sqrtpi_v; + constexpr float f6 = std::numbers::ln2_v; + constexpr float f7 = std::numbers::ln10_v; + constexpr float f8 = std::numbers::sqrt2_v; + constexpr float f9 = std::numbers::sqrt3_v; + constexpr float f10 = std::numbers::inv_sqrt3_v; + constexpr float f11 = std::numbers::egamma_v; + constexpr float f12 = std::numbers::phi_v; + + // double + constexpr double d = std::numbers::e_v; + constexpr double d1 = std::numbers::log2e_v; + constexpr double d2 = std::numbers::log10e_v; + constexpr double d3 = std::numbers::pi_v; + constexpr double d4 = std::numbers::inv_pi_v; + constexpr double d5 = std::numbers::inv_sqrtpi_v; + constexpr double d6 = std::numbers::ln2_v; + constexpr double d7 = std::numbers::ln10_v; + constexpr double d8 = std::numbers::sqrt2_v; + constexpr double d9 = std::numbers::sqrt3_v; + constexpr double d10 = std::numbers::inv_sqrt3_v; + constexpr double d11 = std::numbers::egamma_v; + constexpr double d12 = std::numbers::phi_v; + // static assert checks + static_assert(d == std::numbers::e, "d != std::numbers::e "); + static_assert(d1 == std::numbers::log2e, "d1 != std::numbers::log2e"); + static_assert(d2 == std::numbers::log10e, "d2 != std::numbers::log10e"); + static_assert(d3 == std::numbers::pi, "d3 != std::numbers::pi"); + static_assert(d4 == std::numbers::inv_pi, "d4 != std::numbers::inv_pi"); + static_assert(d5 == std::numbers::inv_sqrtpi, + "d5 != std::numbers::inv_sqrtpi"); + static_assert(d6 == std::numbers::ln2, "d6 != std::numbers::ln2"); + static_assert(d7 == std::numbers::ln10, "d7 != std::numbers::ln10"); + static_assert(d8 == std::numbers::sqrt2, "d8 != std::numbers::sqrt2"); + static_assert(d9 == std::numbers::sqrt3, "d9 != std::numbers::sqrt3"); + static_assert(d10 == std::numbers::inv_sqrt3, + "d10 != std::numbers::inv_sqrt3"); + static_assert(d11 == std::numbers::egamma, "d11 != std::numbers::egamma"); + static_assert(d12 == std::numbers::phi, "d12 != std::numbers::phi"); + // long oduble + constexpr long double ld = std::numbers::e_v; + constexpr long double ld1 = std::numbers::log2e_v; + constexpr long double ld2 = std::numbers::log10e_v; + constexpr long double ld3 = std::numbers::pi_v; + constexpr long double ld4 = std::numbers::inv_pi_v; + constexpr long double ld5 = std::numbers::inv_sqrtpi_v; + constexpr long double ld6 = std::numbers::ln2_v; + constexpr long double ld7 = std::numbers::ln10_v; + constexpr long double ld8 = std::numbers::sqrt2_v; + constexpr long double ld9 = std::numbers::sqrt3_v; + constexpr long double ld10 = std::numbers::inv_sqrt3_v; + constexpr long double ld11 = std::numbers::egamma_v; + constexpr long double ld12 = std::numbers::phi_v; + + return 0; +} Index: libcxx/utils/generate_feature_test_macro_components.py =================================================================== --- libcxx/utils/generate_feature_test_macro_components.py +++ libcxx/utils/generate_feature_test_macro_components.py @@ -591,6 +591,12 @@ }, "headers": ["array"], }, + {"name": "__cpp_lib_math_constants", + "values": { + "c++2a": int(201907), + }, + "headers": ["numbers"], + }, ]], key=lambda tc: tc["name"]) def get_std_dialects(): Index: libcxx/www/cxx2a_status.html =================================================================== --- libcxx/www/cxx2a_status.html +++ libcxx/www/cxx2a_status.html @@ -161,7 +161,7 @@ P0408LWGEfficient Access to basic_stringbuf ’s BufferCologne P0466LWGLayout-compatibility and Pointer-interconvertibility TraitsCologne P0553LWGBit operationsCologneComplete9.0 - P0631LWGMath ConstantsCologne + P0631LWGMath ConstantsCologneComplete11.0 P0645LWGText FormattingCologne P0660LWGStop Token and Joining Thread, Rev 10Cologne P0784CWGMore constexpr containersCologne