const char features[] = {"\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_alias_templates) "1" #else "0" #endif "cxx_alias_templates\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_alignas) "1" #else "0" #endif "cxx_alignof\n" "CXX_FEATURE:" #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_attributes) "1" #else "0" #endif "cxx_attributes\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_constexpr) "1" #else "0" #endif "cxx_constexpr\n" "CXX_FEATURE:" #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_decltype) "1" #else "0" #endif "cxx_decltype\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_defaulted_functions) "1" #else "0" #endif "cxx_defaulted_functions\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_delegating_constructors) "1" #else "0" #endif "cxx_delegating_constructors\n" "CXX_FEATURE:" #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_deleted_functions) "1" #else "0" #endif "cxx_deleted_functions\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_explicit_conversions) "1" #else "0" #endif "cxx_explicit_conversions\n" "CXX_FEATURE:" #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__) >= 301 && __cplusplus >= 201103L "1" #else "0" #endif "cxx_extern_templates\n" "CXX_FEATURE:" #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__) >= 301 && __cplusplus >= 201103L "1" #else "0" #endif "cxx_func_identifier\n" "CXX_FEATURE:" #if ((__clang_major__ * 100) + __clang_minor__) >= 301 && __has_feature(cxx_generalized_initializers) "1" #else "0" #endif "cxx_generalized_initializers\n" "CXX_FEATURE:" #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__) >= 301 && __cplusplus >= 201103L "1" #else "0" #endif "cxx_inline_namespaces\n" "CXX_FEATURE:" #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__) >= 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__) >= 301 && __cplusplus >= 201103L "1" #else "0" #endif "cxx_long_long_type\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_nonstatic_member_init) "1" #else "0" #endif "cxx_nonstatic_member_init\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_override_control) "1" #else "0" #endif "cxx_override\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_raw_string_literals) "1" #else "0" #endif "cxx_raw_string_literals\n" "CXX_FEATURE:" #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__) >= 301 && __cplusplus >= 201103L "1" #else "0" #endif "cxx_right_angle_brackets\n" "CXX_FEATURE:" #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__) >= 301 && __cplusplus >= 201103L "1" #else "0" #endif "cxx_sizeof_member\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_strong_enums) "1" #else "0" #endif "cxx_strong_enums\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_trailing_return) "1" #else "0" #endif "cxx_trailing_return_types\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_generalized_initializers) "1" #else "0" #endif "cxx_uniform_initialization\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_user_literals) "1" #else "0" #endif "cxx_user_literals\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_variadic_templates) "1" #else "0" #endif "cxx_variadic_templates\n" "CXX_FEATURE:" #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 && __cplusplus > 201103L "1" #else "0" #endif "cxx_attribute_deprecated\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_contextual_conversions) "1" #else "0" #endif "cxx_contextual_conversions\n" "CXX_FEATURE:" #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus > 201103L "1" #else "0" #endif "cxx_decltype_auto\n" "CXX_FEATURE:" #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus > 201103L "1" #else "0" #endif "cxx_digit_separators\n" "CXX_FEATURE:" #if ((__clang_major__ * 100) + __clang_minor__) >= 304 && __cplusplus > 201103L "1" #else "0" #endif "cxx_generic_lambdas\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_relaxed_constexpr) "1" #else "0" #endif "cxx_relaxed_constexpr\n" "CXX_FEATURE:" #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__) >= 301 && __has_feature(cxx_variable_templates) "1" #else "0" #endif "cxx_variable_templates\n" }; int main(int argc, char** argv) { (void)argv; return features[argc]; }