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_UNIFIED_INITIALIZATION_SYNTAX 118 #if ! __IBMCPP_STATIC_ASSERT 119 # define BOOST_NO_CXX11_STATIC_ASSERT 120 #endif 121 #define BOOST_NO_CXX11_TEMPLATE_ALIASES 122 #define BOOST_NO_CXX11_UNICODE_LITERALS 123 #if ! __IBMCPP_VARIADIC_TEMPLATES 124 # define BOOST_NO_CXX11_VARIADIC_TEMPLATES 125 #endif 126 #if ! __C99_MACRO_WITH_VA_ARGS 127 # define BOOST_NO_CXX11_VARIADIC_MACROS 128 #endif 129 #define BOOST_NO_CXX11_ALIGNAS 130 #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES 131 #define BOOST_NO_CXX11_INLINE_NAMESPACES 132 #define BOOST_NO_CXX11_REF_QUALIFIERS 133 #define BOOST_NO_CXX11_FINAL 134 135 // C++ 14: 136 #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) 137 # define BOOST_NO_CXX14_AGGREGATE_NSDMI 138 #endif 139 #if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304) 140 # define BOOST_NO_CXX14_BINARY_LITERALS 141 #endif 142 #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) 143 # define BOOST_NO_CXX14_CONSTEXPR 144 #endif 145 #if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) 146 # define BOOST_NO_CXX14_DECLTYPE_AUTO 147 #endif 148 #if (__cplusplus < 201304) // There's no SD6 check for this.... 149 # define BOOST_NO_CXX14_DIGIT_SEPARATORS 150 #endif 151 #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) 152 # define BOOST_NO_CXX14_GENERIC_LAMBDAS 153 #endif 154 #if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304) 155 # define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES 156 #endif 157 #if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304) 158 # define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION 159 #endif 160 #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) 161 # define BOOST_NO_CXX14_VARIABLE_TEMPLATES 162 #endif 163