vacpp.hpp 6.0 KB

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