blob: cabe844ffd449c949e5b90904185d66d3436d195 [file] [log] [blame]
Brian Silverman9d8fa392018-08-04 17:09:24 -07001// (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// Type aliasing hint. Supported since XL C++ 13.1
69#if (__IBMCPP__ >= 1310)
70# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
71#endif
72
73//
74// C++0x features
75//
76// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
77//
78#if ! __IBMCPP_AUTO_TYPEDEDUCTION
79# define BOOST_NO_CXX11_AUTO_DECLARATIONS
80# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
81#endif
82#if ! __IBMCPP_UTF_LITERAL__
83# define BOOST_NO_CXX11_CHAR16_T
84# define BOOST_NO_CXX11_CHAR32_T
85#endif
86#if ! __IBMCPP_CONSTEXPR
87# define BOOST_NO_CXX11_CONSTEXPR
88#endif
89#if ! __IBMCPP_DECLTYPE
90# define BOOST_NO_CXX11_DECLTYPE
91#else
92# define BOOST_HAS_DECLTYPE
93#endif
94#define BOOST_NO_CXX11_DECLTYPE_N3276
95#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
96#define BOOST_NO_CXX11_DELETED_FUNCTIONS
97#if ! __IBMCPP_EXPLICIT_CONVERSION_OPERATORS
98# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
99#endif
100#if ! __IBMCPP_EXTERN_TEMPLATE
101# define BOOST_NO_CXX11_EXTERN_TEMPLATE
102#endif
103#if ! __IBMCPP_VARIADIC_TEMPLATES
104// not enabled separately at this time
105# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
106#endif
107#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
108#define BOOST_NO_CXX11_LAMBDAS
109#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
110#define BOOST_NO_CXX11_NOEXCEPT
111#define BOOST_NO_CXX11_NULLPTR
112#define BOOST_NO_CXX11_RANGE_BASED_FOR
113#define BOOST_NO_CXX11_RAW_LITERALS
114#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
115#if ! __IBMCPP_RVALUE_REFERENCES
116# define BOOST_NO_CXX11_RVALUE_REFERENCES
117#endif
118#if ! __IBMCPP_SCOPED_ENUM
119# define BOOST_NO_CXX11_SCOPED_ENUMS
120#endif
121#define BOOST_NO_SFINAE_EXPR
122#define BOOST_NO_CXX11_SFINAE_EXPR
123#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
124#if ! __IBMCPP_STATIC_ASSERT
125# define BOOST_NO_CXX11_STATIC_ASSERT
126#endif
127#define BOOST_NO_CXX11_TEMPLATE_ALIASES
128#define BOOST_NO_CXX11_UNICODE_LITERALS
129#if ! __IBMCPP_VARIADIC_TEMPLATES
130# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
131#endif
132#if ! __C99_MACRO_WITH_VA_ARGS
133# define BOOST_NO_CXX11_VARIADIC_MACROS
134#endif
135#define BOOST_NO_CXX11_ALIGNAS
136#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
137#define BOOST_NO_CXX11_INLINE_NAMESPACES
138#define BOOST_NO_CXX11_REF_QUALIFIERS
139#define BOOST_NO_CXX11_FINAL
140#define BOOST_NO_CXX11_THREAD_LOCAL
141
142// C++ 14:
143#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
144# define BOOST_NO_CXX14_AGGREGATE_NSDMI
145#endif
146#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
147# define BOOST_NO_CXX14_BINARY_LITERALS
148#endif
149#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
150# define BOOST_NO_CXX14_CONSTEXPR
151#endif
152#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
153# define BOOST_NO_CXX14_DECLTYPE_AUTO
154#endif
155#if (__cplusplus < 201304) // There's no SD6 check for this....
156# define BOOST_NO_CXX14_DIGIT_SEPARATORS
157#endif
158#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
159# define BOOST_NO_CXX14_GENERIC_LAMBDAS
160#endif
161#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
162# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
163#endif
164#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
165# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
166#endif
167#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
168# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
169#endif
170
171// C++17
172#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
173# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
174#endif
175#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
176# define BOOST_NO_CXX17_INLINE_VARIABLES
177#endif
178#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
179# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
180#endif
181#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
182# define BOOST_NO_CXX17_IF_CONSTEXPR
183#endif