mqt-core 3.3.2__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. mqt/core/__init__.py +89 -0
  2. mqt/core/__main__.py +55 -0
  3. mqt/core/_commands.py +52 -0
  4. mqt/core/_compat/__init__.py +11 -0
  5. mqt/core/_compat/typing.py +29 -0
  6. mqt/core/_version.py +34 -0
  7. mqt/core/_version.pyi +12 -0
  8. mqt/core/bin/mqt-core-algorithms.dll +0 -0
  9. mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
  10. mqt/core/bin/mqt-core-dd.dll +0 -0
  11. mqt/core/bin/mqt-core-ds.dll +0 -0
  12. mqt/core/bin/mqt-core-fomac.dll +0 -0
  13. mqt/core/bin/mqt-core-ir.dll +0 -0
  14. mqt/core/bin/mqt-core-na-fomac.dll +0 -0
  15. mqt/core/bin/mqt-core-na.dll +0 -0
  16. mqt/core/bin/mqt-core-qasm.dll +0 -0
  17. mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
  18. mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
  19. mqt/core/bin/mqt-core-zx.dll +0 -0
  20. mqt/core/dd.cp312-win_amd64.pyd +0 -0
  21. mqt/core/dd.pyi +1016 -0
  22. mqt/core/dd_evaluation.py +368 -0
  23. mqt/core/fomac.cp312-win_amd64.pyd +0 -0
  24. mqt/core/fomac.pyi +125 -0
  25. mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
  26. mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
  27. mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
  28. mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
  29. mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
  30. mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
  31. mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
  32. mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
  33. mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
  34. mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
  35. mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
  36. mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
  37. mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
  38. mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
  39. mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
  40. mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
  41. mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
  42. mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
  43. mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
  44. mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
  45. mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
  46. mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
  47. mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
  48. mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
  49. mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
  50. mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
  51. mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
  52. mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
  53. mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
  54. mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
  55. mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
  56. mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
  57. mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
  58. mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
  59. mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
  60. mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
  61. mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
  62. mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
  63. mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
  64. mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
  65. mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
  66. mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
  67. mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
  68. mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
  69. mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
  70. mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
  71. mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
  72. mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
  73. mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
  74. mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
  75. mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
  76. mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
  77. mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
  78. mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
  79. mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
  80. mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
  81. mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
  82. mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
  83. mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
  84. mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
  85. mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
  86. mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
  87. mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
  88. mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
  89. mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
  90. mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
  91. mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
  92. mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
  93. mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
  94. mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
  95. mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
  96. mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
  97. mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
  98. mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
  99. mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
  100. mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
  101. mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
  102. mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
  103. mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
  104. mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
  105. mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
  106. mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
  107. mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
  108. mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
  109. mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
  110. mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
  111. mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
  112. mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
  113. mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
  114. mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
  115. mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
  116. mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
  117. mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
  118. mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
  119. mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
  120. mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
  121. mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
  122. mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
  123. mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
  124. mqt/core/include/mqt-core/boost/config.hpp +67 -0
  125. mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
  126. mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
  127. mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
  128. mqt/core/include/mqt-core/boost/limits.hpp +146 -0
  129. mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
  130. mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
  131. mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
  132. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
  133. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
  134. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
  135. mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
  136. mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
  137. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
  138. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
  139. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
  140. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
  141. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
  142. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
  143. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
  144. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
  145. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
  146. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
  147. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
  148. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
  149. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
  150. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
  151. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
  152. mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
  153. mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
  154. mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
  155. mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
  156. mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
  157. mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
  158. mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
  159. mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
  160. mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
  161. mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
  162. mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
  163. mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
  164. mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
  165. mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
  166. mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
  167. mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
  168. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
  169. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
  170. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
  171. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
  172. mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
  173. mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
  174. mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
  175. mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
  176. mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
  177. mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
  178. mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
  179. mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
  180. mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
  181. mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
  182. mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
  183. mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
  184. mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
  185. mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
  186. mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
  187. mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
  188. mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
  189. mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
  190. mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
  191. mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
  192. mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
  193. mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
  194. mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
  195. mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
  196. mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
  197. mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
  198. mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
  199. mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
  200. mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
  201. mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
  202. mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
  203. mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
  204. mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
  205. mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
  206. mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
  207. mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
  208. mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
  209. mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
  210. mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
  211. mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
  212. mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
  213. mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
  214. mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
  215. mqt/core/include/mqt-core/boost/version.hpp +32 -0
  216. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
  217. mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
  218. mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
  219. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
  220. mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
  221. mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
  222. mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
  223. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
  224. mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
  225. mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
  226. mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
  227. mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
  228. mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
  229. mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
  230. mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
  231. mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
  232. mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
  233. mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
  234. mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
  235. mqt/core/include/mqt-core/dd/Export.hpp +438 -0
  236. mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
  237. mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
  238. mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
  239. mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
  240. mqt/core/include/mqt-core/dd/Node.hpp +223 -0
  241. mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
  242. mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
  243. mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
  244. mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
  245. mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
  246. mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
  247. mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
  248. mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
  249. mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
  250. mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
  251. mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
  252. mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
  253. mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
  254. mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
  255. mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
  256. mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
  257. mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
  258. mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
  259. mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
  260. mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
  261. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
  262. mqt/core/include/mqt-core/ir/Register.hpp +125 -0
  263. mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
  264. mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
  265. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
  266. mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
  267. mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
  268. mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
  269. mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
  270. mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
  271. mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
  272. mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
  273. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
  274. mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
  275. mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
  276. mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
  277. mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
  278. mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
  279. mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
  280. mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
  281. mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
  282. mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
  283. mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
  284. mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
  285. mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
  286. mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
  287. mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
  288. mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
  289. mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
  290. mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
  291. mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
  292. mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
  293. mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
  294. mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
  295. mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
  296. mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
  297. mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
  298. mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
  299. mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
  300. mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
  301. mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
  302. mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
  303. mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
  304. mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
  305. mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
  306. mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
  307. mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
  308. mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
  309. mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
  310. mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
  311. mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
  312. mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
  313. mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
  314. mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
  315. mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
  316. mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
  317. mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
  318. mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
  319. mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
  320. mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
  321. mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
  322. mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
  323. mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
  324. mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
  325. mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
  326. mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
  327. mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
  328. mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
  329. mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
  330. mqt/core/include/nlohmann/detail/hash.hpp +129 -0
  331. mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
  332. mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
  333. mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
  334. mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
  335. mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
  336. mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
  337. mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
  338. mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
  339. mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
  340. mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
  341. mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
  342. mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
  343. mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
  344. mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
  345. mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
  346. mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
  347. mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
  348. mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
  349. mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
  350. mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
  351. mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
  352. mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
  353. mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
  354. mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
  355. mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
  356. mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
  357. mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
  358. mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
  359. mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
  360. mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
  361. mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
  362. mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
  363. mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
  364. mqt/core/include/nlohmann/json.hpp +5306 -0
  365. mqt/core/include/nlohmann/json_fwd.hpp +75 -0
  366. mqt/core/include/nlohmann/ordered_map.hpp +359 -0
  367. mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
  368. mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
  369. mqt/core/include/qdmi/qdmi/client.h +990 -0
  370. mqt/core/include/qdmi/qdmi/constants.h +1139 -0
  371. mqt/core/include/qdmi/qdmi/device.h +602 -0
  372. mqt/core/include/qdmi/qdmi/types.h +78 -0
  373. mqt/core/include/spdlog/async.h +99 -0
  374. mqt/core/include/spdlog/async_logger-inl.h +84 -0
  375. mqt/core/include/spdlog/async_logger.h +74 -0
  376. mqt/core/include/spdlog/cfg/argv.h +40 -0
  377. mqt/core/include/spdlog/cfg/env.h +36 -0
  378. mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
  379. mqt/core/include/spdlog/cfg/helpers.h +29 -0
  380. mqt/core/include/spdlog/common-inl.h +68 -0
  381. mqt/core/include/spdlog/common.h +406 -0
  382. mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
  383. mqt/core/include/spdlog/details/backtracer.h +45 -0
  384. mqt/core/include/spdlog/details/circular_q.h +115 -0
  385. mqt/core/include/spdlog/details/console_globals.h +28 -0
  386. mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
  387. mqt/core/include/spdlog/details/file_helper.h +61 -0
  388. mqt/core/include/spdlog/details/fmt_helper.h +141 -0
  389. mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
  390. mqt/core/include/spdlog/details/log_msg.h +40 -0
  391. mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
  392. mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
  393. mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
  394. mqt/core/include/spdlog/details/null_mutex.h +35 -0
  395. mqt/core/include/spdlog/details/os-inl.h +606 -0
  396. mqt/core/include/spdlog/details/os.h +127 -0
  397. mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
  398. mqt/core/include/spdlog/details/periodic_worker.h +58 -0
  399. mqt/core/include/spdlog/details/registry-inl.h +270 -0
  400. mqt/core/include/spdlog/details/registry.h +131 -0
  401. mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
  402. mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
  403. mqt/core/include/spdlog/details/tcp_client.h +127 -0
  404. mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
  405. mqt/core/include/spdlog/details/thread_pool.h +117 -0
  406. mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
  407. mqt/core/include/spdlog/details/udp_client.h +81 -0
  408. mqt/core/include/spdlog/details/windows_include.h +11 -0
  409. mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
  410. mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
  411. mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
  412. mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
  413. mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
  414. mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
  415. mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
  416. mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
  417. mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
  418. mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
  419. mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
  420. mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
  421. mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
  422. mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
  423. mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
  424. mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
  425. mqt/core/include/spdlog/fmt/chrono.h +23 -0
  426. mqt/core/include/spdlog/fmt/compile.h +23 -0
  427. mqt/core/include/spdlog/fmt/fmt.h +30 -0
  428. mqt/core/include/spdlog/fmt/ostr.h +23 -0
  429. mqt/core/include/spdlog/fmt/ranges.h +23 -0
  430. mqt/core/include/spdlog/fmt/std.h +24 -0
  431. mqt/core/include/spdlog/fmt/xchar.h +23 -0
  432. mqt/core/include/spdlog/formatter.h +17 -0
  433. mqt/core/include/spdlog/fwd.h +18 -0
  434. mqt/core/include/spdlog/logger-inl.h +198 -0
  435. mqt/core/include/spdlog/logger.h +379 -0
  436. mqt/core/include/spdlog/mdc.h +52 -0
  437. mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
  438. mqt/core/include/spdlog/pattern_formatter.h +118 -0
  439. mqt/core/include/spdlog/sinks/android_sink.h +137 -0
  440. mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
  441. mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
  442. mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
  443. mqt/core/include/spdlog/sinks/base_sink.h +51 -0
  444. mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
  445. mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
  446. mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
  447. mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
  448. mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
  449. mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
  450. mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
  451. mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
  452. mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
  453. mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
  454. mqt/core/include/spdlog/sinks/null_sink.h +41 -0
  455. mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
  456. mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
  457. mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
  458. mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
  459. mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
  460. mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
  461. mqt/core/include/spdlog/sinks/sink.h +34 -0
  462. mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  463. mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
  464. mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
  465. mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
  466. mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
  467. mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
  468. mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
  469. mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
  470. mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
  471. mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
  472. mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
  473. mqt/core/include/spdlog/spdlog-inl.h +96 -0
  474. mqt/core/include/spdlog/spdlog.h +357 -0
  475. mqt/core/include/spdlog/stopwatch.h +66 -0
  476. mqt/core/include/spdlog/tweakme.h +148 -0
  477. mqt/core/include/spdlog/version.h +11 -0
  478. mqt/core/ir/__init__.pyi +2078 -0
  479. mqt/core/ir/operations.pyi +1011 -0
  480. mqt/core/ir/registers.pyi +91 -0
  481. mqt/core/ir/symbolic.pyi +177 -0
  482. mqt/core/ir.cp312-win_amd64.pyd +0 -0
  483. mqt/core/lib/mqt-core-algorithms.lib +0 -0
  484. mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
  485. mqt/core/lib/mqt-core-dd.lib +0 -0
  486. mqt/core/lib/mqt-core-ds.lib +0 -0
  487. mqt/core/lib/mqt-core-fomac.lib +0 -0
  488. mqt/core/lib/mqt-core-ir.lib +0 -0
  489. mqt/core/lib/mqt-core-na-fomac.lib +0 -0
  490. mqt/core/lib/mqt-core-na.lib +0 -0
  491. mqt/core/lib/mqt-core-qasm.lib +0 -0
  492. mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
  493. mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
  494. mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
  495. mqt/core/lib/mqt-core-zx.lib +0 -0
  496. mqt/core/lib/pkgconfig/spdlog.pc +13 -0
  497. mqt/core/lib/spdlog.lib +0 -0
  498. mqt/core/na/__init__.py +12 -0
  499. mqt/core/na/fomac.cp312-win_amd64.pyd +0 -0
  500. mqt/core/na/fomac.pyi +117 -0
  501. mqt/core/nlohmann_json.natvis +278 -0
  502. mqt/core/plugins/__init__.py +9 -0
  503. mqt/core/plugins/qiskit/__init__.py +19 -0
  504. mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
  505. mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
  506. mqt/core/py.typed +2 -0
  507. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
  508. mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
  509. mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
  510. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
  511. mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
  512. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
  513. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
  514. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
  515. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
  516. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +445 -0
  517. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
  518. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
  519. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
  520. mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
  521. mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
  522. mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
  523. mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
  524. mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
  525. mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
  526. mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
  527. mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
  528. mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +121 -0
  529. mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
  530. mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
  531. mqt_core-3.3.2.dist-info/DELVEWHEEL +2 -0
  532. mqt_core-3.3.2.dist-info/METADATA +210 -0
  533. mqt_core-3.3.2.dist-info/RECORD +537 -0
  534. mqt_core-3.3.2.dist-info/WHEEL +5 -0
  535. mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
  536. mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
  537. mqt_core.libs/msvcp140.dll +0 -0
@@ -0,0 +1,1334 @@
1
+ // Boost config.hpp configuration header file ------------------------------//
2
+ // boostinspect:ndprecated_macros -- tell the inspect tool to ignore this file
3
+
4
+ // Copyright (c) 2001-2003 John Maddock
5
+ // Copyright (c) 2001 Darin Adler
6
+ // Copyright (c) 2001 Peter Dimov
7
+ // Copyright (c) 2002 Bill Kempf
8
+ // Copyright (c) 2002 Jens Maurer
9
+ // Copyright (c) 2002-2003 David Abrahams
10
+ // Copyright (c) 2003 Gennaro Prota
11
+ // Copyright (c) 2003 Eric Friedman
12
+ // Copyright (c) 2010 Eric Jourdanneau, Joel Falcou
13
+ // Distributed under the Boost Software License, Version 1.0. (See
14
+ // accompanying file LICENSE_1_0.txt or copy at
15
+ // http://www.boost.org/LICENSE_1_0.txt)
16
+
17
+ // See http://www.boost.org/ for most recent version.
18
+
19
+ // Boost config.hpp policy and rationale documentation has been moved to
20
+ // http://www.boost.org/libs/config/
21
+ //
22
+ // This file is intended to be stable, and relatively unchanging.
23
+ // It should contain boilerplate code only - no compiler specific
24
+ // code unless it is unavoidable - no changes unless unavoidable.
25
+
26
+ #ifndef BOOST_CONFIG_SUFFIX_HPP
27
+ #define BOOST_CONFIG_SUFFIX_HPP
28
+
29
+ #if defined(__GNUC__) && (__GNUC__ >= 4)
30
+ //
31
+ // Some GCC-4.x versions issue warnings even when __extension__ is used,
32
+ // so use this as a workaround:
33
+ //
34
+ #pragma GCC system_header
35
+ #endif
36
+
37
+ //
38
+ // ensure that visibility macros are always defined, thus simplifying use
39
+ //
40
+ #ifndef BOOST_SYMBOL_EXPORT
41
+ # define BOOST_SYMBOL_EXPORT
42
+ #endif
43
+ #ifndef BOOST_SYMBOL_IMPORT
44
+ # define BOOST_SYMBOL_IMPORT
45
+ #endif
46
+ #ifndef BOOST_SYMBOL_VISIBLE
47
+ # define BOOST_SYMBOL_VISIBLE
48
+ #endif
49
+
50
+ //
51
+ // disable explicitly enforced visibility
52
+ //
53
+ #if defined(BOOST_DISABLE_EXPLICIT_SYMBOL_VISIBILITY)
54
+
55
+ #undef BOOST_SYMBOL_EXPORT
56
+ #define BOOST_SYMBOL_EXPORT
57
+
58
+ #undef BOOST_SYMBOL_IMPORT
59
+ #define BOOST_SYMBOL_IMPORT
60
+
61
+ #undef BOOST_SYMBOL_VISIBLE
62
+ #define BOOST_SYMBOL_VISIBLE
63
+
64
+ #endif
65
+
66
+ //
67
+ // look for long long by looking for the appropriate macros in <limits.h>.
68
+ // Note that we use limits.h rather than climits for maximal portability,
69
+ // remember that since these just declare a bunch of macros, there should be
70
+ // no namespace issues from this.
71
+ //
72
+ #if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG) \
73
+ && !defined(BOOST_MSVC) && !defined(BOOST_BORLANDC)
74
+ # include <limits.h>
75
+ # if (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
76
+ # define BOOST_HAS_LONG_LONG
77
+ # else
78
+ # define BOOST_NO_LONG_LONG
79
+ # endif
80
+ #endif
81
+
82
+ // GCC 3.x will clean up all of those nasty macro definitions that
83
+ // BOOST_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine
84
+ // it under GCC 3.x.
85
+ #if defined(__GNUC__) && (__GNUC__ >= 3) && defined(BOOST_NO_CTYPE_FUNCTIONS)
86
+ # undef BOOST_NO_CTYPE_FUNCTIONS
87
+ #endif
88
+
89
+ //
90
+ // Assume any extensions are in namespace std:: unless stated otherwise:
91
+ //
92
+ # ifndef BOOST_STD_EXTENSION_NAMESPACE
93
+ # define BOOST_STD_EXTENSION_NAMESPACE std
94
+ # endif
95
+
96
+ //
97
+ // If cv-qualified specializations are not allowed, then neither are cv-void ones:
98
+ //
99
+ # if defined(BOOST_NO_CV_SPECIALIZATIONS) \
100
+ && !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
101
+ # define BOOST_NO_CV_VOID_SPECIALIZATIONS
102
+ # endif
103
+
104
+ //
105
+ // If there is no numeric_limits template, then it can't have any compile time
106
+ // constants either!
107
+ //
108
+ # if defined(BOOST_NO_LIMITS) \
109
+ && !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
110
+ # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
111
+ # define BOOST_NO_MS_INT64_NUMERIC_LIMITS
112
+ # define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
113
+ # endif
114
+
115
+ //
116
+ // if there is no long long then there is no specialisation
117
+ // for numeric_limits<long long> either:
118
+ //
119
+ #if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)
120
+ # define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
121
+ #endif
122
+
123
+ //
124
+ // if there is no __int64 then there is no specialisation
125
+ // for numeric_limits<__int64> either:
126
+ //
127
+ #if !defined(BOOST_HAS_MS_INT64) && !defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS)
128
+ # define BOOST_NO_MS_INT64_NUMERIC_LIMITS
129
+ #endif
130
+
131
+ //
132
+ // if member templates are supported then so is the
133
+ // VC6 subset of member templates:
134
+ //
135
+ # if !defined(BOOST_NO_MEMBER_TEMPLATES) \
136
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
137
+ # define BOOST_MSVC6_MEMBER_TEMPLATES
138
+ # endif
139
+
140
+ //
141
+ // Without partial specialization, can't test for partial specialisation bugs:
142
+ //
143
+ # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
144
+ && !defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG)
145
+ # define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
146
+ # endif
147
+
148
+ //
149
+ // Without partial specialization, we can't have array-type partial specialisations:
150
+ //
151
+ # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
152
+ && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
153
+ # define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
154
+ # endif
155
+
156
+ //
157
+ // Without partial specialization, std::iterator_traits can't work:
158
+ //
159
+ # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
160
+ && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
161
+ # define BOOST_NO_STD_ITERATOR_TRAITS
162
+ # endif
163
+
164
+ //
165
+ // Without partial specialization, partial
166
+ // specialization with default args won't work either:
167
+ //
168
+ # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
169
+ && !defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
170
+ # define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
171
+ # endif
172
+
173
+ //
174
+ // Without member template support, we can't have template constructors
175
+ // in the standard library either:
176
+ //
177
+ # if defined(BOOST_NO_MEMBER_TEMPLATES) \
178
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
179
+ && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
180
+ # define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
181
+ # endif
182
+
183
+ //
184
+ // Without member template support, we can't have a conforming
185
+ // std::allocator template either:
186
+ //
187
+ # if defined(BOOST_NO_MEMBER_TEMPLATES) \
188
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
189
+ && !defined(BOOST_NO_STD_ALLOCATOR)
190
+ # define BOOST_NO_STD_ALLOCATOR
191
+ # endif
192
+
193
+ //
194
+ // without ADL support then using declarations will break ADL as well:
195
+ //
196
+ #if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
197
+ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
198
+ #endif
199
+
200
+ //
201
+ // Without typeid support we have no dynamic RTTI either:
202
+ //
203
+ #if defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI)
204
+ # define BOOST_NO_RTTI
205
+ #endif
206
+
207
+ //
208
+ // If we have a standard allocator, then we have a partial one as well:
209
+ //
210
+ #if !defined(BOOST_NO_STD_ALLOCATOR)
211
+ # define BOOST_HAS_PARTIAL_STD_ALLOCATOR
212
+ #endif
213
+
214
+ //
215
+ // We can't have a working std::use_facet if there is no std::locale:
216
+ //
217
+ # if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET)
218
+ # define BOOST_NO_STD_USE_FACET
219
+ # endif
220
+
221
+ //
222
+ // We can't have a std::messages facet if there is no std::locale:
223
+ //
224
+ # if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES)
225
+ # define BOOST_NO_STD_MESSAGES
226
+ # endif
227
+
228
+ //
229
+ // We can't have a working std::wstreambuf if there is no std::locale:
230
+ //
231
+ # if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_WSTREAMBUF)
232
+ # define BOOST_NO_STD_WSTREAMBUF
233
+ # endif
234
+
235
+ //
236
+ // We can't have a <cwctype> if there is no <cwchar>:
237
+ //
238
+ # if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE)
239
+ # define BOOST_NO_CWCTYPE
240
+ # endif
241
+
242
+ //
243
+ // We can't have a swprintf if there is no <cwchar>:
244
+ //
245
+ # if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF)
246
+ # define BOOST_NO_SWPRINTF
247
+ # endif
248
+
249
+ //
250
+ // If Win32 support is turned off, then we must turn off
251
+ // threading support also, unless there is some other
252
+ // thread API enabled:
253
+ //
254
+ #if defined(BOOST_DISABLE_WIN32) && defined(_WIN32) \
255
+ && !defined(BOOST_DISABLE_THREADS) && !defined(BOOST_HAS_PTHREADS)
256
+ # define BOOST_DISABLE_THREADS
257
+ #endif
258
+
259
+ //
260
+ // Turn on threading support if the compiler thinks that it's in
261
+ // multithreaded mode. We put this here because there are only a
262
+ // limited number of macros that identify this (if there's any missing
263
+ // from here then add to the appropriate compiler section):
264
+ //
265
+ #if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \
266
+ || defined(_PTHREADS) || defined(__APPLE__) || defined(__DragonFly__)) \
267
+ && !defined(BOOST_HAS_THREADS)
268
+ # define BOOST_HAS_THREADS
269
+ #endif
270
+
271
+ //
272
+ // Turn threading support off if BOOST_DISABLE_THREADS is defined:
273
+ //
274
+ #if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS)
275
+ # undef BOOST_HAS_THREADS
276
+ #endif
277
+
278
+ //
279
+ // Turn threading support off if we don't recognise the threading API:
280
+ //
281
+ #if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\
282
+ && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)\
283
+ && !defined(BOOST_HAS_MPTASKS)
284
+ # undef BOOST_HAS_THREADS
285
+ #endif
286
+
287
+ //
288
+ // Turn threading detail macros off if we don't (want to) use threading
289
+ //
290
+ #ifndef BOOST_HAS_THREADS
291
+ # undef BOOST_HAS_PTHREADS
292
+ # undef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
293
+ # undef BOOST_HAS_PTHREAD_YIELD
294
+ # undef BOOST_HAS_PTHREAD_DELAY_NP
295
+ # undef BOOST_HAS_WINTHREADS
296
+ # undef BOOST_HAS_BETHREADS
297
+ # undef BOOST_HAS_MPTASKS
298
+ #endif
299
+
300
+ //
301
+ // If the compiler claims to be C99 conformant, then it had better
302
+ // have a <stdint.h>:
303
+ //
304
+ # if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
305
+ # define BOOST_HAS_STDINT_H
306
+ # ifndef BOOST_HAS_LOG1P
307
+ # define BOOST_HAS_LOG1P
308
+ # endif
309
+ # ifndef BOOST_HAS_EXPM1
310
+ # define BOOST_HAS_EXPM1
311
+ # endif
312
+ # endif
313
+
314
+ //
315
+ // Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
316
+ // Note that this is for backwards compatibility only.
317
+ //
318
+ # if !defined(BOOST_HAS_SLIST) && !defined(BOOST_NO_SLIST)
319
+ # define BOOST_NO_SLIST
320
+ # endif
321
+
322
+ # if !defined(BOOST_HAS_HASH) && !defined(BOOST_NO_HASH)
323
+ # define BOOST_NO_HASH
324
+ # endif
325
+
326
+ //
327
+ // Set BOOST_SLIST_HEADER if not set already:
328
+ //
329
+ #if defined(BOOST_HAS_SLIST) && !defined(BOOST_SLIST_HEADER)
330
+ # define BOOST_SLIST_HEADER <slist>
331
+ #endif
332
+
333
+ //
334
+ // Set BOOST_HASH_SET_HEADER if not set already:
335
+ //
336
+ #if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_SET_HEADER)
337
+ # define BOOST_HASH_SET_HEADER <hash_set>
338
+ #endif
339
+
340
+ //
341
+ // Set BOOST_HASH_MAP_HEADER if not set already:
342
+ //
343
+ #if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_MAP_HEADER)
344
+ # define BOOST_HASH_MAP_HEADER <hash_map>
345
+ #endif
346
+
347
+ // BOOST_HAS_ABI_HEADERS
348
+ // This macro gets set if we have headers that fix the ABI,
349
+ // and prevent ODR violations when linking to external libraries:
350
+ #if defined(BOOST_ABI_PREFIX) && defined(BOOST_ABI_SUFFIX) && !defined(BOOST_HAS_ABI_HEADERS)
351
+ # define BOOST_HAS_ABI_HEADERS
352
+ #endif
353
+
354
+ #if defined(BOOST_HAS_ABI_HEADERS) && defined(BOOST_DISABLE_ABI_HEADERS)
355
+ # undef BOOST_HAS_ABI_HEADERS
356
+ #endif
357
+
358
+ // BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
359
+ // Because std::size_t usage is so common, even in boost headers which do not
360
+ // otherwise use the C library, the <cstddef> workaround is included here so
361
+ // that ugly workaround code need not appear in many other boost headers.
362
+ // NOTE WELL: This is a workaround for non-conforming compilers; <cstddef>
363
+ // must still be #included in the usual places so that <cstddef> inclusion
364
+ // works as expected with standard conforming compilers. The resulting
365
+ // double inclusion of <cstddef> is harmless.
366
+
367
+ # if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)
368
+ # include <cstddef>
369
+ namespace std { using ::ptrdiff_t; using ::size_t; }
370
+ # endif
371
+
372
+ // Workaround for the unfortunate min/max macros defined by some platform headers
373
+
374
+ #define BOOST_PREVENT_MACRO_SUBSTITUTION
375
+
376
+ #ifndef BOOST_USING_STD_MIN
377
+ # define BOOST_USING_STD_MIN() using std::min
378
+ #endif
379
+
380
+ #ifndef BOOST_USING_STD_MAX
381
+ # define BOOST_USING_STD_MAX() using std::max
382
+ #endif
383
+
384
+ // BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
385
+
386
+ # if defined(BOOST_NO_STD_MIN_MAX) && defined(__cplusplus)
387
+
388
+ namespace std {
389
+ template <class _Tp>
390
+ inline const _Tp& min BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
391
+ return __b < __a ? __b : __a;
392
+ }
393
+ template <class _Tp>
394
+ inline const _Tp& max BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
395
+ return __a < __b ? __b : __a;
396
+ }
397
+ }
398
+
399
+ # endif
400
+
401
+ // BOOST_STATIC_CONSTANT workaround --------------------------------------- //
402
+ // On compilers which don't allow in-class initialization of static integral
403
+ // constant members, we must use enums as a workaround if we want the constants
404
+ // to be available at compile-time. This macro gives us a convenient way to
405
+ // declare such constants.
406
+
407
+ # ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
408
+ # define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
409
+ # else
410
+ # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
411
+ # endif
412
+
413
+ // BOOST_USE_FACET / HAS_FACET workaround ----------------------------------//
414
+ // When the standard library does not have a conforming std::use_facet there
415
+ // are various workarounds available, but they differ from library to library.
416
+ // The same problem occurs with has_facet.
417
+ // These macros provide a consistent way to access a locale's facets.
418
+ // Usage:
419
+ // replace
420
+ // std::use_facet<Type>(loc);
421
+ // with
422
+ // BOOST_USE_FACET(Type, loc);
423
+ // Note do not add a std:: prefix to the front of BOOST_USE_FACET!
424
+ // Use for BOOST_HAS_FACET is analogous.
425
+
426
+ #if defined(BOOST_NO_STD_USE_FACET)
427
+ # ifdef BOOST_HAS_TWO_ARG_USE_FACET
428
+ # define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast<Type*>(0))
429
+ # define BOOST_HAS_FACET(Type, loc) std::has_facet(loc, static_cast<Type*>(0))
430
+ # elif defined(BOOST_HAS_MACRO_USE_FACET)
431
+ # define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type)
432
+ # define BOOST_HAS_FACET(Type, loc) std::_HAS(loc, Type)
433
+ # elif defined(BOOST_HAS_STLP_USE_FACET)
434
+ # define BOOST_USE_FACET(Type, loc) (*std::_Use_facet<Type >(loc))
435
+ # define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
436
+ # endif
437
+ #else
438
+ # define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc)
439
+ # define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
440
+ #endif
441
+
442
+ // BOOST_NESTED_TEMPLATE workaround ------------------------------------------//
443
+ // Member templates are supported by some compilers even though they can't use
444
+ // the A::template member<U> syntax, as a workaround replace:
445
+ //
446
+ // typedef typename A::template rebind<U> binder;
447
+ //
448
+ // with:
449
+ //
450
+ // typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;
451
+
452
+ #ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
453
+ # define BOOST_NESTED_TEMPLATE template
454
+ #else
455
+ # define BOOST_NESTED_TEMPLATE
456
+ #endif
457
+
458
+ // BOOST_UNREACHABLE_RETURN(x) workaround -------------------------------------//
459
+ // Normally evaluates to nothing, unless BOOST_NO_UNREACHABLE_RETURN_DETECTION
460
+ // is defined, in which case it evaluates to return x; Use when you have a return
461
+ // statement that can never be reached.
462
+
463
+ #ifndef BOOST_UNREACHABLE_RETURN
464
+ # ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION
465
+ # define BOOST_UNREACHABLE_RETURN(x) return x;
466
+ # else
467
+ # define BOOST_UNREACHABLE_RETURN(x)
468
+ # endif
469
+ #endif
470
+
471
+ // BOOST_DEDUCED_TYPENAME workaround ------------------------------------------//
472
+ //
473
+ // Some compilers don't support the use of `typename' for dependent
474
+ // types in deduced contexts, e.g.
475
+ //
476
+ // template <class T> void f(T, typename T::type);
477
+ // ^^^^^^^^
478
+ // Replace these declarations with:
479
+ //
480
+ // template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);
481
+
482
+ #ifndef BOOST_NO_DEDUCED_TYPENAME
483
+ # define BOOST_DEDUCED_TYPENAME typename
484
+ #else
485
+ # define BOOST_DEDUCED_TYPENAME
486
+ #endif
487
+
488
+ #ifndef BOOST_NO_TYPENAME_WITH_CTOR
489
+ # define BOOST_CTOR_TYPENAME typename
490
+ #else
491
+ # define BOOST_CTOR_TYPENAME
492
+ #endif
493
+
494
+ //
495
+ // If we're on a CUDA device (note DEVICE not HOST, irrespective of compiler) then disable __int128 and __float128 support if present:
496
+ //
497
+ #if defined(__CUDA_ARCH__) && defined(BOOST_HAS_FLOAT128)
498
+ # undef BOOST_HAS_FLOAT128
499
+ #endif
500
+ #if defined(__CUDA_ARCH__) && defined(BOOST_HAS_INT128)
501
+ # undef BOOST_HAS_INT128
502
+ #endif
503
+
504
+ // long long workaround ------------------------------------------//
505
+ // On gcc (and maybe other compilers?) long long is alway supported
506
+ // but it's use may generate either warnings (with -ansi), or errors
507
+ // (with -pedantic -ansi) unless it's use is prefixed by __extension__
508
+ //
509
+ #if defined(BOOST_HAS_LONG_LONG) && defined(__cplusplus)
510
+ namespace boost{
511
+ # ifdef __GNUC__
512
+ __extension__ typedef long long long_long_type;
513
+ __extension__ typedef unsigned long long ulong_long_type;
514
+ # else
515
+ typedef long long long_long_type;
516
+ typedef unsigned long long ulong_long_type;
517
+ # endif
518
+ }
519
+ #endif
520
+ // same again for __int128:
521
+ #if defined(BOOST_HAS_INT128) && defined(__cplusplus)
522
+ namespace boost{
523
+ # ifdef __GNUC__
524
+ __extension__ typedef __int128 int128_type;
525
+ __extension__ typedef unsigned __int128 uint128_type;
526
+ # else
527
+ typedef __int128 int128_type;
528
+ typedef unsigned __int128 uint128_type;
529
+ # endif
530
+ }
531
+ #endif
532
+ // same again for __float128:
533
+ #if defined(BOOST_HAS_FLOAT128) && defined(__cplusplus)
534
+ namespace boost {
535
+ # ifdef __GNUC__
536
+ __extension__ typedef __float128 float128_type;
537
+ # else
538
+ typedef __float128 float128_type;
539
+ # endif
540
+ }
541
+ #endif
542
+
543
+ // BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------//
544
+
545
+ // These macros are obsolete. Port away and remove.
546
+
547
+ # define BOOST_EXPLICIT_TEMPLATE_TYPE(t)
548
+ # define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
549
+ # define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
550
+ # define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
551
+
552
+ # define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
553
+ # define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
554
+ # define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
555
+ # define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
556
+
557
+ // When BOOST_NO_STD_TYPEINFO is defined, we can just import
558
+ // the global definition into std namespace,
559
+ // see https://svn.boost.org/trac10/ticket/4115
560
+ #if defined(BOOST_NO_STD_TYPEINFO) && defined(__cplusplus) && defined(BOOST_MSVC)
561
+ #include <typeinfo>
562
+ namespace std{ using ::type_info; }
563
+ // Since we do now have typeinfo, undef the macro:
564
+ #undef BOOST_NO_STD_TYPEINFO
565
+ #endif
566
+
567
+ // ---------------------------------------------------------------------------//
568
+
569
+ // Helper macro BOOST_STRINGIZE:
570
+ // Helper macro BOOST_JOIN:
571
+
572
+ #include <boost/config/helper_macros.hpp>
573
+
574
+ //
575
+ // Set some default values for compiler/library/platform names.
576
+ // These are for debugging config setup only:
577
+ //
578
+ # ifndef BOOST_COMPILER
579
+ # define BOOST_COMPILER "Unknown ISO C++ Compiler"
580
+ # endif
581
+ # ifndef BOOST_STDLIB
582
+ # define BOOST_STDLIB "Unknown ISO standard library"
583
+ # endif
584
+ # ifndef BOOST_PLATFORM
585
+ # if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
586
+ || defined(_POSIX_SOURCE)
587
+ # define BOOST_PLATFORM "Generic Unix"
588
+ # else
589
+ # define BOOST_PLATFORM "Unknown"
590
+ # endif
591
+ # endif
592
+
593
+ //
594
+ // Set some default values GPU support
595
+ //
596
+ # ifndef BOOST_GPU_ENABLED
597
+ # define BOOST_GPU_ENABLED
598
+ # endif
599
+
600
+ // BOOST_RESTRICT ---------------------------------------------//
601
+ // Macro to use in place of 'restrict' keyword variants
602
+ #if !defined(BOOST_RESTRICT)
603
+ # if defined(_MSC_VER)
604
+ # define BOOST_RESTRICT __restrict
605
+ # if !defined(BOOST_NO_RESTRICT_REFERENCES) && (_MSC_FULL_VER < 190023026)
606
+ # define BOOST_NO_RESTRICT_REFERENCES
607
+ # endif
608
+ # elif defined(__GNUC__) && __GNUC__ > 3
609
+ // Clang also defines __GNUC__ (as 4)
610
+ # define BOOST_RESTRICT __restrict__
611
+ # else
612
+ # define BOOST_RESTRICT
613
+ # if !defined(BOOST_NO_RESTRICT_REFERENCES)
614
+ # define BOOST_NO_RESTRICT_REFERENCES
615
+ # endif
616
+ # endif
617
+ #endif
618
+
619
+ // BOOST_MAY_ALIAS -----------------------------------------------//
620
+ // The macro expands to an attribute to mark a type that is allowed to alias other types.
621
+ // The macro is defined in the compiler-specific headers.
622
+ #if !defined(BOOST_MAY_ALIAS)
623
+ # define BOOST_NO_MAY_ALIAS
624
+ # define BOOST_MAY_ALIAS
625
+ #endif
626
+
627
+ // BOOST_FORCEINLINE ---------------------------------------------//
628
+ // Macro to use in place of 'inline' to force a function to be inline
629
+ #if !defined(BOOST_FORCEINLINE)
630
+ # if defined(_MSC_VER)
631
+ # define BOOST_FORCEINLINE __forceinline
632
+ # elif defined(__GNUC__) && __GNUC__ > 3
633
+ // Clang also defines __GNUC__ (as 4)
634
+ # define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
635
+ # else
636
+ # define BOOST_FORCEINLINE inline
637
+ # endif
638
+ #endif
639
+
640
+ // BOOST_NOINLINE ---------------------------------------------//
641
+ // Macro to use in place of 'inline' to prevent a function to be inlined
642
+ #if !defined(BOOST_NOINLINE)
643
+ # if defined(_MSC_VER)
644
+ # define BOOST_NOINLINE __declspec(noinline)
645
+ # elif defined(__GNUC__) && __GNUC__ > 3
646
+ // Clang also defines __GNUC__ (as 4)
647
+ # if defined(__CUDACC__)
648
+ // nvcc doesn't always parse __noinline__,
649
+ // see: https://svn.boost.org/trac/boost/ticket/9392
650
+ # define BOOST_NOINLINE __attribute__ ((noinline))
651
+ # elif defined(__HIP__)
652
+ // See https://github.com/boostorg/config/issues/392
653
+ # define BOOST_NOINLINE __attribute__ ((noinline))
654
+ # else
655
+ # define BOOST_NOINLINE __attribute__ ((__noinline__))
656
+ # endif
657
+ # else
658
+ # define BOOST_NOINLINE
659
+ # endif
660
+ #endif
661
+
662
+ // BOOST_NORETURN ---------------------------------------------//
663
+ // Macro to use before a function declaration/definition to designate
664
+ // the function as not returning normally (i.e. with a return statement
665
+ // or by leaving the function scope, if the function return type is void).
666
+ #if !defined(BOOST_NORETURN)
667
+ # if defined(_MSC_VER)
668
+ # define BOOST_NORETURN __declspec(noreturn)
669
+ # elif defined(__GNUC__) || defined(__CODEGEARC__) && defined(__clang__)
670
+ # define BOOST_NORETURN __attribute__ ((__noreturn__))
671
+ # elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130)
672
+ # if __has_attribute(noreturn)
673
+ # define BOOST_NORETURN [[noreturn]]
674
+ # endif
675
+ # elif defined(__has_cpp_attribute)
676
+ # if __has_cpp_attribute(noreturn)
677
+ # define BOOST_NORETURN [[noreturn]]
678
+ # endif
679
+ # endif
680
+ #endif
681
+
682
+ #if !defined(BOOST_NORETURN)
683
+ # define BOOST_NO_NORETURN
684
+ # define BOOST_NORETURN
685
+ #endif
686
+
687
+ // BOOST_DEPRECATED -------------------------------------------//
688
+ // The macro can be used to mark deprecated symbols, such as functions, objects and types.
689
+ // Any code that uses these symbols will produce warnings, possibly with a message specified
690
+ // as an argument. The warnings can be suppressed by defining BOOST_ALLOW_DEPRECATED_SYMBOLS
691
+ // or BOOST_ALLOW_DEPRECATED.
692
+ #if !defined(BOOST_DEPRECATED) && __cplusplus >= 201402
693
+ #define BOOST_DEPRECATED(msg) [[deprecated(msg)]]
694
+ #endif
695
+
696
+ #if defined(BOOST_ALLOW_DEPRECATED_SYMBOLS) || defined(BOOST_ALLOW_DEPRECATED)
697
+ #undef BOOST_DEPRECATED
698
+ #endif
699
+
700
+ #if !defined(BOOST_DEPRECATED)
701
+ #define BOOST_DEPRECATED(msg)
702
+ #endif
703
+
704
+ // Branch prediction hints
705
+ // These macros are intended to wrap conditional expressions that yield true or false
706
+ //
707
+ // if (BOOST_LIKELY(var == 10))
708
+ // {
709
+ // // the most probable code here
710
+ // }
711
+ //
712
+ #if !defined(BOOST_LIKELY)
713
+ # define BOOST_LIKELY(x) x
714
+ #endif
715
+ #if !defined(BOOST_UNLIKELY)
716
+ # define BOOST_UNLIKELY(x) x
717
+ #endif
718
+
719
+ #if !defined(BOOST_NO_CXX11_OVERRIDE)
720
+ # define BOOST_OVERRIDE override
721
+ #else
722
+ # define BOOST_OVERRIDE
723
+ #endif
724
+
725
+ // Type and data alignment specification
726
+ //
727
+ #if !defined(BOOST_ALIGNMENT)
728
+ # if !defined(BOOST_NO_CXX11_ALIGNAS)
729
+ # define BOOST_ALIGNMENT(x) alignas(x)
730
+ # elif defined(_MSC_VER)
731
+ # define BOOST_ALIGNMENT(x) __declspec(align(x))
732
+ # elif defined(__GNUC__)
733
+ # define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x)))
734
+ # else
735
+ # define BOOST_NO_ALIGNMENT
736
+ # define BOOST_ALIGNMENT(x)
737
+ # endif
738
+ #endif
739
+
740
+ // Lack of non-public defaulted functions is implied by the lack of any defaulted functions
741
+ #if !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS) && defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
742
+ # define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
743
+ #endif
744
+
745
+ // Lack of defaulted moves is implied by the lack of either rvalue references or any defaulted functions
746
+ #if !defined(BOOST_NO_CXX11_DEFAULTED_MOVES) && (defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || defined(BOOST_NO_CXX11_RVALUE_REFERENCES))
747
+ # define BOOST_NO_CXX11_DEFAULTED_MOVES
748
+ #endif
749
+
750
+ // Defaulted and deleted function declaration helpers
751
+ // These macros are intended to be inside a class definition.
752
+ // BOOST_DEFAULTED_FUNCTION accepts the function declaration and its
753
+ // body, which will be used if the compiler doesn't support defaulted functions.
754
+ // BOOST_DELETED_FUNCTION only accepts the function declaration. It
755
+ // will expand to a private function declaration, if the compiler doesn't support
756
+ // deleted functions. Because of this it is recommended to use BOOST_DELETED_FUNCTION
757
+ // in the end of the class definition.
758
+ //
759
+ // class my_class
760
+ // {
761
+ // public:
762
+ // // Default-constructible
763
+ // BOOST_DEFAULTED_FUNCTION(my_class(), {})
764
+ // // Copying prohibited
765
+ // BOOST_DELETED_FUNCTION(my_class(my_class const&))
766
+ // BOOST_DELETED_FUNCTION(my_class& operator= (my_class const&))
767
+ // };
768
+ //
769
+ #if !(defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS))
770
+ # define BOOST_DEFAULTED_FUNCTION(fun, body) fun = default;
771
+ #else
772
+ # define BOOST_DEFAULTED_FUNCTION(fun, body) fun body
773
+ #endif
774
+
775
+ #if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
776
+ # define BOOST_DELETED_FUNCTION(fun) fun = delete;
777
+ #else
778
+ # define BOOST_DELETED_FUNCTION(fun) private: fun;
779
+ #endif
780
+
781
+ //
782
+ // Set BOOST_NO_DECLTYPE_N3276 when BOOST_NO_DECLTYPE is defined
783
+ //
784
+ #if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
785
+ #define BOOST_NO_CXX11_DECLTYPE_N3276 BOOST_NO_CXX11_DECLTYPE
786
+ #endif
787
+
788
+ // -------------------- Deprecated macros for 1.50 ---------------------------
789
+ // These will go away in a future release
790
+
791
+ // Use BOOST_NO_CXX11_HDR_UNORDERED_SET or BOOST_NO_CXX11_HDR_UNORDERED_MAP
792
+ // instead of BOOST_NO_STD_UNORDERED
793
+ #if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) || defined (BOOST_NO_CXX11_HDR_UNORDERED_SET)
794
+ # ifndef BOOST_NO_CXX11_STD_UNORDERED
795
+ # define BOOST_NO_CXX11_STD_UNORDERED
796
+ # endif
797
+ #endif
798
+
799
+ // Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST instead of BOOST_NO_INITIALIZER_LISTS
800
+ #if defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS)
801
+ # define BOOST_NO_INITIALIZER_LISTS
802
+ #endif
803
+
804
+ // Use BOOST_NO_CXX11_HDR_ARRAY instead of BOOST_NO_0X_HDR_ARRAY
805
+ #if defined(BOOST_NO_CXX11_HDR_ARRAY) && !defined(BOOST_NO_0X_HDR_ARRAY)
806
+ # define BOOST_NO_0X_HDR_ARRAY
807
+ #endif
808
+ // Use BOOST_NO_CXX11_HDR_CHRONO instead of BOOST_NO_0X_HDR_CHRONO
809
+ #if defined(BOOST_NO_CXX11_HDR_CHRONO) && !defined(BOOST_NO_0X_HDR_CHRONO)
810
+ # define BOOST_NO_0X_HDR_CHRONO
811
+ #endif
812
+ // Use BOOST_NO_CXX11_HDR_CODECVT instead of BOOST_NO_0X_HDR_CODECVT
813
+ #if defined(BOOST_NO_CXX11_HDR_CODECVT) && !defined(BOOST_NO_0X_HDR_CODECVT)
814
+ # define BOOST_NO_0X_HDR_CODECVT
815
+ #endif
816
+ // Use BOOST_NO_CXX11_HDR_CONDITION_VARIABLE instead of BOOST_NO_0X_HDR_CONDITION_VARIABLE
817
+ #if defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE) && !defined(BOOST_NO_0X_HDR_CONDITION_VARIABLE)
818
+ # define BOOST_NO_0X_HDR_CONDITION_VARIABLE
819
+ #endif
820
+ // Use BOOST_NO_CXX11_HDR_FORWARD_LIST instead of BOOST_NO_0X_HDR_FORWARD_LIST
821
+ #if defined(BOOST_NO_CXX11_HDR_FORWARD_LIST) && !defined(BOOST_NO_0X_HDR_FORWARD_LIST)
822
+ # define BOOST_NO_0X_HDR_FORWARD_LIST
823
+ #endif
824
+ // Use BOOST_NO_CXX11_HDR_FUTURE instead of BOOST_NO_0X_HDR_FUTURE
825
+ #if defined(BOOST_NO_CXX11_HDR_FUTURE) && !defined(BOOST_NO_0X_HDR_FUTURE)
826
+ # define BOOST_NO_0X_HDR_FUTURE
827
+ #endif
828
+
829
+ // Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST
830
+ // instead of BOOST_NO_0X_HDR_INITIALIZER_LIST or BOOST_NO_INITIALIZER_LISTS
831
+ #ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
832
+ # ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST
833
+ # define BOOST_NO_0X_HDR_INITIALIZER_LIST
834
+ # endif
835
+ # ifndef BOOST_NO_INITIALIZER_LISTS
836
+ # define BOOST_NO_INITIALIZER_LISTS
837
+ # endif
838
+ #endif
839
+
840
+ // Use BOOST_NO_CXX11_HDR_MUTEX instead of BOOST_NO_0X_HDR_MUTEX
841
+ #if defined(BOOST_NO_CXX11_HDR_MUTEX) && !defined(BOOST_NO_0X_HDR_MUTEX)
842
+ # define BOOST_NO_0X_HDR_MUTEX
843
+ #endif
844
+ // Use BOOST_NO_CXX11_HDR_RANDOM instead of BOOST_NO_0X_HDR_RANDOM
845
+ #if defined(BOOST_NO_CXX11_HDR_RANDOM) && !defined(BOOST_NO_0X_HDR_RANDOM)
846
+ # define BOOST_NO_0X_HDR_RANDOM
847
+ #endif
848
+ // Use BOOST_NO_CXX11_HDR_RATIO instead of BOOST_NO_0X_HDR_RATIO
849
+ #if defined(BOOST_NO_CXX11_HDR_RATIO) && !defined(BOOST_NO_0X_HDR_RATIO)
850
+ # define BOOST_NO_0X_HDR_RATIO
851
+ #endif
852
+ // Use BOOST_NO_CXX11_HDR_REGEX instead of BOOST_NO_0X_HDR_REGEX
853
+ #if defined(BOOST_NO_CXX11_HDR_REGEX) && !defined(BOOST_NO_0X_HDR_REGEX)
854
+ # define BOOST_NO_0X_HDR_REGEX
855
+ #endif
856
+ // Use BOOST_NO_CXX11_HDR_SYSTEM_ERROR instead of BOOST_NO_0X_HDR_SYSTEM_ERROR
857
+ #if defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_0X_HDR_SYSTEM_ERROR)
858
+ # define BOOST_NO_0X_HDR_SYSTEM_ERROR
859
+ #endif
860
+ // Use BOOST_NO_CXX11_HDR_THREAD instead of BOOST_NO_0X_HDR_THREAD
861
+ #if defined(BOOST_NO_CXX11_HDR_THREAD) && !defined(BOOST_NO_0X_HDR_THREAD)
862
+ # define BOOST_NO_0X_HDR_THREAD
863
+ #endif
864
+ // Use BOOST_NO_CXX11_HDR_TUPLE instead of BOOST_NO_0X_HDR_TUPLE
865
+ #if defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_0X_HDR_TUPLE)
866
+ # define BOOST_NO_0X_HDR_TUPLE
867
+ #endif
868
+ // Use BOOST_NO_CXX11_HDR_TYPE_TRAITS instead of BOOST_NO_0X_HDR_TYPE_TRAITS
869
+ #if defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) && !defined(BOOST_NO_0X_HDR_TYPE_TRAITS)
870
+ # define BOOST_NO_0X_HDR_TYPE_TRAITS
871
+ #endif
872
+ // Use BOOST_NO_CXX11_HDR_TYPEINDEX instead of BOOST_NO_0X_HDR_TYPEINDEX
873
+ #if defined(BOOST_NO_CXX11_HDR_TYPEINDEX) && !defined(BOOST_NO_0X_HDR_TYPEINDEX)
874
+ # define BOOST_NO_0X_HDR_TYPEINDEX
875
+ #endif
876
+ // Use BOOST_NO_CXX11_HDR_UNORDERED_MAP instead of BOOST_NO_0X_HDR_UNORDERED_MAP
877
+ #if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) && !defined(BOOST_NO_0X_HDR_UNORDERED_MAP)
878
+ # define BOOST_NO_0X_HDR_UNORDERED_MAP
879
+ #endif
880
+ // Use BOOST_NO_CXX11_HDR_UNORDERED_SET instead of BOOST_NO_0X_HDR_UNORDERED_SET
881
+ #if defined(BOOST_NO_CXX11_HDR_UNORDERED_SET) && !defined(BOOST_NO_0X_HDR_UNORDERED_SET)
882
+ # define BOOST_NO_0X_HDR_UNORDERED_SET
883
+ #endif
884
+
885
+ // ------------------ End of deprecated macros for 1.50 ---------------------------
886
+
887
+ // -------------------- Deprecated macros for 1.51 ---------------------------
888
+ // These will go away in a future release
889
+
890
+ // Use BOOST_NO_CXX11_AUTO_DECLARATIONS instead of BOOST_NO_AUTO_DECLARATIONS
891
+ #if defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_NO_AUTO_DECLARATIONS)
892
+ # define BOOST_NO_AUTO_DECLARATIONS
893
+ #endif
894
+ // Use BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS instead of BOOST_NO_AUTO_MULTIDECLARATIONS
895
+ #if defined(BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS) && !defined(BOOST_NO_AUTO_MULTIDECLARATIONS)
896
+ # define BOOST_NO_AUTO_MULTIDECLARATIONS
897
+ #endif
898
+ // Use BOOST_NO_CXX11_CHAR16_T instead of BOOST_NO_CHAR16_T
899
+ #if defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CHAR16_T)
900
+ # define BOOST_NO_CHAR16_T
901
+ #endif
902
+ // Use BOOST_NO_CXX11_CHAR32_T instead of BOOST_NO_CHAR32_T
903
+ #if defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CHAR32_T)
904
+ # define BOOST_NO_CHAR32_T
905
+ #endif
906
+ // Use BOOST_NO_CXX11_TEMPLATE_ALIASES instead of BOOST_NO_TEMPLATE_ALIASES
907
+ #if defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !defined(BOOST_NO_TEMPLATE_ALIASES)
908
+ # define BOOST_NO_TEMPLATE_ALIASES
909
+ #endif
910
+ // Use BOOST_NO_CXX11_CONSTEXPR instead of BOOST_NO_CONSTEXPR
911
+ #if defined(BOOST_NO_CXX11_CONSTEXPR) && !defined(BOOST_NO_CONSTEXPR)
912
+ # define BOOST_NO_CONSTEXPR
913
+ #endif
914
+ // Use BOOST_NO_CXX11_DECLTYPE_N3276 instead of BOOST_NO_DECLTYPE_N3276
915
+ #if defined(BOOST_NO_CXX11_DECLTYPE_N3276) && !defined(BOOST_NO_DECLTYPE_N3276)
916
+ # define BOOST_NO_DECLTYPE_N3276
917
+ #endif
918
+ // Use BOOST_NO_CXX11_DECLTYPE instead of BOOST_NO_DECLTYPE
919
+ #if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_DECLTYPE)
920
+ # define BOOST_NO_DECLTYPE
921
+ #endif
922
+ // Use BOOST_NO_CXX11_DEFAULTED_FUNCTIONS instead of BOOST_NO_DEFAULTED_FUNCTIONS
923
+ #if defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_DEFAULTED_FUNCTIONS)
924
+ # define BOOST_NO_DEFAULTED_FUNCTIONS
925
+ #endif
926
+ // Use BOOST_NO_CXX11_DELETED_FUNCTIONS instead of BOOST_NO_DELETED_FUNCTIONS
927
+ #if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_NO_DELETED_FUNCTIONS)
928
+ # define BOOST_NO_DELETED_FUNCTIONS
929
+ #endif
930
+ // Use BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS instead of BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
931
+ #if defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) && !defined(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS)
932
+ # define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
933
+ #endif
934
+ // Use BOOST_NO_CXX11_EXTERN_TEMPLATE instead of BOOST_NO_EXTERN_TEMPLATE
935
+ #if defined(BOOST_NO_CXX11_EXTERN_TEMPLATE) && !defined(BOOST_NO_EXTERN_TEMPLATE)
936
+ # define BOOST_NO_EXTERN_TEMPLATE
937
+ #endif
938
+ // Use BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS instead of BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
939
+ #if defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !defined(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS)
940
+ # define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
941
+ #endif
942
+ // Use BOOST_NO_CXX11_LAMBDAS instead of BOOST_NO_LAMBDAS
943
+ #if defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_LAMBDAS)
944
+ # define BOOST_NO_LAMBDAS
945
+ #endif
946
+ // Use BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS instead of BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
947
+ #if defined(BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS) && !defined(BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS)
948
+ # define BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
949
+ #endif
950
+ // Use BOOST_NO_CXX11_NOEXCEPT instead of BOOST_NO_NOEXCEPT
951
+ #if defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_NOEXCEPT)
952
+ # define BOOST_NO_NOEXCEPT
953
+ #endif
954
+ // Use BOOST_NO_CXX11_NULLPTR instead of BOOST_NO_NULLPTR
955
+ #if defined(BOOST_NO_CXX11_NULLPTR) && !defined(BOOST_NO_NULLPTR)
956
+ # define BOOST_NO_NULLPTR
957
+ #endif
958
+ // Use BOOST_NO_CXX11_RAW_LITERALS instead of BOOST_NO_RAW_LITERALS
959
+ #if defined(BOOST_NO_CXX11_RAW_LITERALS) && !defined(BOOST_NO_RAW_LITERALS)
960
+ # define BOOST_NO_RAW_LITERALS
961
+ #endif
962
+ // Use BOOST_NO_CXX11_RVALUE_REFERENCES instead of BOOST_NO_RVALUE_REFERENCES
963
+ #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_RVALUE_REFERENCES)
964
+ # define BOOST_NO_RVALUE_REFERENCES
965
+ #endif
966
+ // Use BOOST_NO_CXX11_SCOPED_ENUMS instead of BOOST_NO_SCOPED_ENUMS
967
+ #if defined(BOOST_NO_CXX11_SCOPED_ENUMS) && !defined(BOOST_NO_SCOPED_ENUMS)
968
+ # define BOOST_NO_SCOPED_ENUMS
969
+ #endif
970
+ // Use BOOST_NO_CXX11_STATIC_ASSERT instead of BOOST_NO_STATIC_ASSERT
971
+ #if defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_NO_STATIC_ASSERT)
972
+ # define BOOST_NO_STATIC_ASSERT
973
+ #endif
974
+ // Use BOOST_NO_CXX11_STD_UNORDERED instead of BOOST_NO_STD_UNORDERED
975
+ #if defined(BOOST_NO_CXX11_STD_UNORDERED) && !defined(BOOST_NO_STD_UNORDERED)
976
+ # define BOOST_NO_STD_UNORDERED
977
+ #endif
978
+ // Use BOOST_NO_CXX11_UNICODE_LITERALS instead of BOOST_NO_UNICODE_LITERALS
979
+ #if defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(BOOST_NO_UNICODE_LITERALS)
980
+ # define BOOST_NO_UNICODE_LITERALS
981
+ #endif
982
+ // Use BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX instead of BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
983
+ #if defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) && !defined(BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX)
984
+ # define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
985
+ #endif
986
+ // Use BOOST_NO_CXX11_VARIADIC_TEMPLATES instead of BOOST_NO_VARIADIC_TEMPLATES
987
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_VARIADIC_TEMPLATES)
988
+ # define BOOST_NO_VARIADIC_TEMPLATES
989
+ #endif
990
+ // Use BOOST_NO_CXX11_VARIADIC_MACROS instead of BOOST_NO_VARIADIC_MACROS
991
+ #if defined(BOOST_NO_CXX11_VARIADIC_MACROS) && !defined(BOOST_NO_VARIADIC_MACROS)
992
+ # define BOOST_NO_VARIADIC_MACROS
993
+ #endif
994
+ // Use BOOST_NO_CXX11_NUMERIC_LIMITS instead of BOOST_NO_NUMERIC_LIMITS_LOWEST
995
+ #if defined(BOOST_NO_CXX11_NUMERIC_LIMITS) && !defined(BOOST_NO_NUMERIC_LIMITS_LOWEST)
996
+ # define BOOST_NO_NUMERIC_LIMITS_LOWEST
997
+ #endif
998
+ // ------------------ End of deprecated macros for 1.51 ---------------------------
999
+
1000
+
1001
+ //
1002
+ // Helper macro for marking types and methods final
1003
+ //
1004
+ #if !defined(BOOST_NO_CXX11_FINAL)
1005
+ # define BOOST_FINAL final
1006
+ #else
1007
+ # define BOOST_FINAL
1008
+ #endif
1009
+
1010
+ //
1011
+ // Helper macros BOOST_NOEXCEPT, BOOST_NOEXCEPT_IF, BOOST_NOEXCEPT_EXPR
1012
+ // These aid the transition to C++11 while still supporting C++03 compilers
1013
+ //
1014
+ #ifdef BOOST_NO_CXX11_NOEXCEPT
1015
+ # define BOOST_NOEXCEPT
1016
+ # define BOOST_NOEXCEPT_OR_NOTHROW throw()
1017
+ # define BOOST_NOEXCEPT_IF(Predicate)
1018
+ # define BOOST_NOEXCEPT_EXPR(Expression) false
1019
+ #else
1020
+ # define BOOST_NOEXCEPT noexcept
1021
+ # define BOOST_NOEXCEPT_OR_NOTHROW noexcept
1022
+ # define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
1023
+ # define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
1024
+ #endif
1025
+ //
1026
+ // Helper macro BOOST_FALLTHROUGH
1027
+ // Fallback definition of BOOST_FALLTHROUGH macro used to mark intended
1028
+ // fall-through between case labels in a switch statement. We use a definition
1029
+ // that requires a semicolon after it to avoid at least one type of misuse even
1030
+ // on unsupported compilers.
1031
+ //
1032
+ #ifndef BOOST_FALLTHROUGH
1033
+ # define BOOST_FALLTHROUGH ((void)0)
1034
+ #endif
1035
+
1036
+ //
1037
+ // constexpr workarounds
1038
+ //
1039
+ #if defined(BOOST_NO_CXX11_CONSTEXPR)
1040
+ #define BOOST_CONSTEXPR
1041
+ #define BOOST_CONSTEXPR_OR_CONST const
1042
+ #else
1043
+ #define BOOST_CONSTEXPR constexpr
1044
+ #define BOOST_CONSTEXPR_OR_CONST constexpr
1045
+ #endif
1046
+ #if defined(BOOST_NO_CXX14_CONSTEXPR)
1047
+ #define BOOST_CXX14_CONSTEXPR
1048
+ #else
1049
+ #define BOOST_CXX14_CONSTEXPR constexpr
1050
+ #endif
1051
+ #if !defined(BOOST_NO_CXX17_STRUCTURED_BINDINGS) && defined(BOOST_NO_CXX11_HDR_TUPLE)
1052
+ # define BOOST_NO_CXX17_STRUCTURED_BINDINGS
1053
+ #endif
1054
+
1055
+ //
1056
+ // C++17 inline variables
1057
+ //
1058
+ #if !defined(BOOST_NO_CXX17_INLINE_VARIABLES)
1059
+ #define BOOST_INLINE_VARIABLE inline
1060
+ #else
1061
+ #define BOOST_INLINE_VARIABLE
1062
+ #endif
1063
+ //
1064
+ // C++17 if constexpr
1065
+ //
1066
+ #if !defined(BOOST_NO_CXX17_IF_CONSTEXPR)
1067
+ # define BOOST_IF_CONSTEXPR if constexpr
1068
+ #else
1069
+ # define BOOST_IF_CONSTEXPR if
1070
+ #endif
1071
+
1072
+ #define BOOST_INLINE_CONSTEXPR BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST
1073
+
1074
+ //
1075
+ // Unused variable/typedef workarounds:
1076
+ //
1077
+ #ifndef BOOST_ATTRIBUTE_UNUSED
1078
+ # if defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130)
1079
+ # if __has_attribute(maybe_unused)
1080
+ # define BOOST_ATTRIBUTE_UNUSED [[maybe_unused]]
1081
+ # endif
1082
+ # elif defined(__has_cpp_attribute)
1083
+ # if __has_cpp_attribute(maybe_unused)
1084
+ # define BOOST_ATTRIBUTE_UNUSED [[maybe_unused]]
1085
+ # endif
1086
+ # endif
1087
+ #endif
1088
+
1089
+ #ifndef BOOST_ATTRIBUTE_UNUSED
1090
+ # define BOOST_ATTRIBUTE_UNUSED
1091
+ #endif
1092
+
1093
+ //
1094
+ // [[nodiscard]]:
1095
+ //
1096
+ #if defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130)
1097
+ #if __has_attribute(nodiscard)
1098
+ # define BOOST_ATTRIBUTE_NODISCARD [[nodiscard]]
1099
+ #endif
1100
+ #if __has_attribute(no_unique_address)
1101
+ # define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS [[no_unique_address]]
1102
+ #endif
1103
+ #elif defined(__has_cpp_attribute)
1104
+ // clang-6 accepts [[nodiscard]] with -std=c++14, but warns about it -pedantic
1105
+ #if __has_cpp_attribute(nodiscard) && !(defined(__clang__) && (__cplusplus < 201703L)) && !(defined(__GNUC__) && (__cplusplus < 201100))
1106
+ # define BOOST_ATTRIBUTE_NODISCARD [[nodiscard]]
1107
+ #endif
1108
+ #if __has_cpp_attribute(no_unique_address) && !(defined(__GNUC__) && (__cplusplus < 201100))
1109
+ # define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS [[no_unique_address]]
1110
+ #endif
1111
+ #endif
1112
+ #ifndef BOOST_ATTRIBUTE_NODISCARD
1113
+ # define BOOST_ATTRIBUTE_NODISCARD
1114
+ #endif
1115
+ #ifndef BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS
1116
+ # define BOOST_ATTRIBUTE_NO_UNIQUE_ADDRESS
1117
+ #endif
1118
+
1119
+ #define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST
1120
+
1121
+ #if !defined(BOOST_NO_CXX11_NULLPTR)
1122
+ # define BOOST_NULLPTR nullptr
1123
+ #else
1124
+ # define BOOST_NULLPTR 0
1125
+ #endif
1126
+
1127
+ //
1128
+ // Set BOOST_HAS_STATIC_ASSERT when BOOST_NO_CXX11_STATIC_ASSERT is not defined
1129
+ //
1130
+ #if !defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT)
1131
+ # define BOOST_HAS_STATIC_ASSERT
1132
+ #endif
1133
+
1134
+ //
1135
+ // Set BOOST_HAS_RVALUE_REFS when BOOST_NO_CXX11_RVALUE_REFERENCES is not defined
1136
+ //
1137
+ #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS)
1138
+ #define BOOST_HAS_RVALUE_REFS
1139
+ #endif
1140
+
1141
+ //
1142
+ // Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_CXX11_VARIADIC_TEMPLATES is not defined
1143
+ //
1144
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL)
1145
+ #define BOOST_HAS_VARIADIC_TMPL
1146
+ #endif
1147
+ //
1148
+ // Set BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS when
1149
+ // BOOST_NO_CXX11_VARIADIC_TEMPLATES is set:
1150
+ //
1151
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS)
1152
+ # define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
1153
+ #endif
1154
+
1155
+ // This is a catch all case for obsolete compilers / std libs:
1156
+ #if !defined(_YVALS) && !defined(_CPPLIB_VER) // msvc std lib already configured
1157
+ #if (!defined(__has_include) || (__cplusplus < 201700))
1158
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
1159
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
1160
+ # define BOOST_NO_CXX17_HDR_VARIANT
1161
+ # define BOOST_NO_CXX17_HDR_ANY
1162
+ # define BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
1163
+ # define BOOST_NO_CXX17_HDR_CHARCONV
1164
+ # define BOOST_NO_CXX17_HDR_EXECUTION
1165
+ # define BOOST_NO_CXX17_HDR_FILESYSTEM
1166
+ #else
1167
+ #if !__has_include(<optional>)
1168
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
1169
+ #endif
1170
+ #if !__has_include(<string_view>)
1171
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
1172
+ #endif
1173
+ #if !__has_include(<variant>)
1174
+ # define BOOST_NO_CXX17_HDR_VARIANT
1175
+ #endif
1176
+ #if !__has_include(<any>)
1177
+ # define BOOST_NO_CXX17_HDR_ANY
1178
+ #endif
1179
+ #if !__has_include(<memory_resource>)
1180
+ # define BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
1181
+ #endif
1182
+ #if !__has_include(<charconv>)
1183
+ # define BOOST_NO_CXX17_HDR_CHARCONV
1184
+ #endif
1185
+ #if !__has_include(<execution>)
1186
+ # define BOOST_NO_CXX17_HDR_EXECUTION
1187
+ #endif
1188
+ #if !__has_include(<filesystem>)
1189
+ # define BOOST_NO_CXX17_HDR_FILESYSTEM
1190
+ #endif
1191
+ #endif
1192
+ #endif
1193
+ //
1194
+ // Define the std level that the compiler claims to support:
1195
+ //
1196
+ #ifndef BOOST_CXX_VERSION
1197
+ # define BOOST_CXX_VERSION __cplusplus
1198
+ #endif
1199
+
1200
+ #if (!defined(__has_include) || (BOOST_CXX_VERSION < 201704))
1201
+ # define BOOST_NO_CXX20_HDR_BARRIER
1202
+ # define BOOST_NO_CXX20_HDR_FORMAT
1203
+ # define BOOST_NO_CXX20_HDR_SOURCE_LOCATION
1204
+ # define BOOST_NO_CXX20_HDR_BIT
1205
+ # define BOOST_NO_CXX20_HDR_LATCH
1206
+ # define BOOST_NO_CXX20_HDR_SPAN
1207
+ # define BOOST_NO_CXX20_HDR_COMPARE
1208
+ # define BOOST_NO_CXX20_HDR_NUMBERS
1209
+ # define BOOST_NO_CXX20_HDR_STOP_TOKEN
1210
+ # define BOOST_NO_CXX20_HDR_CONCEPTS
1211
+ # define BOOST_NO_CXX20_HDR_RANGES
1212
+ # define BOOST_NO_CXX20_HDR_SYNCSTREAM
1213
+ # define BOOST_NO_CXX20_HDR_COROUTINE
1214
+ # define BOOST_NO_CXX20_HDR_SEMAPHORE
1215
+ #else
1216
+ #if (!__has_include(<barrier>) || !defined(__cpp_lib_barrier) || (__cpp_lib_barrier < 201907L)) && !defined(BOOST_NO_CXX20_HDR_BARRIER)
1217
+ # define BOOST_NO_CXX20_HDR_BARRIER
1218
+ #endif
1219
+ #if (!__has_include(<format>) || !defined(__cpp_lib_format) || (__cpp_lib_format < 201907L)) && !defined(BOOST_NO_CXX20_HDR_FORMAT)
1220
+ # define BOOST_NO_CXX20_HDR_FORMAT
1221
+ #endif
1222
+ #if (!__has_include(<source_location>) || !defined(__cpp_lib_source_location) || (__cpp_lib_source_location < 201907L)) && !defined(BOOST_NO_CXX20_HDR_SOURCE_LOCATION)
1223
+ # define BOOST_NO_CXX20_HDR_SOURCE_LOCATION
1224
+ #endif
1225
+ #if (!__has_include(<bit>) || !defined(__cpp_lib_bit_cast) || (__cpp_lib_bit_cast < 201806L) || !defined(__cpp_lib_bitops) || (__cpp_lib_bitops < 201907L) || !defined(__cpp_lib_endian) || (__cpp_lib_endian < 201907L)) && !defined(BOOST_NO_CXX20_HDR_BIT)
1226
+ # define BOOST_NO_CXX20_HDR_BIT
1227
+ #endif
1228
+ #if (!__has_include(<latch>) || !defined(__cpp_lib_latch) || (__cpp_lib_latch < 201907L)) && !defined(BOOST_NO_CXX20_HDR_LATCH)
1229
+ # define BOOST_NO_CXX20_HDR_LATCH
1230
+ #endif
1231
+ #if (!__has_include(<span>) || !defined(__cpp_lib_span) || (__cpp_lib_span < 202002L)) && !defined(BOOST_NO_CXX20_HDR_SPAN)
1232
+ # define BOOST_NO_CXX20_HDR_SPAN
1233
+ #endif
1234
+ #if (!__has_include(<compare>) || !defined(__cpp_lib_three_way_comparison) || (__cpp_lib_three_way_comparison < 201907L)) && !defined(BOOST_NO_CXX20_HDR_COMPARE)
1235
+ # define BOOST_NO_CXX20_HDR_COMPARE
1236
+ #endif
1237
+ #if (!__has_include(<numbers>) || !defined(__cpp_lib_math_constants) || (__cpp_lib_math_constants < 201907L)) && !defined(BOOST_NO_CXX20_HDR_NUMBERS)
1238
+ # define BOOST_NO_CXX20_HDR_NUMBERS
1239
+ #endif
1240
+ #if (!__has_include(<stop_token>) || !defined(__cpp_lib_jthread) || (__cpp_lib_jthread < 201911L)) && !defined(BOOST_NO_CXX20_HDR_STOP_TOKEN)
1241
+ # define BOOST_NO_CXX20_HDR_STOP_TOKEN
1242
+ #endif
1243
+ #if (!__has_include(<concepts>) || !defined(__cpp_lib_concepts) || (__cpp_lib_concepts < 202002L)) && !defined(_YVALS) && !defined(_CPPLIB_VER) && !defined(BOOST_NO_CXX20_HDR_CONCEPTS)
1244
+ # define BOOST_NO_CXX20_HDR_CONCEPTS
1245
+ #endif
1246
+ #if (!__has_include(<ranges>) || !defined(__cpp_lib_ranges) || (__cpp_lib_ranges < 201911L)) && !defined(BOOST_NO_CXX20_HDR_RANGES)
1247
+ # define BOOST_NO_CXX20_HDR_RANGES
1248
+ #endif
1249
+ #if (!__has_include(<syncstream>) || !defined(__cpp_lib_syncbuf) || (__cpp_lib_syncbuf < 201803L)) && !defined(BOOST_NO_CXX20_HDR_SYNCSTREAM)
1250
+ # define BOOST_NO_CXX20_HDR_SYNCSTREAM
1251
+ #endif
1252
+ #if (!__has_include(<coroutine>) || !defined(__cpp_lib_coroutine) || (__cpp_lib_coroutine < 201902L)) && !defined(BOOST_NO_CXX20_HDR_COROUTINE)
1253
+ # define BOOST_NO_CXX20_HDR_COROUTINE
1254
+ #endif
1255
+ #if (!__has_include(<semaphore>) || !defined(__cpp_lib_semaphore) || (__cpp_lib_semaphore < 201907L)) && !defined(BOOST_NO_CXX20_HDR_SEMAPHORE)
1256
+ # define BOOST_NO_CXX20_HDR_SEMAPHORE
1257
+ #endif
1258
+ #endif
1259
+
1260
+ #if (!defined(__has_include) || (BOOST_CXX_VERSION < 202003L))
1261
+ # define BOOST_NO_CXX23_HDR_EXPECTED
1262
+ # define BOOST_NO_CXX23_HDR_FLAT_MAP
1263
+ # define BOOST_NO_CXX23_HDR_FLAT_SET
1264
+ # define BOOST_NO_CXX23_HDR_GENERATOR
1265
+ # define BOOST_NO_CXX23_HDR_MDSPAN
1266
+ # define BOOST_NO_CXX23_HDR_PRINT
1267
+ # define BOOST_NO_CXX23_HDR_SPANSTREAM
1268
+ # define BOOST_NO_CXX23_HDR_STACKTRACE
1269
+ # define BOOST_NO_CXX23_HDR_STDFLOAT
1270
+ #else
1271
+ #if (!__has_include(<expected>) || !defined(__cpp_lib_expected) || (__cpp_lib_expected < 202211L)) && !defined(BOOST_NO_CXX23_HDR_EXPECTED)
1272
+ # define BOOST_NO_CXX23_HDR_EXPECTED
1273
+ #endif
1274
+ #if (!__has_include(<flat_map>) || !defined(__cpp_lib_flat_map) || (__cpp_lib_flat_map < 202207L)) && !defined(BOOST_NO_CXX23_HDR_FLAT_MAP)
1275
+ # define BOOST_NO_CXX23_HDR_FLAT_MAP
1276
+ #endif
1277
+ #if (!__has_include(<flat_set>) || !defined(__cpp_lib_flat_set) || (__cpp_lib_flat_set < 202207L)) && !defined(BOOST_NO_CXX23_HDR_FLAT_SET)
1278
+ # define BOOST_NO_CXX23_HDR_FLAT_SET
1279
+ #endif
1280
+ #if (!__has_include(<generator>) || !defined(__cpp_lib_generator) || (__cpp_lib_generator < 202207L)) && !defined(BOOST_NO_CXX23_HDR_GENERATOR)
1281
+ # define BOOST_NO_CXX23_HDR_GENERATOR
1282
+ #endif
1283
+ #if (!__has_include(<mdspan>) || !defined(__cpp_lib_mdspan) || (__cpp_lib_mdspan < 202207L)) && !defined(BOOST_NO_CXX23_HDR_MDSPAN)
1284
+ # define BOOST_NO_CXX23_HDR_MDSPAN
1285
+ #endif
1286
+ #if (!__has_include(<print>) || !defined(__cpp_lib_print) || (__cpp_lib_print < 202207L)) && !defined(BOOST_NO_CXX23_HDR_PRINT)
1287
+ # define BOOST_NO_CXX23_HDR_PRINT
1288
+ #endif
1289
+ #if (!__has_include(<spanstream>) || !defined(__cpp_lib_spanstream) || (__cpp_lib_spanstream < 202106L)) && !defined(BOOST_NO_CXX23_HDR_SPANSTREAM)
1290
+ # define BOOST_NO_CXX23_HDR_SPANSTREAM
1291
+ #endif
1292
+ #if (!__has_include(<stacktrace>) || !defined(__cpp_lib_stacktrace) || (__cpp_lib_stacktrace < 202011L)) && !defined(BOOST_NO_CXX23_HDR_STACKTRACE)
1293
+ # define BOOST_NO_CXX23_HDR_STACKTRACE
1294
+ #endif
1295
+ #if !__has_include(<stdfloat>) && !defined(BOOST_NO_CXX23_HDR_STDFLOAT)
1296
+ # define BOOST_NO_CXX23_HDR_STDFLOAT
1297
+ #endif
1298
+ #endif
1299
+
1300
+ #if defined(__cplusplus) && defined(__has_include)
1301
+ #if !__has_include(<version>)
1302
+ # define BOOST_NO_CXX20_HDR_VERSION
1303
+ #else
1304
+ // For convenience, this is always included:
1305
+ # include <version>
1306
+ #endif
1307
+ #else
1308
+ # define BOOST_NO_CXX20_HDR_VERSION
1309
+ #endif
1310
+
1311
+ #if defined(BOOST_MSVC)
1312
+ #if (BOOST_MSVC < 1914) || (_MSVC_LANG < 201703)
1313
+ # define BOOST_NO_CXX17_DEDUCTION_GUIDES
1314
+ #endif
1315
+ #elif !defined(__cpp_deduction_guides) || (__cpp_deduction_guides < 201606)
1316
+ # define BOOST_NO_CXX17_DEDUCTION_GUIDES
1317
+ #endif
1318
+
1319
+ //
1320
+ // Define composite agregate macros:
1321
+ //
1322
+ #include <boost/config/detail/cxx_composite.hpp>
1323
+
1324
+ //
1325
+ // Finish off with checks for macros that are depricated / no longer supported,
1326
+ // if any of these are set then it's very likely that much of Boost will no
1327
+ // longer work. So stop with a #error for now, but give the user a chance
1328
+ // to continue at their own risk if they really want to:
1329
+ //
1330
+ #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_CONFIG_ALLOW_DEPRECATED)
1331
+ # error "You are using a compiler which lacks features which are now a minimum requirement in order to use Boost, define BOOST_CONFIG_ALLOW_DEPRECATED if you want to continue at your own risk!!!"
1332
+ #endif
1333
+
1334
+ #endif