1 // (C) Copyright John Maddock 2001 - 2003. 2 // (C) Copyright Toon Knapen 2001 - 2003. 3 // (C) Copyright Lie-Quan Lee 2001. 4 // (C) Copyright Markus Schoepflin 2002 - 2003. 5 // (C) Copyright Beman Dawes 2002 - 2003. 6 // Use, modification and distribution are subject to the 7 // Boost Software License, Version 1.0. (See accompanying file 8 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 10 // See http://www.boost.org for most recent version. 11 12 // Visual Age (IBM) C++ compiler setup: 13 14 #if __IBMCPP__ <= 501 15 # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS 16 # define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS 17 #endif 18 19 #if (__IBMCPP__ <= 502) 20 // Actually the compiler supports inclass member initialization but it 21 // requires a definition for the class member and it doesn't recognize 22 // it as an integral constant expression when used as a template argument. 23 # define BOOST_NO_INCLASS_MEMBER_INITIALIZATION 24 # define BOOST_NO_INTEGRAL_INT64_T 25 # define BOOST_NO_MEMBER_TEMPLATE_KEYWORD 26 #endif 27 28 #if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG) 29 # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS 30 #endif 31 32 #if (__IBMCPP__ <= 1110) 33 // XL C++ V11.1 and earlier versions may not always value-initialize 34 // a temporary object T(), when T is a non-POD aggregate class type. 35 // Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it 36 // high priority. -- Niels Dekker (LKEB), May 2010. 37 # define BOOST_NO_COMPLETE_VALUE_INITIALIZATION 38 #endif 39 40 // 41 // On AIX thread support seems to be indicated by _THREAD_SAFE: 42 // 43 #ifdef _THREAD_SAFE 44 # define BOOST_HAS_THREADS 45 #endif 46 47 #define BOOST_COMPILER "IBM Visual Age version " BOOST_STRINGIZE(__IBMCPP__) 48 49 // 50 // versions check: 51 // we don't support Visual age prior to version 5: 52 #if __IBMCPP__ < 500 53 #error "Compiler not supported or configured - please reconfigure" 54 #endif 55 // 56 // last known and checked version is 1210: 57 #if (__IBMCPP__ > 1210) 58 # if defined(BOOST_ASSERT_CONFIG) 59 # error "Unknown compiler version - please run the configure tests and report the results" 60 # endif 61 #endif 62 63 // Some versions of the compiler have issues with default arguments on partial specializations 64 #if __IBMCPP__ <= 1010 65 #define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS 66 #endif 67 68 // 69 // C++0x features 70 // 71 // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG 72 // 73 #if ! __IBMCPP_AUTO_TYPEDEDUCTION 74 # define BOOST_NO_CXX11_AUTO_DECLARATIONS 75 # define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS 76 #endif 77 #if ! __IBMCPP_UTF_LITERAL__ 78 # define BOOST_NO_CXX11_CHAR16_T 79 # define BOOST_NO_CXX11_CHAR32_T 80 #endif 81 #if ! __IBMCPP_CONSTEXPR 82 # define BOOST_NO_CXX11_CONSTEXPR 83 #endif 84 #if ! __IBMCPP_DECLTYPE 85 # define BOOST_NO_CXX11_DECLTYPE 86 #else 87 # define BOOST_HAS_DECLTYPE 88 #endif 89 #define BOOST_NO_CXX11_DECLTYPE_N3276 90 #define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS 91 #define BOOST_NO_CXX11_DELETED_FUNCTIONS 92 #if ! __IBMCPP_EXPLICIT_CONVERSION_OPERATORS 93 # define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS 94 #endif 95 #if ! __IBMCPP_EXTERN_TEMPLATE 96 # define BOOST_NO_CXX11_EXTERN_TEMPLATE 97 #endif 98 #if ! __IBMCPP_VARIADIC_TEMPLATES 99 // not enabled separately at this time 100 # define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS 101 #endif 102 #define BOOST_NO_CXX11_HDR_INITIALIZER_LIST 103 #define BOOST_NO_CXX11_LAMBDAS 104 #define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS 105 #define BOOST_NO_CXX11_NOEXCEPT 106 #define BOOST_NO_CXX11_NULLPTR 107 #define BOOST_NO_CXX11_RANGE_BASED_FOR 108 #define BOOST_NO_CXX11_RAW_LITERALS 109 #define BOOST_NO_CXX11_USER_DEFINED_LITERALS 110 #if ! __IBMCPP_RVALUE_REFERENCES 111 # define BOOST_NO_CXX11_RVALUE_REFERENCES 112 #endif 113 #if ! __IBMCPP_SCOPED_ENUM 114 # define BOOST_NO_CXX11_SCOPED_ENUMS 115 #endif 116 #define BOOST_NO_SFINAE_EXPR 117 #define BOOST_NO_CXX11_SFINAE_EXPR 118 #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX 119 #if ! __IBMCPP_STATIC_ASSERT 120 # define BOOST_NO_CXX11_STATIC_ASSERT 121 #endif 122 #define BOOST_NO_CXX11_TEMPLATE_ALIASES 123 #define BOOST_NO_CXX11_UNICODE_LITERALS 124 #if ! __IBMCPP_VARIADIC_TEMPLATES 125 # define BOOST_NO_CXX11_VARIADIC_TEMPLATES 126 #endif 127 #if ! __C99_MACRO_WITH_VA_ARGS 128 # define BOOST_NO_CXX11_VARIADIC_MACROS 129 #endif 130 #define BOOST_NO_CXX11_ALIGNAS 131 #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES 132 #define BOOST_NO_CXX11_INLINE_NAMESPACES 133 #define BOOST_NO_CXX11_REF_QUALIFIERS 134 #define BOOST_NO_CXX11_FINAL 135 #define BOOST_NO_CXX11_THREAD_LOCAL 136 137 // C++ 14: 138 #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) 139 # define BOOST_NO_CXX14_AGGREGATE_NSDMI 140 #endif 141 #if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304) 142 # define BOOST_NO_CXX14_BINARY_LITERALS 143 #endif 144 #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) 145 # define BOOST_NO_CXX14_CONSTEXPR 146 #endif 147 #if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) 148 # define BOOST_NO_CXX14_DECLTYPE_AUTO 149 #endif 150 #if (__cplusplus < 201304) // There's no SD6 check for this.... 151 # define BOOST_NO_CXX14_DIGIT_SEPARATORS 152 #endif 153 #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) 154 # define BOOST_NO_CXX14_GENERIC_LAMBDAS 155 #endif 156 #if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304) 157 # define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES 158 #endif 159 #if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304) 160 # define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION 161 #endif 162 #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) 163 # define BOOST_NO_CXX14_VARIABLE_TEMPLATES 164 #endif 165 166 // C++17 167 #if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) 168 # define BOOST_NO_CXX17_STRUCTURED_BINDINGS 169 #endif 170 #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) 171 # define BOOST_NO_CXX17_INLINE_VARIABLES 172 #endif 173 #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) 174 # define BOOST_NO_CXX17_FOLD_EXPRESSIONS 175 #endif 176