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_THREAD_LOCAL 111 112 // C++ 14: 113 #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) 114 # define BOOST_NO_CXX14_AGGREGATE_NSDMI 115 #endif 116 #if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304) 117 # define BOOST_NO_CXX14_BINARY_LITERALS 118 #endif 119 #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) 120 # define BOOST_NO_CXX14_CONSTEXPR 121 #endif 122 #if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) 123 # define BOOST_NO_CXX14_DECLTYPE_AUTO 124 #endif 125 #if (__cplusplus < 201304) // There's no SD6 check for this.... 126 # define BOOST_NO_CXX14_DIGIT_SEPARATORS 127 #endif 128 #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) 129 # define BOOST_NO_CXX14_GENERIC_LAMBDAS 130 #endif 131 #if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304) 132 # define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES 133 #endif 134 #if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304) 135 # define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION 136 #endif 137 #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) 138 # define BOOST_NO_CXX14_VARIABLE_TEMPLATES 139 #endif 140 141 // C++17 142 #if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606) 143 # define BOOST_NO_CXX17_STRUCTURED_BINDINGS 144 #endif 145 #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606) 146 # define BOOST_NO_CXX17_INLINE_VARIABLES 147 #endif 148 #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603) 149 # define BOOST_NO_CXX17_FOLD_EXPRESSIONS 150 #endif 151 152 #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606) 153 # define BOOST_NO_CXX17_IF_CONSTEXPR 154 #endif 155 156 #ifdef c_plusplus 157 // EDG has "long long" in non-strict mode 158 // However, some libraries have insufficient "long long" support 159 // #define BOOST_HAS_LONG_LONG 160 #endif 161