diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2f4c974e..00eda683 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -120,6 +120,8 @@ explicit has_clang_implicit_fallthrough ; exe config_info_printer : config_info.cpp ; explicit config_info_printer ; +exe math_info_printer : math_info.cpp ; +explicit math_info_printer ; actions print-run { @@ -135,6 +137,8 @@ rule print-run ( target : sources * : properties * ) notfile print_config_info : @print-run : config_info_printer ; explicit print_config_info ; +notfile print_math_info : @print-run : math_info_printer ; +explicit print_math_info ; # Backwards compatibility: exe config_info_travis : config_info.cpp ; diff --git a/test/config_info.cpp b/test/config_info.cpp index 2ee2b676..d4e2ca28 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1266,10 +1266,147 @@ void print_boost_macros() PRINT_MACRO(BOOST_NORETURN); } +#ifdef __has_include +#if __has_include() +# include +#endif +#endif + void print_sd6_macros() { // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0096r5.html + // Library macros are only really available if we have : + + PRINT_MACRO(__cpp_lib_addressof_constexpr); + PRINT_MACRO(__cpp_lib_allocator_traits_is_always_equal); + PRINT_MACRO(__cpp_lib_any); + PRINT_MACRO(__cpp_lib_apply); + PRINT_MACRO(__cpp_lib_array_constexpr); + PRINT_MACRO(__cpp_lib_as_const); + PRINT_MACRO(__cpp_lib_assume_aligned); + PRINT_MACRO(__cpp_lib_atomic_flag_test); + PRINT_MACRO(__cpp_lib_atomic_float); + PRINT_MACRO(__cpp_lib_atomic_is_always_lock_free); + PRINT_MACRO(__cpp_lib_atomic_lock_free_type_aliases); + PRINT_MACRO(__cpp_lib_atomic_ref); + PRINT_MACRO(__cpp_lib_atomic_shared_ptr); + PRINT_MACRO(__cpp_lib_atomic_value_initialization); + PRINT_MACRO(__cpp_lib_atomic_wait); + PRINT_MACRO(__cpp_lib_barrier); + PRINT_MACRO(__cpp_lib_bind_front); + PRINT_MACRO(__cpp_lib_bit_cast); + PRINT_MACRO(__cpp_lib_bitops); + PRINT_MACRO(__cpp_lib_bool_constant); + PRINT_MACRO(__cpp_lib_bounded_array_traits); + PRINT_MACRO(__cpp_lib_boyer_moore_searcher); + PRINT_MACRO(__cpp_lib_byte); + PRINT_MACRO(__cpp_lib_char8_t); + PRINT_MACRO(__cpp_lib_chrono); + PRINT_MACRO(__cpp_lib_chrono_udls); + PRINT_MACRO(__cpp_lib_clamp); + PRINT_MACRO(__cpp_lib_complex_udls); + PRINT_MACRO(__cpp_lib_concepts); + PRINT_MACRO(__cpp_lib_constexpr_algorithms); + PRINT_MACRO(__cpp_lib_constexpr_complex); + PRINT_MACRO(__cpp_lib_constexpr_dynamic_alloc); + PRINT_MACRO(__cpp_lib_constexpr_functional); + PRINT_MACRO(__cpp_lib_constexpr_iterator); + PRINT_MACRO(__cpp_lib_constexpr_memory); + PRINT_MACRO(__cpp_lib_constexpr_numeric); + PRINT_MACRO(__cpp_lib_constexpr_string); + PRINT_MACRO(__cpp_lib_constexpr_string_view); + PRINT_MACRO(__cpp_lib_constexpr_tuple); + PRINT_MACRO(__cpp_lib_constexpr_utility); + PRINT_MACRO(__cpp_lib_constexpr_vector); + PRINT_MACRO(__cpp_lib_coroutine); + PRINT_MACRO(__cpp_lib_destroying_delete); + PRINT_MACRO(__cpp_lib_enable_shared_from_this); + PRINT_MACRO(__cpp_lib_endian); + PRINT_MACRO(__cpp_lib_erase_if); + PRINT_MACRO(__cpp_lib_exchange_function); + PRINT_MACRO(__cpp_lib_execution); + PRINT_MACRO(__cpp_lib_filesystem); + PRINT_MACRO(__cpp_lib_format); + PRINT_MACRO(__cpp_lib_gcd_lcm); + PRINT_MACRO(__cpp_lib_generic_associative_lookup); + PRINT_MACRO(__cpp_lib_generic_unordered_lookup); + PRINT_MACRO(__cpp_lib_hardware_interference_size); + PRINT_MACRO(__cpp_lib_has_unique_object_representations); + PRINT_MACRO(__cpp_lib_hypot); + PRINT_MACRO(__cpp_lib_incomplete_container_elements); + PRINT_MACRO(__cpp_lib_int_pow2); + PRINT_MACRO(__cpp_lib_integer_comparison_functions); + PRINT_MACRO(__cpp_lib_integer_sequence); + PRINT_MACRO(__cpp_lib_integral_constant_callable); + PRINT_MACRO(__cpp_lib_interpolate); + PRINT_MACRO(__cpp_lib_invoke); + PRINT_MACRO(__cpp_lib_is_aggregate); + PRINT_MACRO(__cpp_lib_is_constant_evaluated); + PRINT_MACRO(__cpp_lib_is_final); + PRINT_MACRO(__cpp_lib_is_invocable); + PRINT_MACRO(__cpp_lib_is_layout_compatible); + PRINT_MACRO(__cpp_lib_is_nothrow_convertible); + PRINT_MACRO(__cpp_lib_is_null_pointer); + PRINT_MACRO(__cpp_lib_is_pointer_interconvertible); + PRINT_MACRO(__cpp_lib_is_swappable); + PRINT_MACRO(__cpp_lib_jthread); + PRINT_MACRO(__cpp_lib_latch); + PRINT_MACRO(__cpp_lib_launder); + PRINT_MACRO(__cpp_lib_list_remove_return_type); + PRINT_MACRO(__cpp_lib_logical_traits); + PRINT_MACRO(__cpp_lib_make_from_tuple); + PRINT_MACRO(__cpp_lib_make_reverse_iterator); + PRINT_MACRO(__cpp_lib_make_unique); + PRINT_MACRO(__cpp_lib_map_try_emplace); + PRINT_MACRO(__cpp_lib_math_constants); + PRINT_MACRO(__cpp_lib_math_special_functions); + PRINT_MACRO(__cpp_lib_memory_resource); + PRINT_MACRO(__cpp_lib_node_extract); + PRINT_MACRO(__cpp_lib_nonmember_container_access); + PRINT_MACRO(__cpp_lib_not_fn); + PRINT_MACRO(__cpp_lib_null_iterators); + PRINT_MACRO(__cpp_lib_optional); + PRINT_MACRO(__cpp_lib_parallel_algorithm); + PRINT_MACRO(__cpp_lib_polymorphic_allocator); + PRINT_MACRO(__cpp_lib_quoted_string_io); + PRINT_MACRO(__cpp_lib_ranges); + PRINT_MACRO(__cpp_lib_raw_memory_algorithms); + PRINT_MACRO(__cpp_lib_remove_cvref); + PRINT_MACRO(__cpp_lib_result_of_sfinae); + PRINT_MACRO(__cpp_lib_robust_nonmodifying_seq_ops); + PRINT_MACRO(__cpp_lib_sample); + PRINT_MACRO(__cpp_lib_scoped_lock); + PRINT_MACRO(__cpp_lib_semaphore); + PRINT_MACRO(__cpp_lib_shared_mutex); + PRINT_MACRO(__cpp_lib_shared_ptr_arrays); + PRINT_MACRO(__cpp_lib_shared_ptr_weak_type); + PRINT_MACRO(__cpp_lib_shared_timed_mutex); + PRINT_MACRO(__cpp_lib_shift); + PRINT_MACRO(__cpp_lib_smart_ptr_for_overwrite); + PRINT_MACRO(__cpp_lib_source_location); + PRINT_MACRO(__cpp_lib_span); + PRINT_MACRO(__cpp_lib_ssize); + PRINT_MACRO(__cpp_lib_starts_ends_with); + PRINT_MACRO(__cpp_lib_string_udls); + PRINT_MACRO(__cpp_lib_string_view); + PRINT_MACRO(__cpp_lib_syncbuf); + PRINT_MACRO(__cpp_lib_three_way_comparison); + PRINT_MACRO(__cpp_lib_to_address); + PRINT_MACRO(__cpp_lib_to_array); + PRINT_MACRO(__cpp_lib_to_chars); + PRINT_MACRO(__cpp_lib_transformation_trait_aliases); + PRINT_MACRO(__cpp_lib_transparent_operators); + PRINT_MACRO(__cpp_lib_tuple_element_t); + PRINT_MACRO(__cpp_lib_tuples_by_type); + PRINT_MACRO(__cpp_lib_type_identity); + PRINT_MACRO(__cpp_lib_type_trait_variable_templates); + PRINT_MACRO(__cpp_lib_uncaught_exceptions); + PRINT_MACRO(__cpp_lib_unordered_map_try_emplace); + PRINT_MACRO(__cpp_lib_unwrap_ref); + PRINT_MACRO(__cpp_lib_variant); + PRINT_MACRO(__cpp_lib_void_t); + // C++20: PRINT_MACRO(__cpp_aggregate_paren_init); PRINT_MACRO(__cpp_char8_t);