Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / config / test / config_info.cpp
1 //  Boost config.hpp configuration test program file  -----------------------//
2
3 //  (C) Copyright John Maddock 2001 - 2003. 
4 //  (C) Copyright Jens Maurer 2001. 
5 //  (C) Copyright Peter Dimov 2001. 
6 //  (C) Copyright Darin Adler 2001. 
7 //  (C) Copyright Beman Dawes 2002. 
8 //  Use, modification and distribution are subject to the 
9 //  Boost Software License, Version 1.0. (See accompanying file 
10 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
11
12 //  See http://www.boost.org/libs/config for most recent version.
13 //
14 //  Revision $Id$
15 //
16
17 #include <boost/config.hpp>
18 #include <boost/version.hpp>
19 #include <iostream>
20 #include <iomanip>
21 #include <string.h>
22 #include <limits.h>
23 #include <stdlib.h>
24 #include <stddef.h>
25
26 #ifdef BOOST_HAS_UNISTD_H
27 #include <unistd.h>
28 #endif
29
30 #if defined(__MINGW32__)
31 #  include <_mingw.h>
32 #endif
33
34 static unsigned int indent = 4;
35 static unsigned int width = 40;
36
37 using std::cout;
38 using std::istream;
39
40 void print_macro(const char* name, const char* value)
41 {
42    // if name == value+1 then then macro is not defined,
43    // in which case we don't print anything:
44    if(0 != strcmp(name, value+1))
45    {
46       for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
47       std::cout << std::setw(width);
48       cout.setf(istream::left, istream::adjustfield);
49       std::cout << name;
50       if(value[1])
51       {
52          // macro has a value:
53          std::cout << value << "\n";
54       }
55       else
56       {
57          // macro is defined but has no value:
58          std::cout << " [no value]\n";
59       }
60    }
61 }
62
63 #define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X))
64
65 template <class T>
66 void print_expression(const char* expression, T val)
67 {
68    for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
69    std::cout << std::setw(width);
70    std::cout.setf(istream::left, istream::adjustfield);
71    std::cout << expression << "=" << val << std::endl;
72 }
73
74 #define PRINT_EXPRESSION(E) print_expression(#E, E);
75
76 template <class T>
77 void print_byte_order(const char* what, T /* t */ )
78 {
79    T val = 0;
80    unsigned i;
81    for(i = 1; i < sizeof(T); ++i)
82    {
83       val |= (CHAR_BIT * static_cast<T>(i)) << (CHAR_BIT * static_cast<T>(i));
84    }
85    const char* p = reinterpret_cast<const char*>(&val);
86
87    for(i = 0; i < indent; ++i) std::cout.put(' ');
88    std::cout << std::setw(width);
89    std::cout.setf(istream::left, istream::adjustfield);
90    std::cout << what << "=";
91    for(i = 0; i < sizeof(T); ++i)
92    {
93       std::cout << (int)p[i] << " ";
94    }
95    std::cout << std::endl;
96 }
97
98 #define PRINT_ORDER(T) print_byte_order(BOOST_STRINGIZE(byte order for type T), T())
99
100 template <class T>
101 void print_sign(const char* what, T t)
102 {
103    t = static_cast<T>(-1);  // cast suppresses warnings
104    for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
105    std::cout << "Type " << what << " is " << ((t > 0) ? "unsigned" : "signed") << std::endl;
106 }
107
108 #define PRINT_SIGN(T) print_sign(#T, T())
109
110
111 void print_compiler_macros()
112 {
113    std::cout << BOOST_COMPILER << "\n";
114    // Borland options:
115   PRINT_MACRO(__BORLANDC__);
116   PRINT_MACRO(__CDECL__);
117   PRINT_MACRO(_CHAR_UNSIGNED);
118   PRINT_MACRO(__CODEGUARD__);
119   PRINT_MACRO(__CONSOLE__);
120   PRINT_MACRO(_CPPUNWIND);
121   PRINT_MACRO(__cplusplus);
122   PRINT_MACRO(__FLAT__);
123   PRINT_MACRO(__FUNC__);
124   PRINT_MACRO(_M_IX86);
125   PRINT_MACRO(__MSDOS__);
126   PRINT_MACRO(__MT__ );
127   PRINT_MACRO(__PASCAL__);
128   PRINT_MACRO(__STDC__);
129   PRINT_MACRO(__TLS__);
130   PRINT_MACRO(_WCHAR_T);
131   PRINT_MACRO(_Windows);
132   PRINT_MACRO(__WIN32__);
133   PRINT_MACRO(_WIN32);
134   PRINT_MACRO(_WIN64);
135   PRINT_MACRO(_WIN32_WCE);
136   PRINT_MACRO(WIN32);
137   PRINT_MACRO(_RTLDLL);
138   PRINT_MACRO(__DEBUG);
139
140 // Internal MSVC 7 error workaround (Peter Dimov)
141
142 #ifndef _NATIVE_WCHAR_T_DEFINED
143   PRINT_MACRO(_WCHAR_T_DEFINED);
144 #endif
145   // MSVC macros:
146   PRINT_MACRO(_ALIGNED_NEW_SUPPORTED);
147   PRINT_MACRO(__ATOM__);
148   PRINT_MACRO(__AVX__);
149   PRINT_MACRO(__AVX2__);
150   PRINT_MACRO(_CHAR_UNSIGNED);
151   PRINT_MACRO(_CLR_VER);
152   PRINT_MACRO(_CONTROL_FLOW_GUARD);
153   PRINT_MACRO(__cplusplus_cli);
154   PRINT_MACRO(__cplusplus_winrt);
155   PRINT_MACRO(_CPPRTTI);
156   PRINT_MACRO(_CPPUNWIND);
157   PRINT_MACRO(_DLL);
158   PRINT_MACRO(_INLINE_VARIABLES_SUPPORTED);
159   PRINT_MACRO(_ISO_VOLATILE);
160   PRINT_MACRO(_M_AMD64);
161   PRINT_MACRO(_M_ARM);
162   PRINT_MACRO(_M_ARM_ARMV7VE);
163   PRINT_MACRO(_M_ARM_FP);
164   PRINT_MACRO(_M_ARM64);
165   PRINT_MACRO(_M_CEE);
166   PRINT_MACRO(_M_CEE_PURE);
167   PRINT_MACRO(_M_CEE_SAFE);
168   PRINT_MACRO(_M_FP_EXCEPT);
169   PRINT_MACRO(_M_FP_FAST);
170   PRINT_MACRO(_M_FP_PRECISE);
171   PRINT_MACRO(_M_FP_STRICT);
172   PRINT_MACRO(_M_IX86);
173   PRINT_MACRO(_M_IX86_FP);
174   PRINT_MACRO(_M_X64);
175   PRINT_MACRO(_M_ALPHA);
176   PRINT_MACRO(_M_MPPC);
177   PRINT_MACRO(_M_MRX000);
178   PRINT_MACRO(_M_PPC);
179   PRINT_MACRO(_MANAGED);
180   PRINT_MACRO(_MSC_BUILD);
181   PRINT_MACRO(_MFC_VER);
182   PRINT_MACRO(_MSC_EXTENSIONS);
183   PRINT_MACRO(_MSC_VER);
184   PRINT_MACRO(_MSC_FULL_VER);
185   PRINT_MACRO(_MSVC_LANG);
186   PRINT_MACRO(_MSVC_WARNING_LEVEL);
187   PRINT_MACRO(__MSVC_RUNTIME_CHECKS);
188   PRINT_MACRO(_MT);
189   PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
190   PRINT_MACRO(_NOEXCEPT_TYPES_SUPPORTED);
191   PRINT_MACRO(_OPENMP);
192   PRINT_MACRO(_PREFAST_);
193   // GNUC options:
194   PRINT_MACRO(__GNUC__);
195   PRINT_MACRO(__GNUC_MINOR__);
196   PRINT_MACRO(__GNUC_PATCHLEVEL__);
197   PRINT_MACRO(__STDC_VERSION__);
198   PRINT_MACRO(__GNUG__);
199   PRINT_MACRO(__STRICT_ANSI__);
200   PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__);
201   PRINT_MACRO(__VERSION__);
202   PRINT_MACRO(__OPTIMIZE__);
203   PRINT_MACRO(__CHAR_UNSIGNED__);
204   PRINT_MACRO(__REGISTER_PREFIX__);
205   PRINT_MACRO(__USER_LABEL_PREFIX__);
206   PRINT_MACRO(__GNUPRO__);
207   PRINT_MACRO(__EXCEPTIONS);
208   PRINT_MACRO(__FreeBSD__);
209   PRINT_MACRO(__FreeBSD_cc_version);
210   PRINT_MACRO(__ELF__);
211   PRINT_MACRO(__GNUPRO__);
212   PRINT_MACRO(unix);
213   PRINT_MACRO(bsd);
214   PRINT_MACRO(vax);
215   PRINT_MACRO(mc68000);
216   PRINT_MACRO(m68k);
217   PRINT_MACRO(M68020);
218   PRINT_MACRO(_AM29K);
219   PRINT_MACRO(ns32000);
220   PRINT_MACRO(sun);
221   PRINT_MACRO(pyr);
222   PRINT_MACRO(sequent);
223   PRINT_MACRO(__i386__);
224   PRINT_MACRO(__sparc);
225   PRINT_MACRO(__sparc__);
226   PRINT_MACRO(__powerpc__);
227   PRINT_MACRO(__hppa);
228   PRINT_MACRO(__CYGWIN__);
229   PRINT_MACRO(__MINGW32__);
230   PRINT_MACRO(__GXX_RTTI);
231   PRINT_MACRO(__alpha__);
232   PRINT_MACRO(__amd64__);
233   PRINT_MACRO(__arm__);
234   PRINT_MACRO(__aarch64__);
235   PRINT_MACRO(__bfin);
236   PRINT_MACRO(__convex__);
237   PRINT_MACRO(__epiphany__);
238   PRINT_MACRO(__hppa__);
239   PRINT_MACRO(__ia64__);
240   PRINT_MACRO(__IA64);
241   PRINT_MACRO(__IA64__);
242   PRINT_MACRO(__m68k__);
243   PRINT_MACRO(__mips__);
244   PRINT_MACRO(__powerpc);
245   PRINT_MACRO(__powerpc__);
246   PRINT_MACRO(__powerpc64__);
247   PRINT_MACRO(__POWERPC__);
248   PRINT_MACRO(__ppc__);
249   PRINT_MACRO(__ppc64__);
250   PRINT_MACRO(__PPC__);
251   PRINT_MACRO(__PPC64__);
252   PRINT_MACRO(_ARCH_PPC);
253   PRINT_MACRO(_ARCH_PPC64);
254   PRINT_MACRO(__sh__);
255   PRINT_MACRO(__370__);
256   PRINT_MACRO(__THW_370__);
257   // HP aCC:
258   PRINT_MACRO(__HP_aCC);
259   PRINT_MACRO(_HPACC_);
260   PRINT_MACRO(__LP64__);
261   PRINT_MACRO(__RISC2_0__);
262   PRINT_MACRO(__STDCPP__);
263   PRINT_MACRO(__hppa);
264   PRINT_MACRO(__hpux);
265   PRINT_MACRO(__hp9000s800);
266   PRINT_MACRO(__hp9000s700);
267   PRINT_MACRO(_PA_RISC1_1);
268   PRINT_MACRO(__HPUX_SOURCE);
269   PRINT_MACRO(_INCLUDE__STDC_A1_SOURCE);
270   // SGI IRIX:
271   PRINT_MACRO(__sgi);
272   PRINT_MACRO(_COMPILER_VERSION);
273   // Sunpro:
274   PRINT_MACRO(__SUNPRO_CC);
275   PRINT_MACRO(__SUNPRO_CC_COMPAT);
276   PRINT_MACRO(__BUILTIN_VA_ARG_INCR);
277   PRINT_MACRO(__sun);
278   PRINT_MACRO(__SVR4);
279   PRINT_MACRO(__unix);
280   PRINT_MACRO(__sparcv9);
281   PRINT_MACRO(__i386);
282   PRINT_MACRO(i386);
283   // Metrowerks
284   PRINT_MACRO(__MWERKS__);
285   PRINT_MACRO(__MSL__);
286   PRINT_MACRO(__MSL_CPP__);
287   PRINT_MACRO(__A5__);
288   PRINT_MACRO(__embedded_cplusplus);
289   PRINT_MACRO(__fourbyteints__);
290   PRINT_MACRO(__IEEEdoubles__);
291   PRINT_MACRO(__MC68K__);
292   PRINT_MACRO(__MC68020__);
293   PRINT_MACRO(__MC68881__);
294   PRINT_MACRO(__MIPS__);
295   PRINT_MACRO(__MIPS_ISA2__);
296   PRINT_MACRO(__MIPS_ISA3__);
297   PRINT_MACRO(__MIPS_ISA4__);
298   PRINT_MACRO(__MWBROWSER__);
299   PRINT_MACRO(__profile__);
300   PRINT_MACRO(__powerc);
301   PRINT_MACRO(_powerc);
302   PRINT_MACRO(__POWERPC__);
303   PRINT_MACRO(macintosh);
304   PRINT_MACRO(__MACH__);
305   PRINT_MACRO(__APPLE__);
306   PRINT_MACRO(__APPLE_CC__);
307   // MPW (MrCpp and SCpp)
308   PRINT_MACRO(__MRC__);
309   PRINT_MACRO(__SC__);
310   PRINT_MACRO(__FPCE__);
311   PRINT_MACRO(__FPCE_IEEE__);
312   PRINT_MACRO(MPW_CPLUS);
313   PRINT_MACRO(MPW_C);
314   PRINT_MACRO(__MC601);
315   PRINT_MACRO(__POWERPC);
316   PRINT_MACRO(__useAppleExts__);
317   PRINT_MACRO(powerc);
318   PRINT_MACRO(MC68000);
319   PRINT_MACRO(THINK_PLUS);
320   PRINT_MACRO(mc68881);
321   PRINT_MACRO(__FAR_CODE__);
322   PRINT_MACRO(__FAR_DATA__);
323   PRINT_MACRO(__CFM68K__);
324   // EDG
325   PRINT_MACRO(__EDG__);
326   PRINT_MACRO(__EDG_VERSION__);
327   PRINT_MACRO(c_plusplus);       // indication for strict mode
328   PRINT_MACRO(_BOOL);
329   PRINT_MACRO(_EXPLICIT);
330   PRINT_MACRO(__SIGNED_CHARS__);
331   PRINT_MACRO(_TYPENAME);
332   PRINT_MACRO(_WCHAR_T);
333   PRINT_MACRO(__ARRAY_OPERATORS);
334   PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION);
335   PRINT_MACRO(__EDG_IMPLICIT_USING_STD);
336   PRINT_MACRO(__EDG_RUNTIME_USES_NAMESPACES);
337   PRINT_MACRO(__BOOL_DEFINED);
338   PRINT_MACRO(__RTTI);
339   PRINT_MACRO(__PLACEMENT_DELETE);
340   PRINT_MACRO(__NO_LONG_LONG);
341
342   // Intel options:
343   PRINT_MACRO(__INTEL__);
344   PRINT_MACRO(__ICC);
345   PRINT_MACRO(__ICL);
346   PRINT_MACRO(__ECC);
347   PRINT_MACRO(__INTEL_COMPILER);
348   PRINT_MACRO(__INITIAL_POINTER_SIZE);
349   PRINT_MACRO(_INTEGRAL_MAX_BITS);
350   PRINT_MACRO(__INTEL_COMPILER_BUILD_DATE);
351   PRINT_MACRO(__INTEL_MS_COMPAT_LEVEL);
352   PRINT_MACRO(__LONG_DOUBLE_SIZE__);
353   PRINT_MACRO(_M_X64);
354   PRINT_MACRO(_OPENMP);
355   PRINT_MACRO(_OPENMPT);
356   PRINT_MACRO(_PGO_INSTRUMENT);
357   PRINT_MACRO(__QMSPP_); 
358   PRINT_MACRO(__INTEL_RTTI__);
359   PRINT_MACRO(__INTEL_CXX11_MODE__);
360
361   // Cray options:
362   PRINT_MACRO(_CRAYC); 
363   PRINT_MACRO(_RELEASE); 
364   PRINT_MACRO(cray); 
365   PRINT_MACRO(CRAY); 
366   PRINT_MACRO(CRAY1); 
367   PRINT_MACRO(_CRAY1); 
368   PRINT_MACRO(_CRAYMPP); 
369   PRINT_MACRO(_CRAYT3E); 
370   PRINT_MACRO(_CRAYIEEE); 
371   PRINT_MACRO(_ADDR32); 
372   PRINT_MACRO(_ADDR64); 
373   PRINT_MACRO(_LD64); 
374   PRINT_MACRO(_FASTMD); 
375   PRINT_MACRO(_MAXVL); 
376
377   // clang options:
378   PRINT_MACRO(__clang__); 
379   PRINT_MACRO(__clang_major__);
380   PRINT_MACRO(__clang_minor__);
381   PRINT_MACRO(__clang_version__);
382   PRINT_MACRO(__clang_patchlevel__);
383
384   // misc compilers not covered so far:
385   PRINT_MACRO(__USLC__);
386   PRINT_MACRO(__DECCXX);
387   PRINT_MACRO(__IBMCPP__);
388   PRINT_MACRO(_REENTRANT);
389   PRINT_MACRO(_PTHREADS);
390   PRINT_MACRO(__STDC_HOSTED__);
391   PRINT_MACRO(__COMO__);
392   PRINT_MACRO(__COMO_VERSION__);
393   PRINT_MACRO(__DM__);
394   PRINT_MACRO(__osf__);
395   PRINT_MACRO(__OSF__);
396   PRINT_MACRO(__QNXNTO__);
397   PRINT_MACRO(__QNX__);
398   PRINT_MACRO(_NTO_VERSION);
399   PRINT_MACRO(__OPEN64__);
400   PRINT_MACRO(__open64);
401   PRINT_MACRO(__NVCC__);
402   PRINT_MACRO(__CUDACC__);
403   PRINT_MACRO(__CUDACC_RDC__);
404   PRINT_MACRO(__CUDACC_VER_MAJOR__);
405   PRINT_MACRO(__CUDACC_VER_MINOR__);
406   PRINT_MACRO(__CUDACC_VER_BUILD__);
407   PRINT_MACRO(__CUDACC_VER__);
408
409   // Android:
410   PRINT_MACRO(ANDROID);
411   PRINT_MACRO(__ANDROID__);
412 }
413
414 void print_stdlib_macros()
415 {
416    std::cout << BOOST_STDLIB << std::endl;
417    #ifdef _RWSTD_VER
418    // Rogue Wave 2.x config options:
419    PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
420    PRINT_MACRO(_RWSTD_ALLOCATOR);
421    PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED);
422    PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED);
423    PRINT_MACRO(_RWSTD_BOUNDS_CHECKING);
424    PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE);
425    PRINT_MACRO(_RWSTD_DEFAULT_PRECISION);
426    PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED);
427    PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD);
428    PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED);
429    PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT);
430    PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS);
431    PRINT_MACRO(_RWSTD_MESSAGE);
432    PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT);
433    PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF);
434    PRINT_MACRO(_RWSTD_NO_ARG_MATCH);
435    PRINT_MACRO(_RWSTD_NO_BAD_CAST);
436    PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH);
437    PRINT_MACRO(_RWSTD_NO_BOOL);
438    PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR);
439    PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS);
440    PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC);
441    PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
442    PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS);
443    PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF);
444    PRINT_MACRO(_RWSTD_NO_CONST_INST);
445    PRINT_MACRO(_RWSTD_NO_CTOR_RETURN);
446    PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM);
447    PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
448    PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN);
449    PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN);
450    PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF);
451    PRINT_MACRO(_RWSTD_NO_EX_SPEC);
452    PRINT_MACRO(_RWSTD_NO_EXCEPTIONS);
453    PRINT_MACRO(_RWSTD_NO_EXPLICIT);
454    PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG);
455    PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
456    PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION);
457    PRINT_MACRO(_RWSTD_NO_EXTENSION);
458    PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS);
459    PRINT_MACRO(_RWSTD_NO_FPOS_T);
460    PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES);
461    PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC);
462    PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY);
463    PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ);
464    PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS);
465    PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
466    PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF);
467    PRINT_MACRO(_RWSTD_NO_LDIV);
468    PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE);
469    PRINT_MACRO(_RWSTD_NO_LOCALE);
470    PRINT_MACRO(_RWSTD_NO_LONG_NAME);
471    PRINT_MACRO(_RWSTD_NO_LONGDOUBLE);
472    PRINT_MACRO(_RWSTD_NO_MBSTATE_T);
473    PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES);
474    PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES);
475    PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM);
476    PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR);
477    PRINT_MACRO(_RWSTD_NO_MEMMOVE);
478    PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY);
479    PRINT_MACRO(_RWSTD_NO_MUTABLE);
480    PRINT_MACRO(_RWSTD_NO_NAME_INJECTION);
481    PRINT_MACRO(_RWSTD_NO_NAMESPACE);
482    PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES);
483    PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS);
484    PRINT_MACRO(_RWSTD_NO_NEW_DECL);
485    PRINT_MACRO(_RWSTD_NO_NEW_HEADER);
486    PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX);
487    PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN);
488    PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS);
489    PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
490    PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW);
491    PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
492    PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR);
493    PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD);
494    PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE);
495    PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
496    PRINT_MACRO(_RWSTD_NO_STATIC_CAST);
497    PRINT_MACRO(_RWSTD_NO_STATIC_DEF);
498    PRINT_MACRO(_RWSTD_NO_STATIC_DEF2);
499    PRINT_MACRO(_RWSTD_NO_STATIC_DEF3);
500    PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF);
501    PRINT_MACRO(_RWSTD_NO_STI_SIMPLE);
502    PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE);
503    PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE);
504    PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC);
505    PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
506    PRINT_MACRO(_RWSTD_NO_SWPRINTF);
507    PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
508    PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE);
509    PRINT_MACRO(_RWSTD_NO_THREADS);
510    PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW);
511    PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED);
512    PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST);
513    PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD);
514    PRINT_MACRO(_RWSTD_NO_TYPENAME);
515    PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND);
516    PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF);
517    PRINT_MACRO(_RWSTD_NO_WCHAR_H);
518    PRINT_MACRO(_RWSTD_NO_WCTYPE_H);
519    PRINT_MACRO(_RWSTD_NO_WIDE_CHAR);
520    PRINT_MACRO(_RWSTD_NO_WINT_TYPE);
521    PRINT_MACRO(_RWSTD_NO_WSTR);
522    PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
523    PRINT_MACRO(_RWSTD_POSIX_D10_THREADS);
524    PRINT_MACRO(_RWSTD_POSIX_THREADS);
525    PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP);
526    PRINT_MACRO(_RWSTD_SOLARIS_THREADS);
527    PRINT_MACRO(_RWSTD_STRUCT_TM_TZ);
528    PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM);
529    #elif defined(__STD_RWCOMPILER_H__)
530    // Rogue Wave 1.x std lib:
531    PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
532    PRINT_MACRO(RWSTD_ALLOCATOR);
533    PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED);
534    PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED);
535    PRINT_MACRO(RWSTD_BOUNDS_CHECKING);
536    PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE);
537    PRINT_MACRO(RWSTD_DEFAULT_PRECISION);
538    PRINT_MACRO(RWSTD_EXCEPTION_DEFINED);
539    PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD);
540    PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED);
541    PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT);
542    PRINT_MACRO(RWSTD_LOCALIZED_ERRORS);
543    PRINT_MACRO(RWSTD_MESSAGE);
544    PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT);
545    PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF);
546    PRINT_MACRO(RWSTD_NO_ARG_MATCH);
547    PRINT_MACRO(RWSTD_NO_BAD_CAST);
548    PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH);
549    PRINT_MACRO(RWSTD_NO_BOOL);
550    PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR);
551    PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS);
552    PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC);
553    PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
554    PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS);
555    PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF);
556    PRINT_MACRO(RWSTD_NO_CONST_INST);
557    PRINT_MACRO(RWSTD_NO_CTOR_RETURN);
558    PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM);
559    PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
560    PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN);
561    PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN);
562    PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF);
563    PRINT_MACRO(RWSTD_NO_EX_SPEC);
564    PRINT_MACRO(RWSTD_NO_EXCEPTIONS);
565    PRINT_MACRO(RWSTD_NO_EXPLICIT);
566    PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG);
567    PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
568    PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION);
569    PRINT_MACRO(RWSTD_NO_EXTENSION);
570    PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS);
571    PRINT_MACRO(RWSTD_NO_FPOS_T);
572    PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES);
573    PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC);
574    PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY);
575    PRINT_MACRO(RWSTD_NO_GLOBAL_TZ);
576    PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS);
577    PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
578    PRINT_MACRO(RWSTD_NO_INT_TYPEDEF);
579    PRINT_MACRO(RWSTD_NO_LDIV);
580    PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE);
581    PRINT_MACRO(RWSTD_NO_LOCALE);
582    PRINT_MACRO(RWSTD_NO_LONG_NAME);
583    PRINT_MACRO(RWSTD_NO_LONGDOUBLE);
584    PRINT_MACRO(RWSTD_NO_MBSTATE_T);
585    PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES);
586    PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES);
587    PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM);
588    PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR);
589    PRINT_MACRO(RWSTD_NO_MEMMOVE);
590    PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY);
591    PRINT_MACRO(RWSTD_NO_MUTABLE);
592    PRINT_MACRO(RWSTD_NO_NAME_INJECTION);
593    PRINT_MACRO(RWSTD_NO_NAMESPACE);
594    PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES);
595    PRINT_MACRO(RWSTD_NO_NEW_BRACKETS);
596    PRINT_MACRO(RWSTD_NO_NEW_DECL);
597    PRINT_MACRO(RWSTD_NO_NEW_HEADER);
598    PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX);
599    PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN);
600    PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS);
601    PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
602    PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW);
603    PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
604    PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR);
605    PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD);
606    PRINT_MACRO(RWSTD_NO_RET_TEMPLATE);
607    PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
608    PRINT_MACRO(RWSTD_NO_STATIC_CAST);
609    PRINT_MACRO(RWSTD_NO_STATIC_DEF);
610    PRINT_MACRO(RWSTD_NO_STATIC_DEF2);
611    PRINT_MACRO(RWSTD_NO_STATIC_DEF3);
612    PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF);
613    PRINT_MACRO(RWSTD_NO_STI_SIMPLE);
614    PRINT_MACRO(RWSTD_NO_STI_TEMPLATE);
615    PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE);
616    PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC);
617    PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
618    PRINT_MACRO(RWSTD_NO_SWPRINTF);
619    PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
620    PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE);
621    PRINT_MACRO(RWSTD_NO_THREADS);
622    PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW);
623    PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED);
624    PRINT_MACRO(RWSTD_NO_TYPEDEF_INST);
625    PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD);
626    PRINT_MACRO(RWSTD_NO_TYPENAME);
627    PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND);
628    PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF);
629    PRINT_MACRO(RWSTD_NO_WCHAR_H);
630    PRINT_MACRO(RWSTD_NO_WCTYPE_H);
631    PRINT_MACRO(RWSTD_NO_WIDE_CHAR);
632    PRINT_MACRO(RWSTD_NO_WINT_TYPE);
633    PRINT_MACRO(RWSTD_NO_WSTR);
634    PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
635    PRINT_MACRO(RWSTD_POSIX_D10_THREADS);
636    PRINT_MACRO(RWSTD_POSIX_THREADS);
637    PRINT_MACRO(RWSTD_REQUIRES_IEEEFP);
638    PRINT_MACRO(RWSTD_SOLARIS_THREADS);
639    PRINT_MACRO(RWSTD_STRUCT_TM_TZ);
640    PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM);
641    #endif
642    // Dinkumware options:
643    PRINT_MACRO(_CPPLIB_VER);
644    PRINT_MACRO(_MSVC_STL_VERSION); // VS2017 15.5+
645    PRINT_MACRO(_MSVC_STL_UPDATE);  // VS2017 15.5+
646    PRINT_MACRO(_GLOBAL_USING);
647    PRINT_MACRO(_HAS_EXCEPTIONS);
648    PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND);
649    PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING);
650    // https://blogs.msdn.microsoft.com/vcblog/2016/08/12/stl-fixes-in-vs-2015-update-3/
651    PRINT_MACRO(_HAS_CXX17);
652    PRINT_MACRO(_HAS_AUTO_PTR_ETC);
653    PRINT_MACRO(_HAS_OLD_IOSTREAMS_MEMBERS);
654    PRINT_MACRO(_HAS_FUNCTION_ASSIGN);
655    PRINT_MACRO(_HAS_TR1_NAMESPACE);
656    PRINT_MACRO(_HAS_IDENTITY_STRUCT);
657    // VS2017 15.5+
658    PRINT_MACRO(_HAS_STATIC_RTTI);
659    PRINT_MACRO(_HAS_UNEXPECTED);
660    PRINT_MACRO(_HAS_STD_BYTE);
661    PRINT_MACRO(_HAS_FUNCTION_ALLOCATOR_SUPPORT);
662    PRINT_MACRO(_HAS_TR2_SYS_NAMESPACE);
663    PRINT_MACRO(_ENFORCE_MATCHING_ALLOCATORS);
664    PRINT_MACRO(_HAS_HAS_UNIQUE_OBJECT_REPRESENTATIONS);
665    PRINT_MACRO(_HAS_INLINE_VARIABLES);
666    PRINT_MACRO(_HAS_ALIGNED_NEW);
667    PRINT_MACRO(_HAS_NOEXCEPT_FUNCTION_TYPES);
668    PRINT_MACRO(_ITERATOR_DEBUG_LEVEL);
669    PRINT_MACRO(_HAS_ITERATOR_DEBUGGING);
670    PRINT_MACRO(_ITERATOR_DEBUG_ARRAY_OVERLOADS);
671    // Libc++:
672    PRINT_MACRO(_LIBCPP_VERSION);
673    // STLPort and generic SGI STL options:
674    PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR);
675    PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS);
676    PRINT_MACRO(__SGI_STL_PORT);
677    PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS);
678    PRINT_MACRO(__STL_BASE_MATCH_BUG);
679    PRINT_MACRO(__STL_BASE_TYPEDEF_BUG);
680    PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG);
681    PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE);
682    PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG);
683    PRINT_MACRO(__STL_DEBUG);
684    PRINT_MACRO(__STL_DEBUG_ALLOC);
685    PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG);
686    PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM);
687    PRINT_MACRO(__STL_DONT_REDEFINE_STD);
688    PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF);
689    PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS);
690    PRINT_MACRO(__STL_HAS_NO_NAMESPACES);
691    PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS);
692    PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS);
693    PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD);
694    PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES);
695    PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION);
696    PRINT_MACRO(__STL_LONG_LONG);
697    PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS);
698    PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG);
699    PRINT_MACRO(__STL_NEED_EXPLICIT);
700    PRINT_MACRO(__STL_NEED_MUTABLE);
701    PRINT_MACRO(__STL_NEED_TYPENAME);
702    PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG);
703    PRINT_MACRO(__STL_NO_BAD_ALLOC);
704    PRINT_MACRO(__STL_NO_BOOL);
705    PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION);
706    PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS);
707    PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM);
708    PRINT_MACRO(__STL_NO_EXCEPTION_HEADER);
709    PRINT_MACRO(__STL_NO_EXCEPTION_SPEC);
710    PRINT_MACRO(__STL_NO_EXCEPTIONS);
711    PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
712    PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES);
713    PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER);
714    PRINT_MACRO(__STL_NO_IOSTREAMS);
715    PRINT_MACRO(__STL_NO_LONG_DOUBLE);
716    PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES);
717    PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD);
718    PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES);
719    PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION);
720    PRINT_MACRO(__STL_NO_NAMESPACES);
721    PRINT_MACRO(__STL_NO_NEW_IOSTREAMS);
722    PRINT_MACRO(__STL_NO_NEW_NEW_HEADER);
723    PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS);
724    PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX);
725    PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS);
726    PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE);
727    PRINT_MACRO(__STL_NO_SGI_IOSTREAMS);
728    PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA);
729    PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS);
730    PRINT_MACRO(__STL_NO_WCHAR_T);
731    PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG);
732    PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG);
733    PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
734    PRINT_MACRO(__STL_RAND48);
735    PRINT_MACRO(__STL_STATIC_ARRAY_BUG);
736    PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
737    PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
738    PRINT_MACRO(__STL_THROW_RETURN_BUG);
739    PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG);
740    PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG);
741    PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE);
742    PRINT_MACRO(__STL_USE_ABBREVS);
743    PRINT_MACRO(__STL_USE_DEFALLOC);
744    PRINT_MACRO(__STL_USE_MALLOC);
745    PRINT_MACRO(__STL_USE_NEW_C_HEADERS);
746    PRINT_MACRO(__STL_USE_NEW_IOSTREAMS);
747    PRINT_MACRO(__STL_USE_NEWALLOC);
748    PRINT_MACRO(__STL_USE_OWN_NAMESPACE);
749    PRINT_MACRO(__STL_USE_SGI_ALLOCATORS);
750    PRINT_MACRO(__STL_WCHAR_T_IS_USHORT);
751    PRINT_MACRO(__STL_WEAK_ATTRIBUTE);
752    PRINT_MACRO(__STL_YVALS_H);
753    PRINT_MACRO(_NOTHREADS);
754    PRINT_MACRO(_PTHREADS);
755 #if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400)
756    PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS);
757    PRINT_MACRO(_STLP_BASE_MATCH_BUG);
758    PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG);
759    PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG);
760    PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE);
761    PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG);
762    PRINT_MACRO(_STLP_DEBUG);
763    PRINT_MACRO(_STLP_DEBUG_ALLOC);
764    PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG);
765    PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM);
766    PRINT_MACRO(_STLP_DONT_REDEFINE_STD);
767    PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF);
768    PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS);
769    PRINT_MACRO(_STLP_HAS_NO_NAMESPACES);
770    PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS);
771    PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS);
772    PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD);
773    PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES);
774    PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION);
775    PRINT_MACRO(_STLP_LONG_LONG);
776    PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS);
777    PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG);
778    PRINT_MACRO(_STLP_NEED_EXPLICIT);
779    PRINT_MACRO(_STLP_NEED_MUTABLE);
780    PRINT_MACRO(_STLP_NEED_TYPENAME);
781    PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG);
782    PRINT_MACRO(_STLP_NO_ARROW_OPERATOR);
783    PRINT_MACRO(_STLP_NO_BAD_ALLOC);
784    PRINT_MACRO(_STLP_NO_BOOL);
785    PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION);
786    PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS);
787    PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM);
788    PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER);
789    PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC);
790    PRINT_MACRO(_STLP_NO_EXCEPTIONS);
791    PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
792    PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES);
793    PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER);
794    PRINT_MACRO(_STLP_NO_IOSTREAMS);
795    PRINT_MACRO(_STLP_NO_LONG_DOUBLE);
796    PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES);
797    PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD);
798    PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES);
799    PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION);
800    PRINT_MACRO(_STLP_NO_NAMESPACES);
801    PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS);
802    PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER);
803    PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS);
804    PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX);
805    PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS);
806    PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE);
807    PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS);
808    PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA);
809    PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS);
810    PRINT_MACRO(_STLP_NO_WCHAR_T);
811    PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG);
812    PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG);
813    PRINT_MACRO(_STLP_OWN_IOSTREAMS);
814    PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
815    PRINT_MACRO(_STLP_RAND48);
816    PRINT_MACRO(_STLP_STATIC_ARRAY_BUG);
817    PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
818    PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
819    PRINT_MACRO(_STLP_THROW_RETURN_BUG);
820    PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG);
821    PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG);
822    PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE);
823    PRINT_MACRO(_STLP_USE_ABBREVS);
824    PRINT_MACRO(_STLP_USE_DEFALLOC);
825    PRINT_MACRO(_STLP_USE_MALLOC);
826    PRINT_MACRO(_STLP_USE_NEW_C_HEADERS);
827    PRINT_MACRO(_STLP_USE_NEWALLOC);
828    PRINT_MACRO(_STLP_USE_OWN_NAMESPACE);
829    PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS);
830    PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT);
831    PRINT_MACRO(_STLP_WEAK_ATTRIBUTE);
832    PRINT_MACRO(_STLP_YVALS_H);
833 #endif
834    PRINT_MACRO(__GLIBCPP__);
835    PRINT_MACRO(_GLIBCPP_USE_WCHAR_T);
836    PRINT_MACRO(_GLIBCPP_VERSION);
837    PRINT_MACRO(__GLIBCXX__);
838    PRINT_MACRO(_GLIBCXX_USE_WCHAR_T);
839    PRINT_MACRO(_GLIBCXX_VERSION);
840    PRINT_MACRO(_GLIBCXX_USE_LONG_LONG);
841    PRINT_MACRO(_GLIBCXX_USE_NLS);
842    PRINT_MACRO(_GLIBCXX_USE_C99_MATH);
843    PRINT_MACRO(_GLIBCXX_USE_C99);
844    PRINT_MACRO(_GLIBCXX_CONCEPT_CHECKS);
845    PRINT_MACRO(_GLIBCXX_USE_LFS);
846    PRINT_MACRO(_GLIBCXX_SYMVER);
847    PRINT_MACRO(_GLIBCXX_MEM_LIMITS);
848    PRINT_MACRO(_GLIBCXX_HOSTED);
849    PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS);
850    PRINT_MACRO(_GLIBCXX_RELEASE);
851
852    // Modena C++ standard library
853    PRINT_MACRO(MSIPL_ANSI_HEADER);
854    PRINT_MACRO(MSIPL_BOOL_BUILTIN);
855    PRINT_MACRO(MSIPL_DEF_EXPLICIT);
856    PRINT_MACRO(MSIPL_DEF_TEMPARG);
857    PRINT_MACRO(MSIPL_EXPINST_ALLOWED);
858    PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG);
859    PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT);
860    PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG);
861    PRINT_MACRO(MSIPL_MEMBER_TEMPLATE);
862    PRINT_MACRO(MSIPL_MULTITHREAD);
863    PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG);
864    PRINT_MACRO(MSIPL_PARTIAL_TEMPL);
865    PRINT_MACRO(MSIPL_STATIC_CONST_INIT);
866    PRINT_MACRO(MSIPL_TEMPL_NEWSPEC);
867    PRINT_MACRO(MSIPL_TYPENAME);
868    PRINT_MACRO(MSIPL_USING_NAMESPACE);
869    PRINT_MACRO(MSIPL_WCHART);
870 }
871
872 void print_platform_macros()
873 {
874    std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl;
875    // signedness:
876    PRINT_SIGN(char);
877    PRINT_SIGN(wchar_t);
878    // byte ordering:
879    PRINT_ORDER(short);
880    PRINT_ORDER(int);
881    PRINT_ORDER(long);
882    // sizes:
883    PRINT_EXPRESSION(sizeof(wchar_t));
884    PRINT_EXPRESSION(sizeof(short));
885    PRINT_EXPRESSION(sizeof(int));
886    PRINT_EXPRESSION(sizeof(long));
887    PRINT_EXPRESSION(sizeof(size_t));
888    PRINT_EXPRESSION(sizeof(ptrdiff_t));
889    PRINT_EXPRESSION(sizeof(void*));
890    PRINT_EXPRESSION(sizeof(void(*)(void)));
891    PRINT_EXPRESSION(sizeof(float));
892    PRINT_EXPRESSION(sizeof(double));
893    PRINT_EXPRESSION(sizeof(long double));
894    // limits:
895    PRINT_MACRO(CHAR_BIT);
896    PRINT_MACRO(CHAR_MAX);
897    PRINT_MACRO(WCHAR_MAX);
898    PRINT_MACRO(SHRT_MAX);
899    PRINT_MACRO(INT_MAX);
900    PRINT_MACRO(LONG_MAX);
901    PRINT_MACRO(LLONG_MAX);
902    PRINT_MACRO(LONG_LONG_MAX);
903    PRINT_MACRO(LONGLONG_MAX);
904    PRINT_MACRO(ULLONG_MAX); // <boost/cstdint.hpp> uses these, so we need to know them
905    PRINT_MACRO(ULONG_LONG_MAX);
906    PRINT_MACRO(ULONGLONG_MAX);
907    // general C99:
908    PRINT_MACRO(__STDC_IEC_559__);
909    PRINT_MACRO(__STDC_IEC_559_COMPLEX__);
910    PRINT_MACRO(__STDC_ISO_10646__);
911    // GNU:
912    PRINT_MACRO(__GLIBC__);
913    PRINT_MACRO(__GLIBC_MINOR__);
914    PRINT_MACRO(__GNU_LIBRARY__);
915    PRINT_MACRO(_BSD_SOURCE);
916    PRINT_MACRO(_GNU_SOURCE);
917    PRINT_MACRO(_ISOC99_SOURCE);
918    PRINT_MACRO(_ISOC9X_SOURCE);
919    PRINT_MACRO(_LARGEFILE_SOURCE);
920    PRINT_MACRO(_LARGEFILE64_SOURCE);
921    PRINT_MACRO(_SVID_SOURCE);
922    PRINT_MACRO(_THREAD_SAFE);
923    PRINT_MACRO(_XOPEN_SOURCE_EXTENDED);
924    PRINT_MACRO(XPG);
925    PRINT_MACRO(__MINGW32_MAJOR_VERSION);
926    PRINT_MACRO(__MINGW32_MINOR_VERSION);
927    // POSIX:
928    PRINT_MACRO(_POSIX_ADVISORY_INFO);
929    PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO);
930    PRINT_MACRO(_POSIX_BARRIERS);
931    PRINT_MACRO(_POSIX_C_SOURCE);
932    PRINT_MACRO(_POSIX_CHOWN_RESTRICTED);
933    PRINT_MACRO(_POSIX_CLOCK_SELECTION);
934    PRINT_MACRO(_POSIX_CPUTIME);
935    PRINT_MACRO(_POSIX_FSYNC);
936    PRINT_MACRO(_POSIX_JOB_CONTROL);
937    PRINT_MACRO(_POSIX_MAPPED_FILES);
938    PRINT_MACRO(_POSIX_MEMLOCK);
939    PRINT_MACRO(_POSIX_MEMLOCK_RANGE);
940    PRINT_MACRO(_POSIX_MEMORY_PROTECTION);
941    PRINT_MACRO(_POSIX_MESSAGE_PASSING);
942    PRINT_MACRO(_POSIX_MONOTONIC_CLOCK);
943    PRINT_MACRO(_POSIX_NO_TRUNC);
944    PRINT_MACRO(_POSIX_PRIORITIZED_IO);
945    PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING);
946    PRINT_MACRO(_POSIX_RAW_SOCKETS);
947    PRINT_MACRO(_POSIX_READER_WRITER_LOCKS);
948    PRINT_MACRO(_POSIX_REALTIME_SIGNALS);
949    PRINT_MACRO(_POSIX_REGEXP);
950    PRINT_MACRO(_POSIX_SAVED_IDS);
951    PRINT_MACRO(_POSIX_SEMAPHORES);
952    PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS);
953    PRINT_MACRO(_POSIX_SHELL);
954    PRINT_MACRO(_POSIX_SOURCE);
955    PRINT_MACRO(_POSIX_SPAWN);
956    PRINT_MACRO(_POSIX_SPIN_LOCKS);
957    PRINT_MACRO(_POSIX_SPORADIC_SERVER);
958    PRINT_MACRO(_POSIX_SYNCHRONIZED_IO);
959    PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR);
960    PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
961    PRINT_MACRO(_POSIX_THREAD_CPUTIME);
962    PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT);
963    PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT);
964    PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
965    PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED);
966    PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
967    PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER);
968    PRINT_MACRO(_POSIX_THREADS);
969    PRINT_MACRO(_POSIX_TIMEOUTS);
970    PRINT_MACRO(_POSIX_TIMERS);
971    PRINT_MACRO(_POSIX_TRACE);
972    PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER);
973    PRINT_MACRO(_POSIX_TRACE_INHERIT);
974    PRINT_MACRO(_POSIX_TRACE_LOG);
975    PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
976    PRINT_MACRO(_POSIX_VDISABLE);
977    PRINT_MACRO(_POSIX_VERSION);
978    PRINT_MACRO(_POSIX2_C_BIND);
979    PRINT_MACRO(_POSIX2_C_DEV);
980    PRINT_MACRO(_POSIX2_CHAR_TERM);
981    PRINT_MACRO(_POSIX2_FORT_DEV);
982    PRINT_MACRO(_POSIX2_FORT_RUN);
983    PRINT_MACRO(_POSIX2_LOCALEDEF);
984    PRINT_MACRO(_POSIX2_PBS);
985    PRINT_MACRO(_POSIX2_PBS_ACCOUNTING);
986    PRINT_MACRO(_POSIX2_PBS_CHECKPOINT);
987    PRINT_MACRO(_POSIX2_PBS_LOCATE);
988    PRINT_MACRO(_POSIX2_PBS_MESSAGE);
989    PRINT_MACRO(_POSIX2_PBS_TRACK);
990    PRINT_MACRO(_POSIX2_SW_DEV);
991    PRINT_MACRO(_POSIX2_UPE);
992    PRINT_MACRO(_POSIX2_VERSION);
993    PRINT_MACRO(_V6_ILP32_OFF32);
994    PRINT_MACRO(_V6_ILP32_OFFBIG);
995    PRINT_MACRO(_V6_LP64_OFF64);
996    PRINT_MACRO(_V6_LPBIG_OFFBIG);
997    PRINT_MACRO(_XBS5_ILP32_OFF32);
998    PRINT_MACRO(_XBS5_ILP32_OFFBIG);
999    PRINT_MACRO(_XBS5_LP64_OFF64);
1000    PRINT_MACRO(_XBS5_LPBIG_OFFBIG);
1001    PRINT_MACRO(_XOPEN_CRYPT);
1002    PRINT_MACRO(_XOPEN_ENH_I18N);
1003    PRINT_MACRO(_XOPEN_LEGACY);
1004    PRINT_MACRO(_XOPEN_REALTIME);
1005    PRINT_MACRO(_XOPEN_REALTIME_THREADS);
1006    PRINT_MACRO(_XOPEN_SHM);
1007    PRINT_MACRO(_XOPEN_SOURCE);
1008    PRINT_MACRO(_XOPEN_STREAMS);
1009    PRINT_MACRO(_XOPEN_UNIX);
1010    PRINT_MACRO(_XOPEN_VERSION);
1011    // Misc:
1012    PRINT_MACRO(__USE_BSD);
1013    PRINT_MACRO(_FILE_OFFSET_BITS);
1014 }
1015
1016 void print_boost_macros()
1017 {
1018    std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl;
1019    // config setup macros first:
1020    PRINT_MACRO(BOOST_USER_CONFIG);
1021    PRINT_MACRO(BOOST_COMPILER_CONFIG);
1022    PRINT_MACRO(BOOST_STDLIB_CONFIG);
1023    PRINT_MACRO(BOOST_PLATFORM_CONFIG);
1024    PRINT_MACRO(BOOST_NO_CONFIG);
1025    PRINT_MACRO(BOOST_NO_USER_CONFIG);
1026    PRINT_MACRO(BOOST_NO_COMPILER_CONFIG);
1027    PRINT_MACRO(BOOST_NO_STDLIB_CONFIG);
1028    PRINT_MACRO(BOOST_NO_PLATFORM_CONFIG);
1029    // then defect and feature macros:
1030    PRINT_MACRO(BOOST_DISABLE_THREADS);
1031    PRINT_MACRO(BOOST_DISABLE_WIN32);
1032    PRINT_MACRO(BOOST_HAS_THREADS);
1033    PRINT_MACRO(BOOST_WINDOWS);
1034
1035    // BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!!
1036    PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG);
1037    PRINT_MACRO(BOOST_DEDUCED_TYPENAME);
1038    PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL);
1039    PRINT_MACRO(BOOST_HAS_BETHREADS);
1040    PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME);
1041    PRINT_MACRO(BOOST_HAS_DIRENT_H);
1042    PRINT_MACRO(BOOST_HAS_EXPM1);
1043    PRINT_MACRO(BOOST_HAS_FLOAT128);
1044    PRINT_MACRO(BOOST_HAS_FTIME);
1045    PRINT_MACRO(BOOST_HAS_GETSYSTEMTIMEASFILETIME);
1046    PRINT_MACRO(BOOST_HAS_GETTIMEOFDAY);
1047    PRINT_MACRO(BOOST_HAS_HASH);
1048    PRINT_MACRO(BOOST_HAS_INT128);
1049    PRINT_MACRO(BOOST_HAS_LOG1P);
1050    PRINT_MACRO(BOOST_HAS_LONG_LONG);
1051    PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET);
1052    PRINT_MACRO(BOOST_HAS_MS_INT64);
1053    PRINT_MACRO(BOOST_HAS_NANOSLEEP);
1054    PRINT_MACRO(BOOST_HAS_NL_TYPES_H);
1055    PRINT_MACRO(BOOST_HAS_NRVO);
1056    PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR);
1057    PRINT_MACRO(BOOST_HAS_PRAGMA_DETECT_MISMATCH);
1058    PRINT_MACRO(BOOST_HAS_PTHREADS);
1059    PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP);
1060    PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE);
1061    PRINT_MACRO(BOOST_HAS_PTHREAD_YIELD);
1062    PRINT_MACRO(BOOST_HAS_RVALUE_REFS);
1063    PRINT_MACRO(BOOST_HAS_SCHED_YIELD);
1064    PRINT_MACRO(BOOST_HAS_SGI_TYPE_TRAITS);
1065    PRINT_MACRO(BOOST_HAS_SIGACTION);
1066    PRINT_MACRO(BOOST_HAS_SLIST);
1067    PRINT_MACRO(BOOST_HAS_STATIC_ASSERT);
1068    PRINT_MACRO(BOOST_HAS_STDINT_H);
1069    PRINT_MACRO(BOOST_HAS_STLP_USE_FACET);
1070    PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET);
1071    PRINT_MACRO(BOOST_HAS_UNISTD_H);
1072    PRINT_MACRO(BOOST_HAS_VARIADIC_TMPL);
1073    PRINT_MACRO(BOOST_HAS_WINTHREADS);
1074    PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES);
1075    PRINT_MACRO(BOOST_MSVC_STD_ITERATOR);
1076    PRINT_MACRO(BOOST_NO_ADL_BARRIER);
1077    PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP);
1078    PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS);
1079    PRINT_MACRO(BOOST_NO_AUTO_PTR);
1080    PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION);
1081    PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
1082    PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS);
1083    PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS);
1084    PRINT_MACRO(BOOST_NO_CWCHAR);
1085    PRINT_MACRO(BOOST_NO_CWCTYPE);
1086    PRINT_MACRO(BOOST_NO_CXX11_ADDRESSOF);
1087    PRINT_MACRO(BOOST_NO_CXX11_ALIGNAS);
1088    PRINT_MACRO(BOOST_NO_CXX11_ALLOCATOR);
1089    PRINT_MACRO(BOOST_NO_CXX11_ATOMIC_SMART_PTR);
1090    PRINT_MACRO(BOOST_NO_CXX11_AUTO_DECLARATIONS);
1091    PRINT_MACRO(BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS);
1092    PRINT_MACRO(BOOST_NO_CXX11_CHAR16_T);
1093    PRINT_MACRO(BOOST_NO_CXX11_CHAR32_T);
1094    PRINT_MACRO(BOOST_NO_CXX11_CONSTEXPR);
1095    PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE);
1096    PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE_N3276);
1097    PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS);
1098    PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_MOVES);
1099    PRINT_MACRO(BOOST_NO_CXX11_DELETED_FUNCTIONS);
1100    PRINT_MACRO(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS);
1101    PRINT_MACRO(BOOST_NO_CXX11_EXTERN_TEMPLATE);
1102    PRINT_MACRO(BOOST_NO_CXX11_FINAL);
1103    PRINT_MACRO(BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS);
1104    PRINT_MACRO(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS);
1105    PRINT_MACRO(BOOST_NO_CXX11_HDR_ARRAY);
1106    PRINT_MACRO(BOOST_NO_CXX11_HDR_ATOMIC);
1107    PRINT_MACRO(BOOST_NO_CXX11_HDR_CHRONO);
1108    PRINT_MACRO(BOOST_NO_CXX11_HDR_CODECVT);
1109    PRINT_MACRO(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE);
1110    PRINT_MACRO(BOOST_NO_CXX11_HDR_EXCEPTION);
1111    PRINT_MACRO(BOOST_NO_CXX11_HDR_FORWARD_LIST);
1112    PRINT_MACRO(BOOST_NO_CXX11_HDR_FUNCTIONAL);
1113    PRINT_MACRO(BOOST_NO_CXX11_HDR_FUTURE);
1114    PRINT_MACRO(BOOST_NO_CXX11_HDR_INITIALIZER_LIST);
1115    PRINT_MACRO(BOOST_NO_CXX11_HDR_MUTEX);
1116    PRINT_MACRO(BOOST_NO_CXX11_HDR_RANDOM);
1117    PRINT_MACRO(BOOST_NO_CXX11_HDR_RATIO);
1118    PRINT_MACRO(BOOST_NO_CXX11_HDR_REGEX);
1119    PRINT_MACRO(BOOST_NO_CXX11_HDR_SYSTEM_ERROR);
1120    PRINT_MACRO(BOOST_NO_CXX11_HDR_THREAD);
1121    PRINT_MACRO(BOOST_NO_CXX11_HDR_TUPLE);
1122    PRINT_MACRO(BOOST_NO_CXX11_HDR_TYPEINDEX);
1123    PRINT_MACRO(BOOST_NO_CXX11_HDR_TYPE_TRAITS);
1124    PRINT_MACRO(BOOST_NO_CXX11_HDR_UNORDERED_MAP);
1125    PRINT_MACRO(BOOST_NO_CXX11_HDR_UNORDERED_SET);
1126    PRINT_MACRO(BOOST_NO_CXX11_INLINE_NAMESPACES);
1127    PRINT_MACRO(BOOST_NO_CXX11_LAMBDAS);
1128    PRINT_MACRO(BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS);
1129    PRINT_MACRO(BOOST_NO_CXX11_NOEXCEPT);
1130    PRINT_MACRO(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS);
1131    PRINT_MACRO(BOOST_NO_CXX11_NULLPTR);
1132    PRINT_MACRO(BOOST_NO_CXX11_NUMERIC_LIMITS);
1133    PRINT_MACRO(BOOST_NO_CXX11_POINTER_TRAITS);
1134    PRINT_MACRO(BOOST_NO_CXX11_RANGE_BASED_FOR);
1135    PRINT_MACRO(BOOST_NO_CXX11_RAW_LITERALS);
1136    PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS);
1137    PRINT_MACRO(BOOST_NO_CXX11_RVALUE_REFERENCES);
1138    PRINT_MACRO(BOOST_NO_CXX11_SCOPED_ENUMS);
1139    PRINT_MACRO(BOOST_NO_CXX11_SFINAE_EXPR);
1140    PRINT_MACRO(BOOST_NO_CXX11_SMART_PTR);
1141    PRINT_MACRO(BOOST_NO_CXX11_STATIC_ASSERT);
1142    PRINT_MACRO(BOOST_NO_CXX11_STD_ALIGN);
1143    PRINT_MACRO(BOOST_NO_CXX11_TEMPLATE_ALIASES);
1144    PRINT_MACRO(BOOST_NO_CXX11_THREAD_LOCAL);
1145    PRINT_MACRO(BOOST_NO_CXX11_TRAILING_RESULT_TYPES);
1146    PRINT_MACRO(BOOST_NO_CXX11_UNICODE_LITERALS);
1147    PRINT_MACRO(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX);
1148    PRINT_MACRO(BOOST_NO_CXX11_USER_DEFINED_LITERALS);
1149    PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_MACROS);
1150    PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_TEMPLATES);
1151    PRINT_MACRO(BOOST_NO_CXX14_AGGREGATE_NSDMI);
1152    PRINT_MACRO(BOOST_NO_CXX14_BINARY_LITERALS);
1153    PRINT_MACRO(BOOST_NO_CXX14_CONSTEXPR);
1154    PRINT_MACRO(BOOST_NO_CXX14_DECLTYPE_AUTO);
1155    PRINT_MACRO(BOOST_NO_CXX14_DIGIT_SEPARATORS);
1156    PRINT_MACRO(BOOST_NO_CXX14_GENERIC_LAMBDAS);
1157    PRINT_MACRO(BOOST_NO_CXX14_HDR_SHARED_MUTEX);
1158    PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES);
1159    PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION);
1160    PRINT_MACRO(BOOST_NO_CXX14_STD_EXCHANGE);
1161    PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES);
1162    PRINT_MACRO(BOOST_NO_CXX17_FOLD_EXPRESSIONS);
1163    PRINT_MACRO(BOOST_NO_CXX17_HDR_OPTIONAL);
1164    PRINT_MACRO(BOOST_NO_CXX17_HDR_STRING_VIEW);
1165    PRINT_MACRO(BOOST_NO_CXX17_HDR_VARIANT);
1166    PRINT_MACRO(BOOST_NO_CXX17_IF_CONSTEXPR);
1167    PRINT_MACRO(BOOST_NO_CXX17_INLINE_VARIABLES);
1168    PRINT_MACRO(BOOST_NO_CXX17_ITERATOR_TRAITS);
1169    PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY);
1170    PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE);
1171    PRINT_MACRO(BOOST_NO_CXX17_STRUCTURED_BINDINGS);
1172    PRINT_MACRO(BOOST_NO_CXX98_BINDERS);
1173    PRINT_MACRO(BOOST_NO_CXX98_FUNCTION_BASE);
1174    PRINT_MACRO(BOOST_NO_CXX98_RANDOM_SHUFFLE);
1175    PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
1176    PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
1177    PRINT_MACRO(BOOST_NO_EXCEPTIONS);
1178    PRINT_MACRO(BOOST_NO_EXCEPTION_STD_NAMESPACE);
1179    PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS);
1180    PRINT_MACRO(BOOST_NO_FENV_H);
1181    PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING);
1182    PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS);
1183    PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION);
1184    PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T);
1185    PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T);
1186    PRINT_MACRO(BOOST_NO_IOSFWD);
1187    PRINT_MACRO(BOOST_NO_IOSTREAM);
1188    PRINT_MACRO(BOOST_NO_IS_ABSTRACT);
1189    PRINT_MACRO(BOOST_NO_LIMITS);
1190    PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS);
1191    PRINT_MACRO(BOOST_NO_LONG_LONG);
1192    PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS);
1193    PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS);
1194    PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES);
1195    PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS);
1196    PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
1197    PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS);
1198    PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP);
1199    PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
1200    PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS);
1201    PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST);
1202    PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS);
1203    PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE);
1204    PRINT_MACRO(BOOST_NO_RESTRICT_REFERENCES);
1205    PRINT_MACRO(BOOST_NO_RTTI);
1206    PRINT_MACRO(BOOST_NO_SFINAE);
1207    PRINT_MACRO(BOOST_NO_SFINAE_EXPR);
1208    PRINT_MACRO(BOOST_NO_STDC_NAMESPACE);
1209    PRINT_MACRO(BOOST_NO_STD_ALLOCATOR);
1210    PRINT_MACRO(BOOST_NO_STD_DISTANCE);
1211    PRINT_MACRO(BOOST_NO_STD_ITERATOR);
1212    PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS);
1213    PRINT_MACRO(BOOST_NO_STD_LOCALE);
1214    PRINT_MACRO(BOOST_NO_STD_MESSAGES);
1215    PRINT_MACRO(BOOST_NO_STD_MIN_MAX);
1216    PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN);
1217    PRINT_MACRO(BOOST_NO_STD_TYPEINFO);
1218    PRINT_MACRO(BOOST_NO_STD_USE_FACET);
1219    PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF);
1220    PRINT_MACRO(BOOST_NO_STD_WSTRING);
1221    PRINT_MACRO(BOOST_NO_STRINGSTREAM);
1222    PRINT_MACRO(BOOST_NO_SWPRINTF);
1223    PRINT_MACRO(BOOST_NO_TEMPLATED_IOSTREAMS);
1224    PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS);
1225    PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION);
1226    PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES);
1227    PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP);
1228    PRINT_MACRO(BOOST_NO_TYPEID);
1229    PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR);
1230    PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION);
1231    PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE);
1232    PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
1233    PRINT_MACRO(BOOST_NO_VOID_RETURNS);
1234
1235
1236    // END GENERATED BLOCK
1237
1238    PRINT_MACRO(BOOST_INTEL);
1239    PRINT_MACRO(BOOST_MSVC);
1240    PRINT_MACRO(BOOST_GCC);
1241    PRINT_MACRO(BOOST_LIBSTDCXX_VERSION);
1242    PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
1243    PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));
1244    PRINT_MACRO(BOOST_CONSTEXPR);
1245    PRINT_MACRO(BOOST_CONSTEXPR_OR_CONST);
1246    PRINT_MACRO(BOOST_STATIC_CONSTEXPR);
1247    PRINT_MACRO(BOOST_NOEXCEPT);
1248    PRINT_MACRO(BOOST_FORCEINLINE);
1249    PRINT_MACRO(BOOST_NOINLINE);
1250    PRINT_MACRO(BOOST_FALLTHROUGH);
1251    PRINT_MACRO(BOOST_MAY_ALIAS);
1252    PRINT_MACRO(BOOST_NO_MAY_ALIAS);
1253    PRINT_MACRO(BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS);
1254    PRINT_MACRO(BOOST_ATTRIBUTE_UNUSED);
1255    PRINT_MACRO(BOOST_UNLIKELY);
1256    PRINT_MACRO(BOOST_NORETURN);
1257 }
1258
1259 void print_sd6_macros()
1260 {
1261     // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0096r5.html
1262
1263     // C++20:
1264     PRINT_MACRO(__cpp_aggregate_paren_init);
1265     PRINT_MACRO(__cpp_char8_t);
1266     PRINT_MACRO(__cpp_char8_type);
1267     PRINT_MACRO(__cpp_conditional_explicit);
1268     PRINT_MACRO(__cpp_coroutines);
1269     PRINT_MACRO(__cpp_impl_destroying_delete);
1270     PRINT_MACRO(__cpp_impl_three_way_comparison);
1271     PRINT_MACRO(__cpp_nontype_template_parameter_class);
1272
1273     // C++17:
1274     PRINT_MACRO(__cpp_hex_float);
1275     PRINT_MACRO(__cpp_inline_variables);
1276     PRINT_MACRO(__cpp_aligned_new);
1277     PRINT_MACRO(__cpp_guaranteed_copy_elision);
1278     PRINT_MACRO(__cpp_noexcept_function_type);
1279     PRINT_MACRO(__cpp_fold_expressions);
1280     PRINT_MACRO(__cpp_capture_star_this);
1281     PRINT_MACRO(__cpp_constexpr);
1282     PRINT_MACRO(__cpp_if_constexpr);
1283     PRINT_MACRO(__cpp_range_based_for);
1284     PRINT_MACRO(__cpp_static_assert);
1285     PRINT_MACRO(__cpp_deduction_guides);
1286     PRINT_MACRO(__cpp_nontype_template_parameter_auto);
1287     PRINT_MACRO(__cpp_namespace_attributes);
1288     PRINT_MACRO(__cpp_enumerator_attributes);
1289     PRINT_MACRO(__cpp_inheriting_constructors);
1290     PRINT_MACRO(__cpp_variadic_using);
1291     PRINT_MACRO(__cpp_structured_bindings);
1292     PRINT_MACRO(__cpp_aggregate_bases);
1293     PRINT_MACRO(__cpp_nontype_template_args);
1294     PRINT_MACRO(__cpp_template_template_args);
1295
1296     // C++14:
1297     PRINT_MACRO(__cpp_binary_literals);
1298     PRINT_MACRO(__cpp_init_captures);
1299     PRINT_MACRO(__cpp_generic_lambdas);
1300     PRINT_MACRO(__cpp_sized_deallocation);
1301     PRINT_MACRO(__cpp_decltype_auto);
1302     PRINT_MACRO(__cpp_return_type_deduction);
1303     PRINT_MACRO(__cpp_aggregate_nsdmi);
1304     PRINT_MACRO(__cpp_variable_templates);
1305
1306     // C++11:
1307     PRINT_MACRO(__cpp_unicode_characters);
1308     PRINT_MACRO(__cpp_raw_strings);
1309     PRINT_MACRO(__cpp_unicode_literals);
1310     PRINT_MACRO(__cpp_user_defined_literals);
1311     PRINT_MACRO(__cpp_threadsafe_static_init);
1312     PRINT_MACRO(__cpp_lambdas);
1313     PRINT_MACRO(__cpp_decltype);
1314     PRINT_MACRO(__cpp_attributes);
1315     PRINT_MACRO(__cpp_rvalue_references);
1316     PRINT_MACRO(__cpp_variadic_templates);
1317     PRINT_MACRO(__cpp_initializer_lists);
1318     PRINT_MACRO(__cpp_delegating_constructors);
1319     PRINT_MACRO(__cpp_nsdmi);
1320     PRINT_MACRO(__cpp_ref_qualifiers);
1321     PRINT_MACRO(__cpp_alias_templates);
1322
1323     // C++98:
1324     PRINT_MACRO(__cpp_rtti);
1325     PRINT_MACRO(__cpp_exceptions);
1326 }
1327
1328 void print_separator()
1329 {
1330    std::cout <<
1331 "\n\n*********************************************************************\n\n";
1332 }
1333
1334 int main()
1335 {
1336
1337   // boost compiler workaround defines
1338   print_compiler_macros();
1339   print_separator();
1340   print_stdlib_macros();
1341   print_separator();
1342   print_platform_macros();
1343   print_separator();
1344   print_boost_macros();
1345   print_separator();
1346   print_sd6_macros();
1347
1348   return 0;
1349 }