vacpp.hpp 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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_THREAD_LOCAL
  129. // C++ 14:
  130. #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
  131. # define BOOST_NO_CXX14_AGGREGATE_NSDMI
  132. #endif
  133. #if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
  134. # define BOOST_NO_CXX14_BINARY_LITERALS
  135. #endif
  136. #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
  137. # define BOOST_NO_CXX14_CONSTEXPR
  138. #endif
  139. #if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
  140. # define BOOST_NO_CXX14_DECLTYPE_AUTO
  141. #endif
  142. #if (__cplusplus < 201304) // There's no SD6 check for this....
  143. # define BOOST_NO_CXX14_DIGIT_SEPARATORS
  144. #endif
  145. #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
  146. # define BOOST_NO_CXX14_GENERIC_LAMBDAS
  147. #endif
  148. #if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
  149. # define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
  150. #endif
  151. #if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
  152. # define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
  153. #endif
  154. #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
  155. # define BOOST_NO_CXX14_VARIABLE_TEMPLATES
  156. #endif
  157. // C++17
  158. #if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
  159. # define BOOST_NO_CXX17_STRUCTURED_BINDINGS
  160. #endif
  161. #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
  162. # define BOOST_NO_CXX17_INLINE_VARIABLES
  163. #endif
  164. #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
  165. # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
  166. #endif
  167. #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
  168. # define BOOST_NO_CXX17_IF_CONSTEXPR
  169. #endif