8#ifndef INCLUDED_BSLS_COMPILERFEATURES
9#define INCLUDED_BSLS_COMPILERFEATURES
1130#include <bsls_platform.h>
1134 #if __has_include(<version>)
1143#ifndef BDE_BUILD_SKIP_VERSION_CHECKS
1146 #if __cplusplus > 201703L || (defined(_MSVC_LANG) && _MSVC_LANG > 201703L)
1147 #if defined(BSLS_PLATFORM_CMP_GNU) && BSLS_PLATFORM_CMP_VERSION < 110100
1148 static_assert(0,
"At least version 11.1 is required for C++20 support "
1149 "in GNU CC g++. This check can be disabled by defining the "
1150 "'BDE_BUILD_SKIP_VERSION_CHECKS' build flag.");
1153 #if defined(BSLS_PLATFORM_CMP_CLANG) && BSLS_PLATFORM_CMP_VERSION < 150000
1154 static_assert(0,
"At least version 15.0 is required for C++20 support "
1155 "in LLVM clang. This check can be disabled by defining the "
1156 "'BDE_BUILD_SKIP_VERSION_CHECKS' build flag.");
1159 #if defined(BSLS_PLATFORM_CMP_MSVC) && BSLS_PLATFORM_CMP_VERSION < 1930
1160 static_assert(0,
"At least version 19.30 is required for C++20 support "
1161 "in MS Visual C++ (MS Visual Studio 2022). This check can be "
1162 "disabled by defining build flag 'BDE_BUILD_SKIP_VERSION_CHECKS'.");
1165 #if defined(BSLS_PLATFORM_CMP_IBM) || defined(BSLS_PLATFORM_CMP_SUN)
1166 #error "This compiler does not support C++20. This check can be " \
1167 "disabled by defining the 'BDE_BUILD_SKIP_VERSION_CHECKS' build "\
1169"http://bloomberg.github.io/bde/library_information/supported_platforms.html "\
1170 "for all compiler and other platform requirements."
1180#if defined(__cplusplus)
1181 #define BSLS_COMPILERFEATURES_CPLUSPLUS __cplusplus
1183 #define BSLS_COMPILERFEATURES_CPLUSPLUS 199711L
1190#define BSLS_COMPILERFEATURES_SUPPORT_THROW_SPECIFICATIONS 1
1197#if defined(__cpp_guaranteed_copy_elision)
1198 #define BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION 1
1201#if defined(__cpp_unicode_characters) && defined(__cpp_unicode_literals)
1202 #define BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES 1
1205#if defined(__cpp_char8_t)
1206 #define BSLS_COMPILERFEATURES_SUPPORT_UTF8_CHAR_TYPE 1
1209#if defined(__cpp_hex_float)
1210 #define BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS 1
1213#if defined(__cpp_impl_coroutine) && __cpp_impl_coroutine >= 201902L
1223 #define BSLS_COMPILERFEATURES_SUPPORT_COROUTINE 1
1226#if defined(__cpp_deduction_guides) && __cpp_deduction_guides >= 201611
1227 #define BSLS_COMPILERFEATURES_SUPPORT_CTAD 1
1230#if defined(__cpp_concepts) && __cpp_concepts >= 202002L
1231 #define BSLS_COMPILERFEATURES_SUPPORT_CONCEPTS 1
1234#if defined(__cpp_impl_three_way_comparison) && \
1235 __cpp_impl_three_way_comparison >= 201907L
1236 #if defined(__cpp_lib_three_way_comparison) && \
1237 __cpp_lib_three_way_comparison >= 201907L
1238 #define BSLS_COMPILERFEATURES_SUPPORT_THREE_WAY_COMPARISON 1
1246#if (__cplusplus >= 201103L) && defined(__has_cpp_attribute)
1248 #if __has_cpp_attribute(fallthrough)
1249 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_FALLTHROUGH 1
1252 #if __has_cpp_attribute(noreturn)
1253 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_NORETURN 1
1256 #if __has_cpp_attribute(nodiscard)
1257 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_NODISCARD 1
1260 #if __has_cpp_attribute(maybe_unused)
1261 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_MAYBE_UNUSED 1
1280#if defined(BSLS_PLATFORM_CMP_GNU)
1282 #define BSLS_COMPILERFEATURES_SUPPORT_INCLUDE_NEXT 1
1284 #if BSLS_PLATFORM_CMP_VERSION >= 30300
1285 #define BSLS_COMPILERFEATURES_SUPPORT_EXTERN_TEMPLATE 1
1290 #if BSLS_PLATFORM_CMP_VERSION >= 50000
1292 #ifndef BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION
1293 #define BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION 1
1296 #define BSLS_COMPILERFEATURES_SUPPORT_HAS_INCLUDE 1
1299 #if BSLS_PLATFORM_CMP_VERSION < 120000
1300 #define BSLS_COMPILERFEATURES_INITIALIZER_LIST_LEAKS_ON_EXCEPTIONS 1
1303 #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || \
1304 (__cplusplus < 201500 && defined(__STRICT_ANSI__))
1319 #if defined(BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS)
1320 #undef BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS
1325 #if defined(__GXX_EXPERIMENTAL_CXX0X__)
1327 #if BSLS_COMPILERFEATURES_CPLUSPLUS < 201103L
1328 #undef BSLS_COMPILERFEATURES_CPLUSPLUS
1329 #define BSLS_COMPILERFEATURES_CPLUSPLUS 201103L
1332 #if BSLS_PLATFORM_CMP_VERSION >= 40800
1333 #define BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES 1
1334 #define BSLS_COMPILERFEATURES_SUPPORT_ALIGNAS 1
1336 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_NORETURN 1
1339 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR 1
1340 #define BSLS_COMPILERFEATURES_SUPPORT_DECLTYPE 1
1341 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULT_TEMPLATE_ARGS 1
1342 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS 1
1343 #define BSLS_COMPILERFEATURES_SUPPORT_DELETED_FUNCTIONS 1
1344 #define BSLS_COMPILERFEATURES_SUPPORT_ENUM_CLASS 1
1345 #define BSLS_COMPILERFEATURES_SUPPORT_FINAL 1
1346 #define BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS 1
1347 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE 1
1348 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT 1
1349 #define BSLS_COMPILERFEATURES_SUPPORT_NULLPTR 1
1350 #define BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT 1
1351 #define BSLS_COMPILERFEATURES_SUPPORT_OVERRIDE 1
1352 #define BSLS_COMPILERFEATURES_SUPPORT_RAW_STRINGS 1
1353 #define BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS 1
1354 #define BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES 1
1355 #define BSLS_COMPILERFEATURES_SUPPORT_STATIC_ASSERT 1
1356 #define BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES 1
1357 #define BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS 1
1360 #if BSLS_PLATFORM_CMP_VERSION >= 50000
1361 #define BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER 1
1367 #if BSLS_PLATFORM_CMP_VERSION >= 90000
1368 #define BSLS_COMPILERFEATURES_PP_LINE_IS_ON_FIRST 1
1371 #if __cplusplus >= 201402L
1374 #if BSLS_PLATFORM_CMP_VERSION >= 60000
1375 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR_CPP14 1
1378 #define BSLS_COMPILERFEATURES_SUPPORT_VARIABLE_TEMPLATES 1
1383 #if __cplusplus >= 201500
1385 #if BSLS_PLATFORM_CMP_VERSION >= 70000
1386 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_FALLTHROUGH 1
1387 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_MAYBE_UNUSED 1
1388 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR_CPP17 1
1389 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_VARIABLES 1
1391 #ifndef BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS
1392 #define BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS 1
1396 #undef BSLS_COMPILERFEATURES_SUPPORT_THROW_SPECIFICATIONS
1399 #if BSLS_PLATFORM_CMP_VERSION >= 70200
1402 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_IN_FNC_TYPE 1
1414#if defined(BSLS_PLATFORM_CMP_CLANG)
1416 #ifndef BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION
1417 #define BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION 1
1420 #define BSLS_COMPILERFEATURES_SUPPORT_HAS_INCLUDE 1
1422 #ifndef BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS
1423 #define BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS 1
1426 #define BSLS_COMPILERFEATURES_SUPPORT_INCLUDE_NEXT 1
1427 #define BSLS_COMPILERFEATURES_SUPPORT_EXTERN_TEMPLATE 1
1430 #if __has_feature(cxx_rvalue_references)
1431 #define BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES 1
1434 #if __has_feature(cxx_reference_qualified_functions) && \
1435 __has_feature(cxx_rvalue_references)
1436 #define BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS 1
1439 #if __has_feature(cxx_default_function_template_args)
1440 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULT_TEMPLATE_ARGS 1
1443 #if __has_feature(cxx_defaulted_functions)
1444 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS 1
1447 #if __has_feature(cxx_deleted_functions)
1448 #define BSLS_COMPILERFEATURES_SUPPORT_DELETED_FUNCTIONS 1
1451 #if __has_feature(cxx_static_assert)
1452 #define BSLS_COMPILERFEATURES_SUPPORT_STATIC_ASSERT 1
1455 #if __has_feature(cxx_inline_namespaces) || \
1456 __has_extension(cxx_inline_namespaces)
1457 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE 1
1460 #if __has_feature(cxx_variadic_templates)
1461 #define BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES 1
1465 #if __has_feature(cxx_alias_templates)
1466 #define BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES 1
1469 #if __has_feature(cxx_noexcept)
1470 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT 1
1473 #if __has_feature(cxx_raw_string_literals)
1474 #define BSLS_COMPILERFEATURES_SUPPORT_RAW_STRINGS 1
1478 #if __has_feature(cxx_constexpr)
1479 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR 1
1482 #if __has_feature(cxx_user_literals)
1483 #define BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS 1
1487 #if __has_feature(cxx_relaxed_constexpr)
1488 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR_CPP14 1
1491 #if __has_feature(cxx_explicit_conversions)
1492 #define BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT 1
1495 #if __has_feature(cxx_override_control)
1496 #define BSLS_COMPILERFEATURES_SUPPORT_FINAL 1
1497 #define BSLS_COMPILERFEATURES_SUPPORT_OVERRIDE 1
1500 #if __has_feature(cxx_nullptr)
1501 #define BSLS_COMPILERFEATURES_SUPPORT_NULLPTR 1
1505 #if __has_feature(cxx_generalized_initializers)
1506 #define BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS 1
1509 #if __has_feature(cxx_alignas)
1510 #define BSLS_COMPILERFEATURES_SUPPORT_ALIGNAS 1
1514 #if __has_feature(cxx_decltype)
1515 #define BSLS_COMPILERFEATURES_SUPPORT_DECLTYPE 1
1519 #if __has_feature(cxx_variable_templates)
1520 #define BSLS_COMPILERFEATURES_SUPPORT_VARIABLE_TEMPLATES 1
1523 #if __has_feature(cxx_attributes)
1524 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_NORETURN 1
1528 #if BSLS_COMPILERFEATURES_CPLUSPLUS < 201103L && \
1529 defined(__GXX_EXPERIMENTAL_CXX0X__)
1530 #undef BSLS_COMPILERFEATURES_CPLUSPLUS
1531 #define BSLS_COMPILERFEATURES_CPLUSPLUS 201103L
1534 #if (__cplusplus >= 201103L || \
1535 (defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(__APPLE_CC__))) \
1536 && __has_include(<type_traits>)
1537 #define BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER 1
1541 #if __cplusplus >= 201703L
1542 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR_CPP17 1
1543 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_VARIABLES 1
1544 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_IN_FNC_TYPE 1
1550 #if defined(__GXX_EXPERIMENTAL_CXX0X__) && \
1551 (!defined(__APPLE_CC__) || __APPLE_CC__ >= 6000)
1552 #define BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER 1
1566#if defined(BSLS_PLATFORM_CMP_MSVC)
1574 #if BSLS_PLATFORM_CMP_VERSION < 1900
1575 #error Earliest supported toolset version is 19.0, Visual Studio 2015
1587 #undef BSLS_COMPILERFEATURES_CPLUSPLUS
1588 #if defined(_MSVC_LANG)
1589 #define BSLS_COMPILERFEATURES_CPLUSPLUS _MSVC_LANG
1591 #define BSLS_COMPILERFEATURES_CPLUSPLUS 201103L
1594 #undef BSLS_COMPILERFEATURES_SUPPORT_THROW_SPECIFICATIONS
1600 #define BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES 1
1601 #define BSLS_COMPILERFEATURES_SUPPORT_DECLTYPE 1
1602 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULT_TEMPLATE_ARGS 1
1603 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS 1
1604 #define BSLS_COMPILERFEATURES_SUPPORT_ENUM_CLASS 1
1605 #define BSLS_COMPILERFEATURES_SUPPORT_FINAL 1
1606 #define BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS 1
1607 #define BSLS_COMPILERFEATURES_SUPPORT_NULLPTR 1
1608 #define BSLS_COMPILERFEATURES_SUPPORT_OVERRIDE 1
1609 #define BSLS_COMPILERFEATURES_SUPPORT_RAW_STRINGS 1
1610 #define BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES 1
1611 #define BSLS_COMPILERFEATURES_SUPPORT_STATIC_ASSERT 1
1612 #define BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER 1
1614 #ifndef BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION
1615 #define BSLS_COMPILERFEATURES_GUARANTEED_COPY_ELISION 1
1618 #define BSLS_COMPILERFEATURES_SUPPORT_ALIGNAS 1
1619 #define BSLS_COMPILERFEATURES_SUPPORT_DELETED_FUNCTIONS 1
1620 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT 1
1621 #define BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT 1
1622 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE 1
1623 #define BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS 1
1625 #ifndef BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES
1626 #define BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES 1
1631 #if _MSC_FULL_VER >= 190023918
1632 #define BSLS_COMPILERFEATURES_SUPPORT_VARIABLE_TEMPLATES 1
1635 #define BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES 1
1636 #define BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS 1
1638 #if BSLS_PLATFORM_CMP_VERSION >= 1910
1639 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR 1
1640 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR_CPP14 1
1642 #if BSLS_COMPILERFEATURES_CPLUSPLUS >= 201703L
1643 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_FALLTHROUGH 1
1644 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR_CPP17 1
1656 #if BSLS_PLATFORM_CMP_VERSION >= 1911
1657 #define BSLS_COMPILERFEATURES_SUPPORT_HAS_INCLUDE 1
1659 #if BSLS_COMPILERFEATURES_CPLUSPLUS >= 201703L
1660 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_MAYBE_UNUSED 1
1661 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_NODISCARD 1
1663 #if !defined(BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS)
1664 #define BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS 1
1670 #if BSLS_PLATFORM_CMP_VERSION >= 1912
1671 #if BSLS_COMPILERFEATURES_CPLUSPLUS >= 201703L
1672 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_VARIABLES
1673 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_IN_FNC_TYPE
1677 #if BSLS_PLATFORM_CMP_VERSION >= 1910 && BSLS_PLATFORM_CMP_VERSION < 1920
1679 #ifdef BSLS_COMPILERFEATURES_SUPPORT_CTAD
1680 #undef BSLS_COMPILERFEATURES_SUPPORT_CTAD
1692#if defined(BSLS_PLATFORM_CMP_IBM)
1699 #if defined(__IBMCPP_CONSTEXPR)
1700 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR 1
1703 #if defined(__IBMCPP_DECLTYPE)
1704 #define BSLS_COMPILERFEATURES_SUPPORT_DECLTYPE 1
1707 #if defined(__IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS)
1708 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS 1
1709 #define BSLS_COMPILERFEATURES_SUPPORT_DELETED_FUNCTIONS 1
1712 #if defined(__IBMCPP_EXPLICIT)
1713 #define BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT 1
1716 #if defined(__IBMCPP_EXTERN_TEMPLATE)
1717 #define BSLS_COMPILERFEATURES_SUPPORT_EXTERN_TEMPLATE 1
1720 #if defined(__IBM_INCLUDE_NEXT)
1721 #define BSLS_COMPILERFEATURES_SUPPORT_INCLUDE_NEXT 1
1724 #if defined(__IBMCPP_INLINE_NAMESPACE)
1725 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE 1
1728 #if defined(__IBMCPP_NULLPTR)
1729 #define BSLS_COMPILERFEATURES_SUPPORT_NULLPTR 1
1732 #if defined(__IBMCPP_OVERRIDE)
1733 #define BSLS_COMPILERFEATURES_SUPPORT_FINAL 1
1734 #define BSLS_COMPILERFEATURES_SUPPORT_OVERRIDE 1
1737 #if defined(__IBMCPP_RVALUE_REFERENCES)
1738 #define BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS 1
1739 #define BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES 1
1742 #if defined(__IBMCPP_STATIC_ASSERT)
1743 #define BSLS_COMPILERFEATURES_SUPPORT_STATIC_ASSERT 1
1746 #if defined(__IBMCPP_VARIADIC_TEMPLATES)
1747 #define BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES 1
1750 #if defined(__IBMC_NORETURN)
1755 #if defined(__C99_HEX_FLOAT_CONST)
1761 #if BSLS_PLATFORM_CMP_VERSION <= 0x1001
1762 #ifdef BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS
1763 #undef BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS
1765 #elif !defined(BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS)
1769 #define BSLS_COMPILERFEATURES_SUPPORT_HEXFLOAT_LITERALS 1
1802#if defined(BSLS_PLATFORM_CMP_SUN)
1812 #if __cplusplus >= 201103L
1815 #if BSLS_PLATFORM_CMP_VERSION >= 0x5130
1816 #define BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES 1
1817 #define BSLS_COMPILERFEATURES_SUPPORT_ATTRIBUTE_NORETURN 1
1818 #define BSLS_COMPILERFEATURES_SUPPORT_DECLTYPE 1
1819 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS 1
1820 #define BSLS_COMPILERFEATURES_SUPPORT_DELETED_FUNCTIONS 1
1821 #define BSLS_COMPILERFEATURES_SUPPORT_ENUM_CLASS 1
1822 #define BSLS_COMPILERFEATURES_SUPPORT_EXTERN_TEMPLATE 1
1823 #define BSLS_COMPILERFEATURES_SUPPORT_FINAL 1
1824 #define BSLS_COMPILERFEATURES_SUPPORT_INLINE_NAMESPACE 1
1825 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT 1
1826 #define BSLS_COMPILERFEATURES_SUPPORT_NULLPTR 1
1827 #define BSLS_COMPILERFEATURES_SUPPORT_OPERATOR_EXPLICIT 1
1828 #define BSLS_COMPILERFEATURES_SUPPORT_OVERRIDE 1
1829 #define BSLS_COMPILERFEATURES_SUPPORT_RAW_STRINGS 1
1830 #define BSLS_COMPILERFEATURES_SUPPORT_STATIC_ASSERT 1
1834 #if BSLS_PLATFORM_CMP_VERSION >= 0x5140
1835 #define BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS 1
1842 #define BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS 1
1847 #define BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES 1
1851 #define BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER 1
1856 #define BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES 1
1860 #define BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES 1
1862 #define BSLS_COMPILERFEATURES_SUPPORT_USER_DEFINED_LITERALS 1
1867 #if BSLS_PLATFORM_CMP_VERSION >= 0x5150
1868 #define BSLS_COMPILERFEATURES_SUPPORT_CONSTEXPR 1
1877 #define BSLS_COMPILERFEATURES_SUPPORT_DEFAULT_TEMPLATE_ARGS 1
1886 #if BSLS_PLATFORM_CMP_VERSION < 0x5160
1887 #define BSLS_COMPILERFEATURES_INITIALIZER_LIST_LEAKS_ON_EXCEPTIONS 1
1897 #if __cplusplus >= 201402L
1899 #if BSLS_PLATFORM_CMP_VERSION > 0x5150
1900 #define BSLS_COMPILERFEATURES_SUPPORT_VARIABLE_TEMPLATES 1
1924#ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_IN_FNC_TYPE
1925 #define BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES 1
1932#if defined(__cpp_lib_is_constant_evaluated)
1933 #define BSLS_COMPILERFEATURES_SUPPORT_IS_CONSTANT_EVALUATED 1
1943#if BSLS_COMPILERFEATURES_CPLUSPLUS >= 201703L
1944 #undef BSLS_COMPILERFEATURES_SUPPORT_THROW_SPECIFICATIONS
1951#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) && \
1952 !defined(BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES)
1954 #undef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
1964#if !defined(BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES)
1966 #define BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES 1
1968 #ifndef BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1969 #define BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES 1
1972 #if defined(__cplusplus) && BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1974 #define BSLS_COMPILERFEATURES_NILT BloombergLP::bsls::CompilerFeaturesNilT
1976 #define BSLS_COMPILERFEATURES_NILV BloombergLP::bsls::CompilerFeaturesNilV
1978 #define BSLS_COMPILERFEATURES_NILTR(n) BSLS_COMPILERFEATURES_NILT,
1980 #define BSLS_COMPILERFEATURES_FILLT(n) \
1981 BSLS_MACROREPEAT(n, BSLS_COMPILERFEATURES_NILTR) \
1982 BSLS_COMPILERFEATURES_NILT
1984 #define BSLS_COMPILERFEATURES_NILVR(n) BSLS_COMPILERFEATURES_NILV,
1986 #define BSLS_COMPILERFEATURES_FILLV(n) \
1987 BSLS_MACROREPEAT(n,BSLS_COMPILERFEATURES_NILVR) \
1988 BSLS_COMPILERFEATURES_NILV
1993enum CompilerFeaturesNilT { COMPILERFEATURESNILV = 0x7fff6f76 };
2001#ifndef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
2002 #define BSLS_COMPILERFEATURES_SIMULATE_FORWARD_WORKAROUND 1
2004 #ifndef BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
2005 #define BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES 1
2009#ifdef BSLS_COMPILERFEATURES_SIMULATE_FORWARD_WORKAROUND
2012 #define BSLS_COMPILERFEATURES_FORWARD_REF(T) const T&
2018 #define BSLS_COMPILERFEATURES_FORWARD(T,V) \
2019 ::BloombergLP::bslmf::Util::forward(V)
2030 #define BSLS_COMPILERFEATURES_FORWARD_REF(T) T&&
2032 #define BSLS_COMPILERFEATURES_FORWARD(T,V) \
2033 ::BloombergLP::bsls::Util::forward<T>(V)
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition bdlt_iso8601util.h:691