| | |
| | | |
| | | const char features[] = {"\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_aggregate_nsdmi) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_aggregate_nsdmi) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_aggregate_default_initializers\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_alias_templates) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_alias_templates) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_alias_templates\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_alignas) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_alignas) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_alignas\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_alignas) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_alignas) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_alignof\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_attributes) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_attributes) |
| | | "1" |
| | | #else |
| | | "0" |
| | |
| | | #endif |
| | | "cxx_attribute_deprecated\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_auto_type) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_auto_type) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_auto_type\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_binary_literals) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_binary_literals) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_binary_literals\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_constexpr) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_constexpr) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_constexpr\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_contextual_conversions) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_contextual_conversions) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_contextual_conversions\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_decltype) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_decltype) |
| | | "1" |
| | | #else |
| | | "0" |
| | |
| | | #endif |
| | | "cxx_decltype_auto\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_decltype_incomplete_return_types) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_decltype_incomplete_return_types) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_decltype_incomplete_return_types\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_default_function_template_args) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_default_function_template_args) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_default_function_template_args\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_defaulted_functions) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_defaulted_functions) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_defaulted_functions\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_defaulted_functions) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_defaulted_functions) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_defaulted_move_initializers\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_delegating_constructors) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_delegating_constructors) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_delegating_constructors\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_deleted_functions) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_deleted_functions) |
| | | "1" |
| | | #else |
| | | "0" |
| | |
| | | #endif |
| | | "cxx_digit_separators\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_enum_forward_declarations\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_explicit_conversions) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_explicit_conversions) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_explicit_conversions\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_extended_friend_declarations\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_extern_templates\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_override_control) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_override_control) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_final\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_func_identifier\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_generalized_initializers) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_generalized_initializers) |
| | | "1" |
| | | #else |
| | | "0" |
| | |
| | | #endif |
| | | "cxx_generic_lambdas\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_inheriting_constructors) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_inheriting_constructors) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_inheriting_constructors\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_inline_namespaces\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_lambdas) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_lambdas) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_lambdas\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_init_captures) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_init_captures) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_lambda_init_captures\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_local_type_template_args) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_local_type_template_args) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_local_type_template_args\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_long_long_type\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_noexcept) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_noexcept) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_noexcept\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_nonstatic_member_init) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_nonstatic_member_init) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_nonstatic_member_init\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_nullptr) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_nullptr) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_nullptr\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_override_control) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_override_control) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_override\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_range_for) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_range_for) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_range_for\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_raw_string_literals) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_raw_string_literals) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_raw_string_literals\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_reference_qualified_functions) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_reference_qualified_functions) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_reference_qualified_functions\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_relaxed_constexpr) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_relaxed_constexpr) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_relaxed_constexpr\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_return_type_deduction) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_return_type_deduction) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_return_type_deduction\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_right_angle_brackets\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_rvalue_references) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_rvalue_references) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_rvalue_references\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_sizeof_member\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_static_assert) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_static_assert) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_static_assert\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_strong_enums) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_strong_enums) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_strong_enums\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 199711L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 199711L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_template_template_parameters\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_thread_local) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_thread_local) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_thread_local\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_trailing_return) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_trailing_return) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_trailing_return_types\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_unicode_literals) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_unicode_literals) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_unicode_literals\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_generalized_initializers) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_generalized_initializers) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_uniform_initialization\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_unrestricted_unions) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_unrestricted_unions) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_unrestricted_unions\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_user_literals) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_user_literals) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_user_literals\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_variable_templates) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_variable_templates) |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_variable_templates\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus >= 201103L |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __cplusplus >= 201103L |
| | | "1" |
| | | #else |
| | | "0" |
| | | #endif |
| | | "cxx_variadic_macros\n" |
| | | "CXX_FEATURE:" |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __has_feature(cxx_variadic_templates) |
| | | #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_variadic_templates) |
| | | "1" |
| | | #else |
| | | "0" |