config_info.cpp 47 KB

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