1 // (C) Copyright John Maddock 2001 - 2002. 2 // (C) Copyright Jens Maurer 2001. 3 // (C) Copyright David Abrahams 2002. 4 // (C) Copyright Aleksey Gurtovoy 2002. 5 // (C) Copyright Markus Schoepflin 2005. 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 // 13 // Options common to all edg based compilers. 14 // 15 // This is included from within the individual compiler mini-configs. 16 17 #ifndef __EDG_VERSION__ 18 # error This file requires that __EDG_VERSION__ be defined. 19 #endif 20 21 #if (__EDG_VERSION__ <= 238) 22 # define BOOST_NO_INTEGRAL_INT64_T 23 # define BOOST_NO_SFINAE 24 #endif 25 26 #if (__EDG_VERSION__ <= 240) 27 # define BOOST_NO_VOID_RETURNS 28 #endif 29 30 #if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) 31 # define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP 32 #endif 33 34 #if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES) 35 # define BOOST_NO_TEMPLATE_TEMPLATES 36 #endif 37 38 #if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT) 39 # define BOOST_NO_IS_ABSTRACT 40 #endif 41 42 #if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL) 43 # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL 44 #endif 45 46 // See also kai.hpp which checks a Kai-specific symbol for EH 47 # if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) 48 # define BOOST_NO_EXCEPTIONS 49 # endif 50 51 # if !defined(__NO_LONG_LONG) 52 # define BOOST_HAS_LONG_LONG 53 # else 54 # define BOOST_NO_LONG_LONG 55 # endif 56 57 // Not sure what version was the first to support #pragma once, but 58 // different EDG-based compilers (e.g. Intel) supported it for ages. 59 // Add a proper version check if it causes problems. 60 #define BOOST_HAS_PRAGMA_ONCE 61 62 // 63 // C++0x features 64 // 65 // See above for BOOST_NO_LONG_LONG 66 // 67 #if (__EDG_VERSION__ < 310) 68 # define BOOST_NO_CXX11_EXTERN_TEMPLATE 69 #endif 70 #if (__EDG_VERSION__ <= 310) 71 // No support for initializer lists 72 # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST 73 #endif 74 #if (__EDG_VERSION__ < 400) 75 # define BOOST_NO_CXX11_VARIADIC_MACROS 76 #endif 77 78 #define BOOST_NO_CXX11_AUTO_DECLARATIONS 79 #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS 80 #define BOOST_NO_CXX11_CHAR16_T 81 #define BOOST_NO_CXX11_CHAR32_T 82 #define BOOST_NO_CXX11_CONSTEXPR 83 #define BOOST_NO_CXX11_DECLTYPE 84 #define BOOST_NO_CXX11_DECLTYPE_N3276 85 #define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS 86 #define BOOST_NO_CXX11_DELETED_FUNCTIONS 87 #define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS 88 #define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS 89 #define BOOST_NO_CXX11_LAMBDAS 90 #define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS 91 #define BOOST_NO_CXX11_NOEXCEPT 92 #define BOOST_NO_CXX11_NULLPTR 93 #define BOOST_NO_CXX11_RANGE_BASED_FOR 94 #define BOOST_NO_CXX11_RAW_LITERALS 95 #define BOOST_NO_CXX11_RVALUE_REFERENCES 96 #define BOOST_NO_CXX11_SCOPED_ENUMS 97 #define BOOST_NO_SFINAE_EXPR 98 #define BOOST_NO_CXX11_SFINAE_EXPR 99 #define BOOST_NO_CXX11_STATIC_ASSERT 100 #define BOOST_NO_CXX11_TEMPLATE_ALIASES 101 #define BOOST_NO_CXX11_UNICODE_LITERALS 102 #define BOOST_NO_CXX11_VARIADIC_TEMPLATES 103 #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX 104 #define BOOST_NO_CXX11_USER_DEFINED_LITERALS 105 #define BOOST_NO_CXX11_ALIGNAS 106 #define BOOST_NO_CXX11_TRAILING_RESULT_TYPES 107 #define BOOST_NO_CXX11_INLINE_NAMESPACES 108 #define BOOST_NO_CXX11_REF_QUALIFIERS 109 #define BOOST_NO_CXX11_FINAL 110 #define BOOST_NO_CXX11_OVERRIDE 111 #define BOOST_NO_CXX11_THREAD_LOCAL 112 #define BOOST_NO_CXX11_UNRESTRICTED_UNION 113 114 // C++ 14: 115 #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) 116 # define BOOST_NO_CXX14_AGGREGATE_NSDMI 117 #endif 118 #if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304) 119 # define BOOST_NO_CXX14_BINARY_LITERALS 120 #endif 121 #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) 122 # define BOOST_NO_CXX14_CONSTEXPR 123 #endif 124 #if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) 125 # define BOOST_NO_CXX14_DECLTYPE_AUTO 126 #endif 127 #if (__cplusplus < 201304) // There's no SD6 check for this.... 128 # define BOOST_NO_CXX14_DIGIT_SEPARATORS 129 #endif 130 #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) 131 # define BOOST_NO_CXX14_GENERIC_LAMBDAS 132 #endif 133 #if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304) 134 # define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES 135 #endif 136 #if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304) 137 # define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION 138 #endif 139 #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) 140 # define BOOST_NO_CXX14_VARIABLE_TEMPLATES 141 #endif 142 143 // C++17 144 #if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) 145 # define BOOST_NO_CXX17_STRUCTURED_BINDINGS 146 #endif 147 #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) 148 # define BOOST_NO_CXX17_INLINE_VARIABLES 149 #endif 150 #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) 151 # define BOOST_NO_CXX17_FOLD_EXPRESSIONS 152 #endif 153 154 #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) 155 # define BOOST_NO_CXX17_IF_CONSTEXPR 156 #endif 157 158 #ifdef c_plusplus 159 // EDG has "long long" in non-strict mode 160 // However, some libraries have insufficient "long long" support 161 // #define BOOST_HAS_LONG_LONG 162 #endif 163