PRINT_MACRO(_WCHAR_T_DEFINED);
#endif
// MSVC macros:
+ PRINT_MACRO(_ALIGNED_NEW_SUPPORTED);
+ PRINT_MACRO(__ATOM__);
+ PRINT_MACRO(__AVX__);
+ PRINT_MACRO(__AVX2__);
+ PRINT_MACRO(_CHAR_UNSIGNED);
+ PRINT_MACRO(_CLR_VER);
+ PRINT_MACRO(_CONTROL_FLOW_GUARD);
+ PRINT_MACRO(__cplusplus_cli);
+ PRINT_MACRO(__cplusplus_winrt);
PRINT_MACRO(_CPPRTTI);
+ PRINT_MACRO(_CPPUNWIND);
PRINT_MACRO(_DLL);
+ PRINT_MACRO(_INLINE_VARIABLES_SUPPORTED);
+ PRINT_MACRO(_ISO_VOLATILE);
+ PRINT_MACRO(_M_AMD64);
+ PRINT_MACRO(_M_ARM);
+ PRINT_MACRO(_M_ARM_ARMV7VE);
+ PRINT_MACRO(_M_ARM_FP);
+ PRINT_MACRO(_M_ARM64);
+ PRINT_MACRO(_M_CEE);
+ PRINT_MACRO(_M_CEE_PURE);
+ PRINT_MACRO(_M_CEE_SAFE);
+ PRINT_MACRO(_M_FP_EXCEPT);
+ PRINT_MACRO(_M_FP_FAST);
+ PRINT_MACRO(_M_FP_PRECISE);
+ PRINT_MACRO(_M_FP_STRICT);
+ PRINT_MACRO(_M_IX86);
+ PRINT_MACRO(_M_IX86_FP);
+ PRINT_MACRO(_M_X64);
PRINT_MACRO(_M_ALPHA);
PRINT_MACRO(_M_MPPC);
PRINT_MACRO(_M_MRX000);
PRINT_MACRO(_M_PPC);
+ PRINT_MACRO(_MANAGED);
+ PRINT_MACRO(_MSC_BUILD);
PRINT_MACRO(_MFC_VER);
PRINT_MACRO(_MSC_EXTENSIONS);
PRINT_MACRO(_MSC_VER);
PRINT_MACRO(_MSC_FULL_VER);
+ PRINT_MACRO(_MSVC_LANG);
+ PRINT_MACRO(_MSVC_WARNING_LEVEL);
+ PRINT_MACRO(__MSVC_RUNTIME_CHECKS);
PRINT_MACRO(_MT);
PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
+ PRINT_MACRO(_NOEXCEPT_TYPES_SUPPORTED);
+ PRINT_MACRO(_OPENMP);
+ PRINT_MACRO(_PREFAST_);
// GNUC options:
PRINT_MACRO(__GNUC__);
PRINT_MACRO(__GNUC_MINOR__);
PRINT_MACRO(__CYGWIN__);
PRINT_MACRO(__MINGW32__);
PRINT_MACRO(__GXX_RTTI);
+ PRINT_MACRO(__alpha__);
+ PRINT_MACRO(__amd64__);
+ PRINT_MACRO(__arm__);
+ PRINT_MACRO(__aarch64__);
+ PRINT_MACRO(__bfin);
+ PRINT_MACRO(__convex__);
+ PRINT_MACRO(__epiphany__);
+ PRINT_MACRO(__hppa__);
+ PRINT_MACRO(__ia64__);
+ PRINT_MACRO(__IA64);
+ PRINT_MACRO(__IA64__);
+ PRINT_MACRO(__m68k__);
+ PRINT_MACRO(__mips__);
+ PRINT_MACRO(__powerpc);
+ PRINT_MACRO(__powerpc__);
+ PRINT_MACRO(__powerpc64__);
+ PRINT_MACRO(__POWERPC__);
+ PRINT_MACRO(__ppc__);
+ PRINT_MACRO(__ppc64__);
+ PRINT_MACRO(__PPC__);
+ PRINT_MACRO(__PPC64__);
+ PRINT_MACRO(_ARCH_PPC);
+ PRINT_MACRO(_ARCH_PPC64);
+ PRINT_MACRO(__sh__);
+ PRINT_MACRO(__370__);
+ PRINT_MACRO(__THW_370__);
// HP aCC:
PRINT_MACRO(__HP_aCC);
PRINT_MACRO(_HPACC_);
PRINT_MACRO(_FASTMD);
PRINT_MACRO(_MAXVL);
+ // clang options:
+ PRINT_MACRO(__clang__);
+ PRINT_MACRO(__clang_major__);
+ PRINT_MACRO(__clang_minor__);
+ PRINT_MACRO(__clang_version__);
+ PRINT_MACRO(__clang_patchlevel__);
+
// misc compilers not covered so far:
PRINT_MACRO(__USLC__);
PRINT_MACRO(__DECCXX);
PRINT_MACRO(__CUDACC_VER_MINOR__);
PRINT_MACRO(__CUDACC_VER_BUILD__);
PRINT_MACRO(__CUDACC_VER__);
+
+ // Android:
+ PRINT_MACRO(ANDROID);
+ PRINT_MACRO(__ANDROID__);
}
void print_stdlib_macros()
#endif
// Dinkumware options:
PRINT_MACRO(_CPPLIB_VER);
+ PRINT_MACRO(_MSVC_STL_VERSION); // VS2017 15.5+
+ PRINT_MACRO(_MSVC_STL_UPDATE); // VS2017 15.5+
PRINT_MACRO(_GLOBAL_USING);
PRINT_MACRO(_HAS_EXCEPTIONS);
PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND);
PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING);
+ // https://blogs.msdn.microsoft.com/vcblog/2016/08/12/stl-fixes-in-vs-2015-update-3/
+ PRINT_MACRO(_HAS_CXX17);
+ PRINT_MACRO(_HAS_AUTO_PTR_ETC);
+ PRINT_MACRO(_HAS_OLD_IOSTREAMS_MEMBERS);
+ PRINT_MACRO(_HAS_FUNCTION_ASSIGN);
+ PRINT_MACRO(_HAS_TR1_NAMESPACE);
+ PRINT_MACRO(_HAS_IDENTITY_STRUCT);
+ // VS2017 15.5+
+ PRINT_MACRO(_HAS_STATIC_RTTI);
+ PRINT_MACRO(_HAS_UNEXPECTED);
+ PRINT_MACRO(_HAS_STD_BYTE);
+ PRINT_MACRO(_HAS_FUNCTION_ALLOCATOR_SUPPORT);
+ PRINT_MACRO(_HAS_TR2_SYS_NAMESPACE);
+ PRINT_MACRO(_ENFORCE_MATCHING_ALLOCATORS);
+ PRINT_MACRO(_HAS_HAS_UNIQUE_OBJECT_REPRESENTATIONS);
+ PRINT_MACRO(_HAS_INLINE_VARIABLES);
+ PRINT_MACRO(_HAS_ALIGNED_NEW);
+ PRINT_MACRO(_HAS_NOEXCEPT_FUNCTION_TYPES);
+ PRINT_MACRO(_ITERATOR_DEBUG_LEVEL);
+ PRINT_MACRO(_HAS_ITERATOR_DEBUGGING);
+ PRINT_MACRO(_ITERATOR_DEBUG_ARRAY_OVERLOADS);
// Libc++:
PRINT_MACRO(_LIBCPP_VERSION);
// STLPort and generic SGI STL options:
PRINT_MACRO(_GLIBCXX_MEM_LIMITS);
PRINT_MACRO(_GLIBCXX_HOSTED);
PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS);
+ PRINT_MACRO(_GLIBCXX_RELEASE);
// Modena C++ standard library
PRINT_MACRO(MSIPL_ANSI_HEADER);
PRINT_MACRO(BOOST_HAS_NL_TYPES_H);
PRINT_MACRO(BOOST_HAS_NRVO);
PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR);
+ PRINT_MACRO(BOOST_HAS_PRAGMA_DETECT_MISMATCH);
PRINT_MACRO(BOOST_HAS_PTHREADS);
PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP);
PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE);
PRINT_MACRO(BOOST_HAS_STATIC_ASSERT);
PRINT_MACRO(BOOST_HAS_STDINT_H);
PRINT_MACRO(BOOST_HAS_STLP_USE_FACET);
- PRINT_MACRO(BOOST_HAS_TR1_ARRAY);
- PRINT_MACRO(BOOST_HAS_TR1_BIND);
- PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG);
- PRINT_MACRO(BOOST_HAS_TR1_COMPLEX_OVERLOADS);
- PRINT_MACRO(BOOST_HAS_TR1_FUNCTION);
- PRINT_MACRO(BOOST_HAS_TR1_HASH);
- PRINT_MACRO(BOOST_HAS_TR1_MEM_FN);
- PRINT_MACRO(BOOST_HAS_TR1_RANDOM);
- PRINT_MACRO(BOOST_HAS_TR1_REFERENCE_WRAPPER);
- PRINT_MACRO(BOOST_HAS_TR1_REGEX);
- PRINT_MACRO(BOOST_HAS_TR1_RESULT_OF);
- PRINT_MACRO(BOOST_HAS_TR1_SHARED_PTR);
- PRINT_MACRO(BOOST_HAS_TR1_TUPLE);
- PRINT_MACRO(BOOST_HAS_TR1_TYPE_TRAITS);
- PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_MAP);
- PRINT_MACRO(BOOST_HAS_TR1_UNORDERED_SET);
- PRINT_MACRO(BOOST_HAS_TR1_UTILITY);
PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET);
PRINT_MACRO(BOOST_HAS_UNISTD_H);
PRINT_MACRO(BOOST_HAS_VARIADIC_TMPL);
PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE);
PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE_N3276);
PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS);
+ PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_MOVES);
PRINT_MACRO(BOOST_NO_CXX11_DELETED_FUNCTIONS);
PRINT_MACRO(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS);
PRINT_MACRO(BOOST_NO_CXX11_EXTERN_TEMPLATE);
PRINT_MACRO(BOOST_NO_CXX11_HDR_CHRONO);
PRINT_MACRO(BOOST_NO_CXX11_HDR_CODECVT);
PRINT_MACRO(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_EXCEPTION);
PRINT_MACRO(BOOST_NO_CXX11_HDR_FORWARD_LIST);
PRINT_MACRO(BOOST_NO_CXX11_HDR_FUNCTIONAL);
PRINT_MACRO(BOOST_NO_CXX11_HDR_FUTURE);
PRINT_MACRO(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS);
PRINT_MACRO(BOOST_NO_CXX11_NULLPTR);
PRINT_MACRO(BOOST_NO_CXX11_NUMERIC_LIMITS);
+ PRINT_MACRO(BOOST_NO_CXX11_POINTER_TRAITS);
PRINT_MACRO(BOOST_NO_CXX11_RANGE_BASED_FOR);
PRINT_MACRO(BOOST_NO_CXX11_RAW_LITERALS);
PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS);
PRINT_MACRO(BOOST_NO_CXX11_RVALUE_REFERENCES);
PRINT_MACRO(BOOST_NO_CXX11_SCOPED_ENUMS);
+ PRINT_MACRO(BOOST_NO_CXX11_SFINAE_EXPR);
PRINT_MACRO(BOOST_NO_CXX11_SMART_PTR);
PRINT_MACRO(BOOST_NO_CXX11_STATIC_ASSERT);
PRINT_MACRO(BOOST_NO_CXX11_STD_ALIGN);
PRINT_MACRO(BOOST_NO_CXX14_HDR_SHARED_MUTEX);
PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES);
PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION);
+ PRINT_MACRO(BOOST_NO_CXX14_STD_EXCHANGE);
PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES);
+ PRINT_MACRO(BOOST_NO_CXX17_FOLD_EXPRESSIONS);
+ PRINT_MACRO(BOOST_NO_CXX17_HDR_OPTIONAL);
+ PRINT_MACRO(BOOST_NO_CXX17_HDR_STRING_VIEW);
+ PRINT_MACRO(BOOST_NO_CXX17_HDR_VARIANT);
+ PRINT_MACRO(BOOST_NO_CXX17_IF_CONSTEXPR);
+ PRINT_MACRO(BOOST_NO_CXX17_INLINE_VARIABLES);
+ PRINT_MACRO(BOOST_NO_CXX17_ITERATOR_TRAITS);
+ PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY);
PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE);
+ PRINT_MACRO(BOOST_NO_CXX17_STRUCTURED_BINDINGS);
+ PRINT_MACRO(BOOST_NO_CXX98_BINDERS);
+ PRINT_MACRO(BOOST_NO_CXX98_FUNCTION_BASE);
+ PRINT_MACRO(BOOST_NO_CXX98_RANDOM_SHUFFLE);
PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
PRINT_MACRO(BOOST_NO_EXCEPTIONS);
PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS);
PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
+ PRINT_MACRO(BOOST_NO_RESTRICT_REFERENCES);
PRINT_MACRO(BOOST_NO_RTTI);
PRINT_MACRO(BOOST_NO_SFINAE);
PRINT_MACRO(BOOST_NO_SFINAE_EXPR);
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
-
-
-
-
-
-
-
-
-
-
// END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL);
PRINT_MACRO(BOOST_MSVC);
+ PRINT_MACRO(BOOST_GCC);
+ PRINT_MACRO(BOOST_LIBSTDCXX_VERSION);
PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));
PRINT_MACRO(BOOST_CONSTEXPR);
PRINT_MACRO(BOOST_FORCEINLINE);
PRINT_MACRO(BOOST_NOINLINE);
PRINT_MACRO(BOOST_FALLTHROUGH);
+ PRINT_MACRO(BOOST_MAY_ALIAS);
+ PRINT_MACRO(BOOST_NO_MAY_ALIAS);
+ PRINT_MACRO(BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS);
+ PRINT_MACRO(BOOST_ATTRIBUTE_UNUSED);
+ PRINT_MACRO(BOOST_UNLIKELY);
+ PRINT_MACRO(BOOST_NORETURN);
+}
+
+void print_sd6_macros()
+{
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0096r5.html
+
+ // C++20:
+ PRINT_MACRO(__cpp_aggregate_paren_init);
+ PRINT_MACRO(__cpp_char8_t);
+ PRINT_MACRO(__cpp_char8_type);
+ PRINT_MACRO(__cpp_conditional_explicit);
+ PRINT_MACRO(__cpp_coroutines);
+ PRINT_MACRO(__cpp_impl_destroying_delete);
+ PRINT_MACRO(__cpp_impl_three_way_comparison);
+ PRINT_MACRO(__cpp_nontype_template_parameter_class);
+
+ // C++17:
+ PRINT_MACRO(__cpp_hex_float);
+ PRINT_MACRO(__cpp_inline_variables);
+ PRINT_MACRO(__cpp_aligned_new);
+ PRINT_MACRO(__cpp_guaranteed_copy_elision);
+ PRINT_MACRO(__cpp_noexcept_function_type);
+ PRINT_MACRO(__cpp_fold_expressions);
+ PRINT_MACRO(__cpp_capture_star_this);
+ PRINT_MACRO(__cpp_constexpr);
+ PRINT_MACRO(__cpp_if_constexpr);
+ PRINT_MACRO(__cpp_range_based_for);
+ PRINT_MACRO(__cpp_static_assert);
+ PRINT_MACRO(__cpp_deduction_guides);
+ PRINT_MACRO(__cpp_nontype_template_parameter_auto);
+ PRINT_MACRO(__cpp_namespace_attributes);
+ PRINT_MACRO(__cpp_enumerator_attributes);
+ PRINT_MACRO(__cpp_inheriting_constructors);
+ PRINT_MACRO(__cpp_variadic_using);
+ PRINT_MACRO(__cpp_structured_bindings);
+ PRINT_MACRO(__cpp_aggregate_bases);
+ PRINT_MACRO(__cpp_nontype_template_args);
+ PRINT_MACRO(__cpp_template_template_args);
+
+ // C++14:
+ PRINT_MACRO(__cpp_binary_literals);
+ PRINT_MACRO(__cpp_init_captures);
+ PRINT_MACRO(__cpp_generic_lambdas);
+ PRINT_MACRO(__cpp_sized_deallocation);
+ PRINT_MACRO(__cpp_decltype_auto);
+ PRINT_MACRO(__cpp_return_type_deduction);
+ PRINT_MACRO(__cpp_aggregate_nsdmi);
+ PRINT_MACRO(__cpp_variable_templates);
+
+ // C++11:
+ PRINT_MACRO(__cpp_unicode_characters);
+ PRINT_MACRO(__cpp_raw_strings);
+ PRINT_MACRO(__cpp_unicode_literals);
+ PRINT_MACRO(__cpp_user_defined_literals);
+ PRINT_MACRO(__cpp_threadsafe_static_init);
+ PRINT_MACRO(__cpp_lambdas);
+ PRINT_MACRO(__cpp_decltype);
+ PRINT_MACRO(__cpp_attributes);
+ PRINT_MACRO(__cpp_rvalue_references);
+ PRINT_MACRO(__cpp_variadic_templates);
+ PRINT_MACRO(__cpp_initializer_lists);
+ PRINT_MACRO(__cpp_delegating_constructors);
+ PRINT_MACRO(__cpp_nsdmi);
+ PRINT_MACRO(__cpp_ref_qualifiers);
+ PRINT_MACRO(__cpp_alias_templates);
+
+ // C++98:
+ PRINT_MACRO(__cpp_rtti);
+ PRINT_MACRO(__cpp_exceptions);
}
void print_separator()
print_platform_macros();
print_separator();
print_boost_macros();
+ print_separator();
+ print_sd6_macros();
return 0;
}