passenger 5.0.24 → 5.0.25

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (1796) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +8 -18
  3. data/CHANGELOG +20 -0
  4. data/build/cplusplus_support.rb +3 -3
  5. data/build/cxx_dependency_map.rb +148 -96
  6. data/build/cxx_tests.rb +24 -12
  7. data/build/packaging.rb +1 -2
  8. data/dev/copy_boost_headers +32 -9
  9. data/resources/templates/standalone/config.erb +2 -0
  10. data/resources/templates/standalone/footer.erb +3 -0
  11. data/resources/templates/standalone/server.erb +7 -0
  12. data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +2 -2
  13. data/src/agent/Core/SpawningKit/DirectSpawner.h +3 -0
  14. data/src/agent/Core/UnionStation/Transaction.h +1 -15
  15. data/src/agent/README.md +15 -3
  16. data/src/agent/UstRouter/Controller.h +95 -90
  17. data/src/agent/UstRouter/FileSink.h +3 -2
  18. data/src/agent/UstRouter/LogSink.h +5 -6
  19. data/src/agent/UstRouter/RemoteSender.h +41 -12
  20. data/src/agent/UstRouter/RemoteSink.h +3 -2
  21. data/src/agent/UstRouter/Transaction.h +198 -66
  22. data/src/apache2_module/Configuration.cpp +57 -2
  23. data/src/apache2_module/Configuration.h +3 -1
  24. data/src/apache2_module/Configuration.hpp +3 -1
  25. data/src/apache2_module/Hooks.cpp +4 -2
  26. data/src/cxx_supportlib/Constants.h +1 -1
  27. data/src/cxx_supportlib/MemoryKit/palloc.h +1 -0
  28. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -0
  29. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +4 -3
  30. data/src/cxx_supportlib/ServerKit/Server.h +1 -0
  31. data/src/cxx_supportlib/Utils/BufferedIO.h +21 -4
  32. data/src/cxx_supportlib/Utils/IOUtils.cpp +62 -12
  33. data/src/cxx_supportlib/Utils/StrIntUtils.cpp +3 -3
  34. data/src/cxx_supportlib/Utils/StrIntUtils.h +2 -2
  35. data/src/cxx_supportlib/WatchdogLauncher.cpp +13 -1
  36. data/src/cxx_supportlib/WatchdogLauncher.h +4 -1
  37. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/classification.hpp +312 -0
  38. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/concept.hpp +1 -1
  39. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +353 -0
  40. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format.hpp +1 -1
  41. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_all.hpp +1 -1
  42. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_format_store.hpp +1 -1
  43. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +87 -0
  44. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +1 -8
  45. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder_regex.hpp +122 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter_regex.hpp +61 -0
  48. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/predicate.hpp +77 -0
  49. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +95 -0
  50. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +1 -1
  51. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/erase.hpp +1 -1
  52. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find.hpp +334 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -1
  54. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +388 -0
  55. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +1 -1
  56. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +1 -1
  57. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +193 -0
  58. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/join.hpp +145 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +475 -0
  60. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate_facade.hpp +42 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/regex.hpp +646 -0
  62. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/regex_find_format.hpp +90 -0
  63. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +1 -1
  64. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/sequence_traits.hpp +0 -73
  65. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +163 -0
  66. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/list_traits.hpp +68 -0
  67. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/rope_traits.hpp +81 -0
  68. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/slist_traits.hpp +69 -0
  69. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std/string_traits.hpp +44 -0
  70. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/std_containers_traits.hpp +26 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim.hpp +398 -0
  72. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/trim_all.hpp +217 -0
  73. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +20 -0
  74. data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +29 -0
  75. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +40 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +22 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +29 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/aligned_storage.hpp +1 -164
  79. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +33 -84
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +1 -1
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +83 -231
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +33 -0
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +161 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +70 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +774 -0
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +53 -0
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_alpha.hpp +34 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +56 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +134 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +36 -0
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sparc.hpp +34 -0
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +62 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +52 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_linux_arm.hpp +35 -0
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_arm.hpp +34 -0
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +50 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +57 -36
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +140 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +297 -16
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/link.hpp +58 -0
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +30 -76
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +24 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +35 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +30 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +105 -0
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +161 -0
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +68 -0
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +876 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +973 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +395 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +802 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +240 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +270 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +514 -0
  115. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +616 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +178 -0
  117. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +824 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +38 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +928 -0
  120. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +43 -0
  121. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +91 -32
  122. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +280 -0
  123. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +67 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +18 -1
  125. data/src/cxx_supportlib/vendor-modified/boost/bind/apply.hpp +74 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +5 -5
  127. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +507 -2
  128. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +214 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/bind/make_adaptable.hpp +187 -0
  130. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_vw.hpp +130 -0
  131. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +29 -36
  132. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +304 -0
  133. data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +13 -65
  134. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +9 -13
  135. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +10 -4
  136. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -2
  137. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/concept_def.hpp +0 -17
  138. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +0 -8
  140. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +25 -26
  141. data/src/cxx_supportlib/vendor-modified/boost/config.hpp +9 -12
  142. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +17 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +36 -6
  144. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +135 -14
  145. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +41 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +48 -9
  147. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +33 -5
  148. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +36 -16
  149. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +121 -87
  150. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +39 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +13 -9
  152. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +327 -64
  153. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +44 -10
  154. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +38 -4
  155. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +0 -12
  156. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +36 -3
  157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +37 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +63 -23
  159. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +44 -13
  160. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +102 -128
  161. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +258 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cloudabi.hpp +18 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +31 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +2 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +4 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +43 -7
  168. data/src/cxx_supportlib/vendor-modified/boost/config/select_platform_config.hpp +32 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/config/select_stdlib_config.hpp +28 -8
  170. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +58 -15
  171. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +13 -2
  172. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +43 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +129 -14
  174. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +13 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +13 -9
  176. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +12 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +14 -4
  178. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +13 -8
  179. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +13 -3
  180. data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +159 -85
  181. data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +15 -6
  182. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +351 -0
  183. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +371 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +283 -213
  185. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +195 -51
  186. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +840 -625
  187. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +166 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +24 -13
  189. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +41 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +289 -181
  191. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +35 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +60 -0
  193. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +314 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +11 -7
  195. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +24 -25
  196. data/src/cxx_supportlib/vendor-modified/boost/container/detail/auto_link.hpp +51 -0
  197. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +139 -0
  198. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +157 -0
  199. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +74 -0
  200. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +16 -14
  201. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +1 -5
  202. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +62 -0
  203. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +1142 -0
  204. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +61 -48
  205. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +293 -0
  206. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dlmalloc.hpp +103 -0
  207. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +335 -408
  208. data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +9 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +383 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +40 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +58 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +300 -83
  213. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +13 -3
  214. data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +37 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/container/detail/minimal_char_traits_header.hpp +32 -0
  216. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +45 -118
  217. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +22 -10
  218. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +288 -0
  219. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +75 -0
  220. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +115 -109
  221. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +157 -0
  222. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +33 -23
  223. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +62 -89
  224. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +30 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +11 -6
  226. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +102 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +191 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +121 -0
  229. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +56 -0
  230. data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +33 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +17 -13
  232. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +646 -595
  233. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +44 -184
  234. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +7 -3
  235. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +9 -4
  236. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +23 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +50 -15
  238. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +627 -287
  239. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +608 -657
  240. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +395 -376
  241. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +616 -625
  242. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +179 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +344 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +80 -0
  245. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +43 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +63 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +59 -0
  248. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +66 -0
  249. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +43 -0
  250. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +63 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +101 -0
  252. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +180 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +166 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/pool_options.hpp +52 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +193 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +59 -0
  257. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +43 -0
  258. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +43 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +43 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +48 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +138 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +194 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +43 -0
  264. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +423 -1019
  265. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator_fwd.hpp +23 -35
  266. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +520 -626
  267. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +416 -407
  268. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +574 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +711 -470
  270. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +314 -145
  271. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +477 -282
  272. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +63 -3
  273. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +169 -0
  274. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +73 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +1660 -945
  276. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +162 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +69 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +128 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/core/enable_if.hpp +128 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +154 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/core/ignore_unused.hpp +70 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/core/is_same.hpp +40 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +171 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +56 -0
  285. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +44 -0
  286. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +48 -0
  287. data/src/cxx_supportlib/vendor-modified/boost/core/null_deleter.hpp +44 -0
  288. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +301 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/{detail/scoped_enum_emulation.hpp → core/scoped_enum.hpp} +19 -164
  290. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +60 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +151 -0
  292. data/src/cxx_supportlib/vendor-modified/boost/core/underlying_type.hpp +79 -0
  293. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +132 -95
  294. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +8 -5
  295. data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +69 -0
  297. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +3 -3
  298. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +3 -3
  301. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_clock_device.hpp +7 -7
  302. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_defs.hpp +1 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +1 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_format_simple.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_limited.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generator_formatter.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generator_parser.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_iterator.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +1 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +1 -3
  316. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +75 -0
  318. data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +11 -7
  320. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/conversion.hpp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +1 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +1 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +1 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +1 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +1 -1
  328. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +1 -1
  329. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +352 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +1 -1
  331. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +517 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +1 -1
  333. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +1 -1
  334. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_ymd.hpp +1 -1
  335. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian.hpp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +1 -1
  337. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_types.hpp +1 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +1 -1
  339. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +1 -1
  340. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +6 -6
  341. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +3 -3
  342. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/conversion.hpp +34 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +169 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/date_duration_operators.hpp +115 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/dst_transition_day_rules.hpp +77 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +528 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time.hpp +24 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +184 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_types.hpp +52 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +474 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/tz_database.hpp +32 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time_adjustor.hpp +218 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_timezone_defs.hpp +193 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +1 -1
  356. data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +2 -2
  357. data/src/cxx_supportlib/vendor-modified/boost/date_time/parse_format_base.hpp +1 -1
  358. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +1 -1
  359. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +1 -1
  360. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +1 -1
  361. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +9 -1
  362. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
  363. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time.hpp +1 -1
  364. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +1 -1
  365. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
  366. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -4
  367. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_legacy_io.hpp +153 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_system.hpp +1 -1
  369. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +1 -1
  370. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +212 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +1 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_period.hpp +1 -1
  374. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +201 -0
  375. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_defs.hpp +1 -1
  376. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_convert.hpp +1 -2
  378. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +1 -3
  380. data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +3 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_clock.hpp +1 -1
  382. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_defs.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +3 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +3 -3
  385. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_formatting_streams.hpp +1 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_iterator.hpp +1 -1
  387. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +1 -1
  388. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +6 -6
  389. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +2 -2
  390. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +99 -0
  392. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +98 -0
  393. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +396 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +1 -1
  395. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +1 -1
  396. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +139 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +1 -6
  398. data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +3 -118
  399. data/src/cxx_supportlib/vendor-modified/boost/detail/fenv.hpp +30 -3
  400. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -283
  401. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +9 -477
  402. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +12 -82
  403. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +0 -21
  404. data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +8 -107
  405. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -1
  406. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +8 -3
  407. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -9
  408. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +2 -2
  409. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +16 -0
  410. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +11 -12
  411. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +37 -0
  412. data/src/cxx_supportlib/vendor-modified/boost/function/function0.hpp +12 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/function/function1.hpp +12 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/function/function10.hpp +12 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/function/function2.hpp +12 -0
  416. data/src/cxx_supportlib/vendor-modified/boost/function/function3.hpp +12 -0
  417. data/src/cxx_supportlib/vendor-modified/boost/function/function4.hpp +12 -0
  418. data/src/cxx_supportlib/vendor-modified/boost/function/function5.hpp +12 -0
  419. data/src/cxx_supportlib/vendor-modified/boost/function/function6.hpp +12 -0
  420. data/src/cxx_supportlib/vendor-modified/boost/function/function7.hpp +12 -0
  421. data/src/cxx_supportlib/vendor-modified/boost/function/function8.hpp +12 -0
  422. data/src/cxx_supportlib/vendor-modified/boost/function/function9.hpp +12 -0
  423. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +6 -24
  424. data/src/cxx_supportlib/vendor-modified/boost/function/function_fwd.hpp +1 -2
  425. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +35 -30
  426. data/src/cxx_supportlib/vendor-modified/boost/function/function_typeof.hpp +45 -0
  427. data/src/cxx_supportlib/vendor-modified/boost/function/gen_function_N.pl +26 -0
  428. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/float_functions.hpp +4 -4
  429. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +22 -28
  430. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/limits.hpp +3 -2
  431. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +5 -66
  432. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +77 -48
  433. data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash_fwd.hpp +3 -7
  434. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +5 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/get_pointer.hpp +28 -0
  436. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +25 -24
  437. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +102 -0
  438. data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +23 -0
  439. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -6
  440. data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +47 -55
  441. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +655 -2197
  442. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +16 -22
  443. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +376 -1605
  444. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +329 -601
  445. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +982 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +17 -27
  447. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +2101 -0
  448. data/src/cxx_supportlib/vendor-modified/boost/intrusive/{detail/tree_algorithms.hpp → bstree_algorithms.hpp} +973 -684
  449. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +121 -66
  450. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +30 -28
  451. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +22 -15
  452. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +50 -0
  453. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +90 -0
  454. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +48 -61
  455. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +95 -0
  456. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/assert.hpp +6 -2
  457. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +19 -24
  458. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +184 -0
  459. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +104 -8
  460. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +2 -3
  461. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_end.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +69 -0
  463. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +235 -39
  464. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +44 -0
  465. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +48 -0
  466. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +88 -0
  467. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/function_detector.hpp +8 -4
  468. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +107 -95
  469. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/get_value_traits.hpp +222 -0
  470. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +279 -296
  471. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +122 -85
  472. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +186 -0
  473. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +121 -0
  474. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/is_stateful_value_traits.hpp +9 -5
  475. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +155 -0
  476. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +99 -0
  477. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +133 -0
  478. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +14 -139
  479. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +295 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/minimal_less_equal_header.hpp +30 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/minimal_pair_header.hpp +30 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +160 -337
  483. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +105 -0
  484. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_holder.hpp +35 -0
  485. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +130 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +34 -11
  487. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/pointer_element.hpp +168 -0
  488. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +22 -19
  489. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +144 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +50 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +84 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +124 -0
  493. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +14 -117
  494. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/std_fwd.hpp +43 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +46 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +18 -20
  497. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +171 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +13 -133
  499. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +89 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/uncast.hpp +55 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +22 -6
  502. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +2006 -1615
  503. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +450 -229
  504. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +17 -2
  505. data/src/cxx_supportlib/vendor-modified/boost/intrusive/link_mode.hpp +21 -4
  506. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +253 -282
  507. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +17 -20
  508. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +21 -7
  509. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +94 -648
  510. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +374 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +10 -4
  512. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +16 -8
  513. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +188 -0
  514. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +97 -44
  515. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +29 -4
  516. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +366 -1592
  517. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +297 -639
  518. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +619 -2187
  519. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +16 -22
  520. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +661 -2252
  521. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +468 -1493
  522. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +163 -594
  523. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +326 -307
  524. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +16 -21
  525. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +686 -2238
  526. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +425 -1575
  527. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +422 -703
  528. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +440 -1122
  529. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +158 -406
  530. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +558 -2257
  531. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +14 -2
  532. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +476 -1611
  533. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +36 -27
  534. data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +3 -42
  535. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -13
  536. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +0 -1
  537. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +2 -5
  538. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +15 -22
  539. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +8 -4
  540. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +59 -64
  541. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +77 -50
  542. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +13 -22
  543. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +318 -212
  544. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +17 -49
  545. data/src/cxx_supportlib/vendor-modified/boost/iterator/{detail/minimum_category.hpp → minimum_category.hpp} +24 -45
  546. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +10 -5
  547. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +17 -18
  548. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +29 -2649
  549. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +101 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +498 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +787 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +194 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +197 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +58 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +46 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +294 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +40 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +212 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +24 -11
  560. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cpp_regex_traits.cpp +3 -3
  561. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +40 -40
  562. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +14 -17
  563. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -3
  564. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_raw_buffer.cpp +3 -3
  565. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
  566. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +8 -4
  567. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +24 -11
  568. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +11 -14
  569. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +3 -420
  570. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +2 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +3 -5
  572. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +0 -6
  573. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +173 -77
  574. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +83 -33
  575. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +11 -1
  576. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +42 -12
  577. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +196 -18
  578. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +52 -8
  579. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +111 -13
  580. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +40 -8
  581. data/src/cxx_supportlib/vendor-modified/boost/math/tools/real_cast.hpp +3 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +8 -0
  583. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +9 -5
  584. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +233 -0
  585. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +10 -3
  586. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +223 -54
  587. data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +201 -0
  588. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +6 -10
  589. data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_end.hpp +2 -10
  590. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +661 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +73 -0
  592. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +468 -62
  593. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +120 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +206 -129
  595. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +30 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +14 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +1078 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +591 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +55 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +33 -19
  601. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +237 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/move/move.hpp +9 -1
  603. data/src/cxx_supportlib/vendor-modified/boost/move/traits.hpp +30 -95
  604. data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +871 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +53 -98
  606. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +317 -0
  607. data/src/cxx_supportlib/vendor-modified/boost/mpl/O1_size.hpp +3 -3
  608. data/src/cxx_supportlib/vendor-modified/boost/mpl/O1_size_fwd.hpp +3 -3
  609. data/src/cxx_supportlib/vendor-modified/boost/mpl/accumulate.hpp +3 -3
  610. data/src/cxx_supportlib/vendor-modified/boost/mpl/advance.hpp +3 -3
  611. data/src/cxx_supportlib/vendor-modified/boost/mpl/advance_fwd.hpp +3 -3
  612. data/src/cxx_supportlib/vendor-modified/boost/mpl/alias.hpp +3 -3
  613. data/src/cxx_supportlib/vendor-modified/boost/mpl/always.hpp +6 -7
  614. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +5 -5
  615. data/src/cxx_supportlib/vendor-modified/boost/mpl/apply.hpp +3 -3
  616. data/src/cxx_supportlib/vendor-modified/boost/mpl/apply_fwd.hpp +3 -3
  617. data/src/cxx_supportlib/vendor-modified/boost/mpl/apply_wrap.hpp +3 -3
  618. data/src/cxx_supportlib/vendor-modified/boost/mpl/arg.hpp +3 -3
  619. data/src/cxx_supportlib/vendor-modified/boost/mpl/arg_fwd.hpp +3 -3
  620. data/src/cxx_supportlib/vendor-modified/boost/mpl/arithmetic.hpp +3 -3
  621. data/src/cxx_supportlib/vendor-modified/boost/mpl/as_sequence.hpp +3 -3
  622. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +6 -5
  623. data/src/cxx_supportlib/vendor-modified/boost/mpl/at.hpp +3 -3
  624. data/src/cxx_supportlib/vendor-modified/boost/mpl/at_fwd.hpp +3 -3
  625. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/O1_size_impl.hpp +3 -3
  626. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/adl_barrier.hpp +3 -3
  627. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/advance_backward.hpp +3 -3
  628. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/advance_forward.hpp +3 -3
  629. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/apply_1st.hpp +3 -3
  630. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arg_typedef.hpp +3 -3
  631. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arithmetic_op.hpp +3 -3
  632. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arity.hpp +3 -3
  633. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/arity_spec.hpp +3 -3
  634. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/at_impl.hpp +3 -3
  635. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/back_impl.hpp +3 -3
  636. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/basic_bind.hpp +3 -3
  637. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/begin_end_impl.hpp +3 -3
  638. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/clear_impl.hpp +3 -3
  639. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +3 -3
  640. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/comparison_op.hpp +3 -3
  641. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +3 -3
  642. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +3 -3
  643. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +1 -1
  644. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +3 -3
  645. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +3 -3
  646. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +3 -3
  647. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dependent_nttp.hpp +3 -3
  648. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp +3 -3
  649. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
  650. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/eti.hpp +3 -3
  651. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +3 -3
  652. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/gcc.hpp +3 -3
  653. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/gpu.hpp +35 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/has_apply.hpp +3 -3
  655. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/has_xxx.hpp +3 -3
  656. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +3 -3
  657. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/intel.hpp +3 -3
  658. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/lambda.hpp +3 -3
  659. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/msvc.hpp +3 -3
  660. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/msvc_typename.hpp +3 -3
  661. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/nttp.hpp +3 -3
  662. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +4 -3
  663. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +3 -3
  664. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/pp_counter.hpp +3 -3
  665. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +3 -3
  666. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/static_constant.hpp +3 -3
  667. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +3 -3
  668. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/typeof.hpp +3 -3
  669. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/use_preprocessed.hpp +3 -3
  670. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/workaround.hpp +3 -3
  671. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/contains_impl.hpp +3 -3
  672. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_args.hpp +3 -3
  673. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +3 -3
  674. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/empty_impl.hpp +3 -3
  675. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/erase_impl.hpp +3 -3
  676. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/erase_key_impl.hpp +3 -3
  677. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/filter_iter.hpp +3 -3
  678. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl.hpp +3 -3
  679. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
  680. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_op.hpp +3 -3
  681. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_pred.hpp +3 -3
  682. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/front_impl.hpp +3 -3
  683. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/full_lambda.hpp +3 -3
  684. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_apply.hpp +3 -3
  685. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_begin.hpp +3 -3
  686. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_key_impl.hpp +3 -3
  687. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +3 -3
  688. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_size.hpp +3 -3
  689. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_tag.hpp +3 -3
  690. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_type.hpp +3 -3
  691. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/include_preprocessed.hpp +3 -3
  692. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/insert_impl.hpp +3 -3
  693. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/insert_range_impl.hpp +22 -19
  694. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/inserter_algorithm.hpp +3 -3
  695. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +4 -4
  696. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/is_msvc_eti_arg.hpp +3 -3
  697. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_apply.hpp +3 -3
  698. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_fold_if_impl.hpp +3 -3
  699. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_fold_impl.hpp +3 -3
  700. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/iter_push_front.hpp +3 -3
  701. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/joint_iter.hpp +3 -3
  702. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_arity_param.hpp +3 -3
  703. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_no_ctps.hpp +3 -3
  704. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_spec.hpp +3 -3
  705. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
  706. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/largest_int.hpp +3 -3
  707. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/logical_op.hpp +3 -3
  708. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_dtw.hpp +3 -3
  709. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_eti_base.hpp +3 -3
  710. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_is_class.hpp +3 -3
  711. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_never_true.hpp +3 -3
  712. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/msvc_type.hpp +3 -3
  713. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na.hpp +3 -3
  714. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +3 -3
  715. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_fwd.hpp +3 -3
  716. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_spec.hpp +3 -3
  717. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +3 -3
  718. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nttp_decl.hpp +3 -3
  719. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/numeric_cast_utils.hpp +3 -3
  720. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/numeric_op.hpp +3 -3
  721. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/order_impl.hpp +3 -3
  722. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/overload_names.hpp +3 -3
  723. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/partition_op.hpp +3 -3
  724. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/pop_back_impl.hpp +3 -3
  725. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/pop_front_impl.hpp +3 -3
  726. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/add.hpp +3 -3
  727. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/def_params_tail.hpp +3 -3
  728. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/default_params.hpp +3 -3
  729. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/enum.hpp +3 -3
  730. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/ext_params.hpp +3 -3
  731. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/filter_params.hpp +3 -3
  732. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/is_seq.hpp +3 -3
  733. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/params.hpp +3 -3
  734. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/partial_spec_params.hpp +3 -3
  735. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/range.hpp +11 -4
  736. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/repeat.hpp +3 -3
  737. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/sub.hpp +3 -3
  738. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/token_equal.hpp +3 -3
  739. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessor/tuple.hpp +3 -3
  740. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +3 -3
  741. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/push_back_impl.hpp +3 -3
  742. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/push_front_impl.hpp +3 -3
  743. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/O1_size.hpp +3 -3
  744. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/back.hpp +3 -3
  745. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/empty.hpp +3 -3
  746. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/front.hpp +3 -3
  747. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/iterator.hpp +3 -3
  748. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/size.hpp +3 -3
  749. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/range_c/tag.hpp +3 -3
  750. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_fold_impl.hpp +3 -3
  751. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_fold_impl_body.hpp +3 -3
  752. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/reverse_iter_fold_impl.hpp +3 -3
  753. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/sequence_wrapper.hpp +3 -3
  754. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/shift_op.hpp +3 -3
  755. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/single_element_iter.hpp +3 -3
  756. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +3 -3
  757. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/sort_impl.hpp +3 -3
  758. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +3 -3
  759. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +3 -3
  760. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity_fwd.hpp +3 -3
  761. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test.hpp +3 -3
  762. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/assert.hpp +3 -3
  763. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/data.hpp +3 -3
  764. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/test/test_case.hpp +3 -3
  765. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/traits_lambda_spec.hpp +3 -3
  766. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/transform_iter.hpp +3 -3
  767. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/type_wrapper.hpp +3 -3
  768. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/unwrap.hpp +7 -3
  769. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/value_wknd.hpp +3 -3
  770. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +3 -3
  771. data/src/cxx_supportlib/vendor-modified/boost/mpl/back.hpp +3 -3
  772. data/src/cxx_supportlib/vendor-modified/boost/mpl/back_fwd.hpp +3 -3
  773. data/src/cxx_supportlib/vendor-modified/boost/mpl/back_inserter.hpp +3 -3
  774. data/src/cxx_supportlib/vendor-modified/boost/mpl/base.hpp +3 -3
  775. data/src/cxx_supportlib/vendor-modified/boost/mpl/begin.hpp +3 -3
  776. data/src/cxx_supportlib/vendor-modified/boost/mpl/begin_end.hpp +3 -3
  777. data/src/cxx_supportlib/vendor-modified/boost/mpl/begin_end_fwd.hpp +3 -3
  778. data/src/cxx_supportlib/vendor-modified/boost/mpl/bind.hpp +3 -3
  779. data/src/cxx_supportlib/vendor-modified/boost/mpl/bind_fwd.hpp +3 -3
  780. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +5 -5
  781. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +5 -5
  782. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitwise.hpp +3 -3
  783. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitxor.hpp +3 -3
  784. data/src/cxx_supportlib/vendor-modified/boost/mpl/bool.hpp +4 -4
  785. data/src/cxx_supportlib/vendor-modified/boost/mpl/bool_fwd.hpp +3 -3
  786. data/src/cxx_supportlib/vendor-modified/boost/mpl/clear.hpp +3 -3
  787. data/src/cxx_supportlib/vendor-modified/boost/mpl/clear_fwd.hpp +3 -3
  788. data/src/cxx_supportlib/vendor-modified/boost/mpl/comparison.hpp +3 -3
  789. data/src/cxx_supportlib/vendor-modified/boost/mpl/contains.hpp +3 -3
  790. data/src/cxx_supportlib/vendor-modified/boost/mpl/contains_fwd.hpp +3 -3
  791. data/src/cxx_supportlib/vendor-modified/boost/mpl/copy.hpp +3 -3
  792. data/src/cxx_supportlib/vendor-modified/boost/mpl/copy_if.hpp +3 -3
  793. data/src/cxx_supportlib/vendor-modified/boost/mpl/count.hpp +3 -3
  794. data/src/cxx_supportlib/vendor-modified/boost/mpl/count_fwd.hpp +3 -3
  795. data/src/cxx_supportlib/vendor-modified/boost/mpl/count_if.hpp +3 -3
  796. data/src/cxx_supportlib/vendor-modified/boost/mpl/deque.hpp +3 -3
  797. data/src/cxx_supportlib/vendor-modified/boost/mpl/deref.hpp +3 -3
  798. data/src/cxx_supportlib/vendor-modified/boost/mpl/distance.hpp +3 -3
  799. data/src/cxx_supportlib/vendor-modified/boost/mpl/distance_fwd.hpp +3 -3
  800. data/src/cxx_supportlib/vendor-modified/boost/mpl/divides.hpp +3 -3
  801. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty.hpp +3 -3
  802. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_base.hpp +13 -9
  803. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_fwd.hpp +3 -3
  804. data/src/cxx_supportlib/vendor-modified/boost/mpl/empty_sequence.hpp +5 -4
  805. data/src/cxx_supportlib/vendor-modified/boost/mpl/end.hpp +3 -3
  806. data/src/cxx_supportlib/vendor-modified/boost/mpl/equal.hpp +3 -3
  807. data/src/cxx_supportlib/vendor-modified/boost/mpl/equal_to.hpp +3 -3
  808. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase.hpp +3 -3
  809. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_fwd.hpp +3 -3
  810. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_key.hpp +3 -3
  811. data/src/cxx_supportlib/vendor-modified/boost/mpl/erase_key_fwd.hpp +3 -3
  812. data/src/cxx_supportlib/vendor-modified/boost/mpl/eval_if.hpp +6 -6
  813. data/src/cxx_supportlib/vendor-modified/boost/mpl/filter_view.hpp +3 -3
  814. data/src/cxx_supportlib/vendor-modified/boost/mpl/find.hpp +3 -3
  815. data/src/cxx_supportlib/vendor-modified/boost/mpl/find_if.hpp +3 -3
  816. data/src/cxx_supportlib/vendor-modified/boost/mpl/fold.hpp +3 -3
  817. data/src/cxx_supportlib/vendor-modified/boost/mpl/for_each.hpp +11 -4
  818. data/src/cxx_supportlib/vendor-modified/boost/mpl/front.hpp +3 -3
  819. data/src/cxx_supportlib/vendor-modified/boost/mpl/front_fwd.hpp +3 -3
  820. data/src/cxx_supportlib/vendor-modified/boost/mpl/front_inserter.hpp +3 -3
  821. data/src/cxx_supportlib/vendor-modified/boost/mpl/greater.hpp +3 -3
  822. data/src/cxx_supportlib/vendor-modified/boost/mpl/greater_equal.hpp +3 -3
  823. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_key.hpp +3 -3
  824. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_key_fwd.hpp +3 -3
  825. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +12 -5
  826. data/src/cxx_supportlib/vendor-modified/boost/mpl/identity.hpp +3 -3
  827. data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +3 -3
  828. data/src/cxx_supportlib/vendor-modified/boost/mpl/index_if.hpp +3 -3
  829. data/src/cxx_supportlib/vendor-modified/boost/mpl/index_of.hpp +3 -3
  830. data/src/cxx_supportlib/vendor-modified/boost/mpl/inherit.hpp +3 -3
  831. data/src/cxx_supportlib/vendor-modified/boost/mpl/inherit_linearly.hpp +3 -3
  832. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert.hpp +3 -3
  833. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_fwd.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_range.hpp +3 -3
  835. data/src/cxx_supportlib/vendor-modified/boost/mpl/insert_range_fwd.hpp +3 -3
  836. data/src/cxx_supportlib/vendor-modified/boost/mpl/inserter.hpp +3 -3
  837. data/src/cxx_supportlib/vendor-modified/boost/mpl/int.hpp +3 -3
  838. data/src/cxx_supportlib/vendor-modified/boost/mpl/int_fwd.hpp +3 -3
  839. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +3 -3
  840. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c_fwd.hpp +3 -3
  841. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c_tag.hpp +3 -3
  842. data/src/cxx_supportlib/vendor-modified/boost/mpl/is_placeholder.hpp +3 -3
  843. data/src/cxx_supportlib/vendor-modified/boost/mpl/is_sequence.hpp +3 -3
  844. data/src/cxx_supportlib/vendor-modified/boost/mpl/iter_fold.hpp +3 -3
  845. data/src/cxx_supportlib/vendor-modified/boost/mpl/iter_fold_if.hpp +3 -3
  846. data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_category.hpp +3 -3
  847. data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_range.hpp +3 -3
  848. data/src/cxx_supportlib/vendor-modified/boost/mpl/iterator_tags.hpp +3 -3
  849. data/src/cxx_supportlib/vendor-modified/boost/mpl/joint_view.hpp +3 -3
  850. data/src/cxx_supportlib/vendor-modified/boost/mpl/key_type.hpp +3 -3
  851. data/src/cxx_supportlib/vendor-modified/boost/mpl/key_type_fwd.hpp +3 -3
  852. data/src/cxx_supportlib/vendor-modified/boost/mpl/lambda.hpp +3 -3
  853. data/src/cxx_supportlib/vendor-modified/boost/mpl/lambda_fwd.hpp +3 -3
  854. data/src/cxx_supportlib/vendor-modified/boost/mpl/less.hpp +3 -3
  855. data/src/cxx_supportlib/vendor-modified/boost/mpl/less_equal.hpp +3 -3
  856. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/arity.hpp +3 -3
  857. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/list.hpp +3 -3
  858. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/map.hpp +3 -3
  859. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/set.hpp +3 -3
  860. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/unrolling.hpp +3 -3
  861. data/src/cxx_supportlib/vendor-modified/boost/mpl/limits/vector.hpp +3 -3
  862. data/src/cxx_supportlib/vendor-modified/boost/mpl/list.hpp +3 -3
  863. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/O1_size.hpp +3 -3
  864. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/begin_end.hpp +3 -3
  865. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/clear.hpp +3 -3
  866. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/empty.hpp +3 -3
  867. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/front.hpp +3 -3
  868. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/include_preprocessed.hpp +3 -3
  869. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/item.hpp +3 -3
  870. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/iterator.hpp +3 -3
  871. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/numbered.hpp +3 -3
  872. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/numbered_c.hpp +3 -3
  873. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/pop_front.hpp +3 -3
  874. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/push_back.hpp +3 -3
  875. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/push_front.hpp +3 -3
  876. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/size.hpp +3 -3
  877. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/aux_/tag.hpp +3 -3
  878. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list0.hpp +3 -3
  879. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list0_c.hpp +3 -3
  880. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list10.hpp +3 -3
  881. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list10_c.hpp +3 -3
  882. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list20.hpp +3 -3
  883. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list20_c.hpp +3 -3
  884. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list30.hpp +3 -3
  885. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list30_c.hpp +3 -3
  886. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list40.hpp +3 -3
  887. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list40_c.hpp +3 -3
  888. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list50.hpp +3 -3
  889. data/src/cxx_supportlib/vendor-modified/boost/mpl/list/list50_c.hpp +3 -3
  890. data/src/cxx_supportlib/vendor-modified/boost/mpl/list_c.hpp +3 -3
  891. data/src/cxx_supportlib/vendor-modified/boost/mpl/logical.hpp +3 -3
  892. data/src/cxx_supportlib/vendor-modified/boost/mpl/long.hpp +3 -3
  893. data/src/cxx_supportlib/vendor-modified/boost/mpl/long_fwd.hpp +3 -3
  894. data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +3 -3
  895. data/src/cxx_supportlib/vendor-modified/boost/mpl/map.hpp +3 -3
  896. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/at_impl.hpp +3 -3
  897. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/begin_end_impl.hpp +3 -3
  898. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/clear_impl.hpp +3 -3
  899. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/contains_impl.hpp +3 -3
  900. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/empty_impl.hpp +3 -3
  901. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/erase_impl.hpp +3 -3
  902. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/erase_key_impl.hpp +3 -3
  903. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/has_key_impl.hpp +3 -3
  904. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/include_preprocessed.hpp +3 -3
  905. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/insert_impl.hpp +3 -3
  906. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/insert_range_impl.hpp +41 -0
  907. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/item.hpp +6 -3
  908. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/iterator.hpp +3 -3
  909. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/key_type_impl.hpp +3 -3
  910. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/map0.hpp +3 -3
  911. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/numbered.hpp +3 -3
  912. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/size_impl.hpp +3 -3
  913. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/tag.hpp +3 -3
  914. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/aux_/value_type_impl.hpp +3 -3
  915. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map0.hpp +4 -3
  916. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map10.hpp +3 -3
  917. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map20.hpp +3 -3
  918. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map30.hpp +3 -3
  919. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map40.hpp +3 -3
  920. data/src/cxx_supportlib/vendor-modified/boost/mpl/map/map50.hpp +3 -3
  921. data/src/cxx_supportlib/vendor-modified/boost/mpl/math/fixed_c.hpp +3 -3
  922. data/src/cxx_supportlib/vendor-modified/boost/mpl/math/is_even.hpp +3 -3
  923. data/src/cxx_supportlib/vendor-modified/boost/mpl/math/rational_c.hpp +3 -3
  924. data/src/cxx_supportlib/vendor-modified/boost/mpl/max.hpp +3 -3
  925. data/src/cxx_supportlib/vendor-modified/boost/mpl/max_element.hpp +3 -3
  926. data/src/cxx_supportlib/vendor-modified/boost/mpl/min.hpp +3 -3
  927. data/src/cxx_supportlib/vendor-modified/boost/mpl/min_element.hpp +3 -3
  928. data/src/cxx_supportlib/vendor-modified/boost/mpl/min_max.hpp +3 -3
  929. data/src/cxx_supportlib/vendor-modified/boost/mpl/minus.hpp +3 -3
  930. data/src/cxx_supportlib/vendor-modified/boost/mpl/modulus.hpp +3 -3
  931. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiplies.hpp +3 -3
  932. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/count_impl.hpp +3 -3
  933. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/insert_impl.hpp +3 -3
  934. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/item.hpp +3 -3
  935. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/multiset0.hpp +3 -3
  936. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/aux_/tag.hpp +3 -3
  937. data/src/cxx_supportlib/vendor-modified/boost/mpl/multiset/multiset0.hpp +3 -3
  938. data/src/cxx_supportlib/vendor-modified/boost/mpl/negate.hpp +3 -3
  939. data/src/cxx_supportlib/vendor-modified/boost/mpl/next.hpp +3 -3
  940. data/src/cxx_supportlib/vendor-modified/boost/mpl/next_prior.hpp +3 -3
  941. data/src/cxx_supportlib/vendor-modified/boost/mpl/not.hpp +3 -3
  942. data/src/cxx_supportlib/vendor-modified/boost/mpl/not_equal_to.hpp +3 -3
  943. data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +3 -3
  944. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +5 -5
  945. data/src/cxx_supportlib/vendor-modified/boost/mpl/order.hpp +3 -3
  946. data/src/cxx_supportlib/vendor-modified/boost/mpl/order_fwd.hpp +3 -3
  947. data/src/cxx_supportlib/vendor-modified/boost/mpl/pair.hpp +3 -3
  948. data/src/cxx_supportlib/vendor-modified/boost/mpl/pair_view.hpp +3 -3
  949. data/src/cxx_supportlib/vendor-modified/boost/mpl/partition.hpp +3 -3
  950. data/src/cxx_supportlib/vendor-modified/boost/mpl/placeholders.hpp +3 -3
  951. data/src/cxx_supportlib/vendor-modified/boost/mpl/plus.hpp +3 -3
  952. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_back.hpp +3 -3
  953. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_back_fwd.hpp +3 -3
  954. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_front.hpp +3 -3
  955. data/src/cxx_supportlib/vendor-modified/boost/mpl/pop_front_fwd.hpp +3 -3
  956. data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +7 -6
  957. data/src/cxx_supportlib/vendor-modified/boost/mpl/prior.hpp +3 -3
  958. data/src/cxx_supportlib/vendor-modified/boost/mpl/protect.hpp +3 -3
  959. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_back.hpp +3 -3
  960. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_back_fwd.hpp +3 -3
  961. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_front.hpp +3 -3
  962. data/src/cxx_supportlib/vendor-modified/boost/mpl/push_front_fwd.hpp +3 -3
  963. data/src/cxx_supportlib/vendor-modified/boost/mpl/quote.hpp +3 -3
  964. data/src/cxx_supportlib/vendor-modified/boost/mpl/range_c.hpp +3 -3
  965. data/src/cxx_supportlib/vendor-modified/boost/mpl/remove.hpp +3 -3
  966. data/src/cxx_supportlib/vendor-modified/boost/mpl/remove_if.hpp +3 -3
  967. data/src/cxx_supportlib/vendor-modified/boost/mpl/replace.hpp +3 -3
  968. data/src/cxx_supportlib/vendor-modified/boost/mpl/replace_if.hpp +3 -3
  969. data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse.hpp +3 -3
  970. data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse_fold.hpp +3 -3
  971. data/src/cxx_supportlib/vendor-modified/boost/mpl/reverse_iter_fold.hpp +3 -3
  972. data/src/cxx_supportlib/vendor-modified/boost/mpl/same_as.hpp +3 -3
  973. data/src/cxx_supportlib/vendor-modified/boost/mpl/sequence_tag.hpp +3 -3
  974. data/src/cxx_supportlib/vendor-modified/boost/mpl/sequence_tag_fwd.hpp +3 -3
  975. data/src/cxx_supportlib/vendor-modified/boost/mpl/set.hpp +3 -3
  976. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/at_impl.hpp +3 -3
  977. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/begin_end_impl.hpp +3 -3
  978. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/clear_impl.hpp +3 -3
  979. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/empty_impl.hpp +3 -3
  980. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/erase_impl.hpp +3 -3
  981. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/erase_key_impl.hpp +3 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/has_key_impl.hpp +3 -3
  983. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/include_preprocessed.hpp +3 -3
  984. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/insert_impl.hpp +3 -3
  985. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/insert_range_impl.hpp +41 -0
  986. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/item.hpp +8 -6
  987. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/iterator.hpp +3 -3
  988. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/key_type_impl.hpp +3 -3
  989. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/numbered.hpp +3 -3
  990. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/numbered_c.hpp +3 -3
  991. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/set0.hpp +3 -3
  992. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/size_impl.hpp +3 -3
  993. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/tag.hpp +3 -3
  994. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/aux_/value_type_impl.hpp +3 -3
  995. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set0.hpp +4 -3
  996. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set0_c.hpp +3 -3
  997. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set10.hpp +3 -3
  998. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set10_c.hpp +3 -3
  999. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set20.hpp +3 -3
  1000. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set20_c.hpp +3 -3
  1001. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set30.hpp +3 -3
  1002. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set30_c.hpp +3 -3
  1003. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set40.hpp +3 -3
  1004. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set40_c.hpp +3 -3
  1005. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set50.hpp +3 -3
  1006. data/src/cxx_supportlib/vendor-modified/boost/mpl/set/set50_c.hpp +3 -3
  1007. data/src/cxx_supportlib/vendor-modified/boost/mpl/set_c.hpp +3 -3
  1008. data/src/cxx_supportlib/vendor-modified/boost/mpl/shift_left.hpp +3 -3
  1009. data/src/cxx_supportlib/vendor-modified/boost/mpl/shift_right.hpp +3 -3
  1010. data/src/cxx_supportlib/vendor-modified/boost/mpl/single_view.hpp +3 -3
  1011. data/src/cxx_supportlib/vendor-modified/boost/mpl/size.hpp +3 -3
  1012. data/src/cxx_supportlib/vendor-modified/boost/mpl/size_fwd.hpp +3 -3
  1013. data/src/cxx_supportlib/vendor-modified/boost/mpl/size_t.hpp +3 -3
  1014. data/src/cxx_supportlib/vendor-modified/boost/mpl/size_t_fwd.hpp +3 -3
  1015. data/src/cxx_supportlib/vendor-modified/boost/mpl/sizeof.hpp +3 -3
  1016. data/src/cxx_supportlib/vendor-modified/boost/mpl/sort.hpp +3 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/mpl/stable_partition.hpp +3 -3
  1018. data/src/cxx_supportlib/vendor-modified/boost/mpl/string.hpp +2 -2
  1019. data/src/cxx_supportlib/vendor-modified/boost/mpl/switch.hpp +3 -3
  1020. data/src/cxx_supportlib/vendor-modified/boost/mpl/tag.hpp +3 -3
  1021. data/src/cxx_supportlib/vendor-modified/boost/mpl/times.hpp +3 -3
  1022. data/src/cxx_supportlib/vendor-modified/boost/mpl/transform.hpp +3 -3
  1023. data/src/cxx_supportlib/vendor-modified/boost/mpl/transform_view.hpp +3 -3
  1024. data/src/cxx_supportlib/vendor-modified/boost/mpl/unique.hpp +3 -3
  1025. data/src/cxx_supportlib/vendor-modified/boost/mpl/unpack_args.hpp +3 -3
  1026. data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +3 -3
  1027. data/src/cxx_supportlib/vendor-modified/boost/mpl/value_type.hpp +3 -3
  1028. data/src/cxx_supportlib/vendor-modified/boost/mpl/value_type_fwd.hpp +3 -3
  1029. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector.hpp +3 -3
  1030. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/O1_size.hpp +3 -3
  1031. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +3 -3
  1032. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/back.hpp +3 -3
  1033. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/begin_end.hpp +3 -3
  1034. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/clear.hpp +3 -3
  1035. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/empty.hpp +3 -3
  1036. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/front.hpp +3 -3
  1037. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/include_preprocessed.hpp +3 -3
  1038. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/item.hpp +3 -3
  1039. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/iterator.hpp +3 -3
  1040. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/numbered.hpp +3 -3
  1041. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/numbered_c.hpp +3 -3
  1042. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/pop_back.hpp +3 -3
  1043. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/pop_front.hpp +3 -3
  1044. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/push_back.hpp +3 -3
  1045. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/push_front.hpp +3 -3
  1046. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/size.hpp +3 -3
  1047. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/tag.hpp +3 -3
  1048. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/vector0.hpp +3 -3
  1049. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector0.hpp +3 -3
  1050. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector0_c.hpp +3 -3
  1051. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector10.hpp +3 -3
  1052. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector10_c.hpp +3 -3
  1053. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector20.hpp +3 -3
  1054. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector20_c.hpp +3 -3
  1055. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector30.hpp +3 -3
  1056. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector30_c.hpp +3 -3
  1057. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector40.hpp +3 -3
  1058. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector40_c.hpp +3 -3
  1059. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector50.hpp +3 -3
  1060. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/vector50_c.hpp +3 -3
  1061. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector_c.hpp +3 -3
  1062. data/src/cxx_supportlib/vendor-modified/boost/mpl/void.hpp +3 -3
  1063. data/src/cxx_supportlib/vendor-modified/boost/mpl/void_fwd.hpp +3 -3
  1064. data/src/cxx_supportlib/vendor-modified/boost/mpl/zip_view.hpp +3 -3
  1065. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +118 -4
  1066. data/src/cxx_supportlib/vendor-modified/boost/noncopyable.hpp +12 -43
  1067. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +32 -1
  1068. data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +18 -2
  1069. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +9 -37
  1070. data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +32 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +660 -84
  1072. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +3 -2
  1073. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +94 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +4 -27
  1075. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +2 -4
  1076. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +0 -84
  1077. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +1 -2
  1078. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +2 -2
  1079. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +0 -6
  1080. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +2 -28
  1081. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +0 -30
  1082. data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +5 -15
  1083. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +6 -107
  1084. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +2 -28
  1085. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +1 -1
  1086. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +12 -12
  1087. data/src/cxx_supportlib/vendor-modified/boost/predef.h +24 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +32 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +59 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +70 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +46 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +65 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +49 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +82 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +73 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +64 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +72 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +42 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +56 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +54 -0
  1101. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +67 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +43 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +43 -0
  1104. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +38 -0
  1105. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +87 -0
  1106. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +50 -0
  1107. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +42 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +43 -0
  1109. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +63 -0
  1110. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +56 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +61 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +66 -0
  1113. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +56 -0
  1114. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +56 -0
  1115. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +56 -0
  1116. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +56 -0
  1117. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +57 -0
  1118. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +68 -0
  1119. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +53 -0
  1120. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +66 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +61 -0
  1122. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +56 -0
  1123. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +72 -0
  1124. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +65 -0
  1125. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +56 -0
  1126. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +57 -0
  1127. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +53 -0
  1128. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +77 -0
  1129. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +53 -0
  1130. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +63 -0
  1131. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +56 -0
  1132. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +60 -0
  1133. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +66 -0
  1134. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +76 -0
  1135. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +53 -0
  1136. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +91 -0
  1137. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +56 -0
  1138. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/_cassert.h +17 -0
  1139. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/_exception.h +15 -0
  1140. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/comp_detected.h +10 -0
  1141. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +26 -0
  1142. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/os_detected.h +10 -0
  1143. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/platform_detected.h +10 -0
  1144. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/test.h +17 -0
  1145. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/test_def.h +71 -0
  1146. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware.h +16 -0
  1147. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +107 -0
  1148. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +57 -0
  1149. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +32 -0
  1150. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +69 -0
  1151. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +51 -0
  1152. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +123 -0
  1153. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +129 -0
  1154. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +87 -0
  1155. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +51 -0
  1156. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +17 -0
  1157. data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +42 -0
  1158. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +53 -0
  1159. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +121 -0
  1160. data/src/cxx_supportlib/vendor-modified/boost/predef/library.h +16 -0
  1161. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +20 -0
  1162. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/_prefix.h +13 -0
  1163. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +61 -0
  1164. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +47 -0
  1165. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +47 -0
  1166. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +56 -0
  1167. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std.h +25 -0
  1168. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/_prefix.h +23 -0
  1169. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +46 -0
  1170. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +52 -0
  1171. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +47 -0
  1172. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +45 -0
  1173. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +53 -0
  1174. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +56 -0
  1175. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +51 -0
  1176. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +53 -0
  1177. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +59 -0
  1178. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +44 -0
  1179. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +89 -0
  1180. data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +33 -0
  1181. data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +66 -0
  1182. data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +46 -0
  1183. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +45 -0
  1184. data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +45 -0
  1185. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +103 -0
  1186. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +48 -0
  1187. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +50 -0
  1188. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +60 -0
  1189. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +84 -0
  1190. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +171 -0
  1191. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +45 -0
  1192. data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +46 -0
  1193. data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +47 -0
  1194. data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +51 -0
  1195. data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +46 -0
  1196. data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +46 -0
  1197. data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +65 -0
  1198. data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +45 -0
  1199. data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +59 -0
  1200. data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +46 -0
  1201. data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +76 -0
  1202. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +52 -0
  1203. data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +51 -0
  1204. data/src/cxx_supportlib/vendor-modified/boost/predef/other.h +16 -0
  1205. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +204 -0
  1206. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +21 -0
  1207. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +69 -0
  1208. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +45 -0
  1209. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +43 -0
  1210. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +45 -0
  1211. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +43 -0
  1212. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +15 -0
  1213. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +53 -0
  1214. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/arithmetic/dec.hpp +1 -0
  1215. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +55 -0
  1216. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/push_back.hpp +3 -1
  1217. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/push_front.hpp +3 -1
  1218. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +17 -3
  1219. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +16 -3
  1220. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +12 -1
  1221. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -12
  1222. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +55 -0
  1223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/empty.hpp +2 -0
  1224. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/identity.hpp +4 -0
  1225. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty.hpp +17 -4
  1226. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_or_1.hpp +2 -1
  1227. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +57 -0
  1228. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/library.hpp +1 -0
  1229. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +33 -1
  1230. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +27 -4
  1231. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation.hpp +2 -0
  1232. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/detail/is_begin_parens.hpp +48 -0
  1233. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/is_begin_parens.hpp +51 -0
  1234. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/punctuation/remove_parens.hpp +39 -0
  1235. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +19 -1
  1236. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq.hpp +1 -0
  1237. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +10 -2
  1238. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +49 -0
  1239. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +57 -10
  1240. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +58 -10
  1241. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +18 -2
  1242. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +19 -3
  1243. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/size.hpp +1 -0
  1244. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/variadic_seq_to_seq.hpp +28 -0
  1245. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple.hpp +8 -1
  1246. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +28 -0
  1247. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/eat.hpp +10 -1
  1248. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +12 -2
  1249. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +37 -0
  1250. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +64 -0
  1251. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +65 -0
  1252. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +31 -0
  1253. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +32 -0
  1254. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +18 -3
  1255. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +64 -0
  1256. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +37 -0
  1257. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +4 -1
  1258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_array.hpp +3 -1
  1259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +3 -1
  1260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +6 -1
  1261. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +28 -0
  1262. data/src/cxx_supportlib/vendor-modified/boost/range/algorithm/equal.hpp +5 -3
  1263. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +1 -1
  1264. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +5 -13
  1265. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +35 -15
  1266. data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +9 -7
  1267. data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +39 -30
  1268. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +4 -3
  1269. data/src/cxx_supportlib/vendor-modified/boost/range/detail/extract_optional_type.hpp +21 -25
  1270. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +66 -0
  1271. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +11 -0
  1272. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +132 -0
  1273. data/src/cxx_supportlib/vendor-modified/boost/range/difference_type.hpp +20 -2
  1274. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +1 -1
  1275. data/src/cxx_supportlib/vendor-modified/boost/range/empty.hpp +1 -1
  1276. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +5 -13
  1277. data/src/cxx_supportlib/vendor-modified/boost/range/functions.hpp +1 -1
  1278. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +83 -0
  1279. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +36 -34
  1280. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +481 -251
  1281. data/src/cxx_supportlib/vendor-modified/boost/range/mutable_iterator.hpp +41 -29
  1282. data/src/cxx_supportlib/vendor-modified/boost/range/range_fwd.hpp +63 -0
  1283. data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +1 -1
  1284. data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +1 -1
  1285. data/src/cxx_supportlib/vendor-modified/boost/range/reverse_iterator.hpp +5 -3
  1286. data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +30 -6
  1287. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +18 -12
  1288. data/src/cxx_supportlib/vendor-modified/boost/range/value_type.hpp +1 -5
  1289. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/abs.hpp +4 -4
  1290. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/gcd.hpp +1 -1
  1291. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/lcm.hpp +1 -1
  1292. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/mpl/sign.hpp +4 -4
  1293. data/src/cxx_supportlib/vendor-modified/boost/ratio/detail/overflow_helpers.hpp +1 -1
  1294. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio.hpp +63 -3
  1295. data/src/cxx_supportlib/vendor-modified/boost/ratio/ratio_fwd.hpp +25 -0
  1296. data/src/cxx_supportlib/vendor-modified/boost/ref.hpp +12 -184
  1297. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +51 -9
  1298. data/src/cxx_supportlib/vendor-modified/boost/regex/mfc.hpp +30 -34
  1299. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +2 -2
  1300. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +10 -7
  1301. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +11 -5
  1302. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +18 -19
  1303. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +25 -38
  1304. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +211 -14
  1305. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +161 -106
  1306. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +7 -7
  1307. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +9 -9
  1308. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +24 -21
  1309. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +3 -3
  1310. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -1
  1311. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +24 -19
  1312. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +1 -1
  1313. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +46 -20
  1314. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +38 -14
  1315. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +206 -31
  1316. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +122 -16
  1317. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +2 -2
  1318. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +1 -1
  1319. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +15 -15
  1320. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +1 -1
  1321. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +3 -3
  1322. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +1 -1
  1323. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +2 -2
  1324. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +4 -4
  1325. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +2 -2
  1326. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +5 -5
  1327. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +6 -15
  1328. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +10 -10
  1329. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +10 -4
  1330. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +5 -4
  1331. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +23 -3
  1332. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +75 -71
  1333. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +2 -2
  1334. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +6 -15
  1335. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +43 -41
  1336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +103 -172
  1337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +318 -0
  1338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +67 -0
  1339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +16 -9
  1340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +106 -70
  1341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +36 -59
  1342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +59 -0
  1343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/{atomic_count_pthreads.hpp → atomic_count_pt.hpp} +5 -4
  1344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +62 -0
  1345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +60 -0
  1346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +2 -1
  1347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +116 -10
  1348. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -0
  1349. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +15 -1
  1350. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +140 -0
  1351. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -15
  1352. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +137 -0
  1353. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +21 -4
  1354. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_disable_deprecated.hpp +40 -0
  1355. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_forward.hpp +13 -0
  1356. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +8 -5
  1357. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_nullptr_t.hpp +1 -1
  1358. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +10 -1
  1359. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +1 -0
  1360. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pool.hpp +2 -2
  1361. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +83 -0
  1362. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +30 -2
  1363. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +10 -0
  1364. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +12 -0
  1365. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +80 -169
  1366. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +121 -118
  1367. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +10 -0
  1368. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +8 -6
  1369. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +54 -12
  1370. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +4 -19
  1371. data/src/cxx_supportlib/vendor-modified/boost/swap.hpp +11 -6
  1372. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +1 -0
  1373. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +467 -0
  1374. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +1 -2
  1375. data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +222 -36
  1376. data/src/cxx_supportlib/vendor-modified/boost/thread/caller_context.hpp +59 -0
  1377. data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +4 -11
  1378. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +209 -0
  1379. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +202 -0
  1380. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_views.hpp +165 -0
  1381. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +223 -0
  1382. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +223 -0
  1383. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +209 -0
  1384. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +202 -0
  1385. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +46 -0
  1386. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +155 -0
  1387. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +725 -0
  1388. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +327 -0
  1389. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +369 -0
  1390. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +335 -0
  1391. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +466 -0
  1392. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/deque.hpp +45 -0
  1393. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/devector.hpp +102 -0
  1394. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/functional.hpp +49 -0
  1395. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/list.hpp +35 -0
  1396. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory.hpp +61 -0
  1397. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_arg.hpp +41 -0
  1398. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/allocator_traits.hpp +35 -0
  1399. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/config.hpp +16 -0
  1400. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/default_delete.hpp +41 -0
  1401. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/pointer_traits.hpp +35 -0
  1402. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/scoped_allocator.hpp +35 -0
  1403. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/shared_ptr.hpp +42 -0
  1404. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/memory/unique_ptr.hpp +28 -0
  1405. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +45 -0
  1406. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/tuple.hpp +49 -0
  1407. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/vector.hpp +35 -0
  1408. data/src/cxx_supportlib/vendor-modified/boost/thread/cv_status.hpp +1 -1
  1409. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +32 -4
  1410. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/counter.hpp +17 -4
  1411. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/delete.hpp +2 -1
  1412. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/function_wrapper.hpp +93 -0
  1413. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +373 -120
  1414. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoker.hpp +762 -0
  1415. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/is_convertible.hpp +4 -3
  1416. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/memory.hpp +11 -119
  1417. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +116 -4
  1418. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +234 -0
  1419. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +41 -16
  1420. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_group.hpp +4 -3
  1421. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/variadic_footer.hpp +10 -0
  1422. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/variadic_header.hpp +19 -0
  1423. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptional_ptr.hpp +44 -0
  1424. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +4 -4
  1425. data/src/cxx_supportlib/vendor-modified/boost/thread/executor.hpp +15 -0
  1426. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +318 -0
  1427. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +77 -0
  1428. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/scheduled_executor_base.hpp +66 -0
  1429. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +148 -0
  1430. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +136 -0
  1431. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +213 -0
  1432. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +171 -0
  1433. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +205 -0
  1434. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +48 -0
  1435. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +271 -0
  1436. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +51 -0
  1437. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +216 -0
  1438. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +170 -0
  1439. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +157 -0
  1440. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +30 -0
  1441. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/config/inline_namespace.hpp +23 -0
  1442. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/exception_list.hpp +16 -0
  1443. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v1/exception_list.hpp +70 -0
  1444. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v1/inline_namespace.hpp +28 -0
  1445. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/inline_namespace.hpp +29 -0
  1446. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +316 -0
  1447. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/task_region.hpp +16 -0
  1448. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +2 -2
  1449. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +3327 -1705
  1450. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/future_error.hpp +98 -0
  1451. data/src/cxx_supportlib/vendor-modified/boost/thread/{future_error_code.hpp → futures/future_error_code.hpp} +7 -7
  1452. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/future_status.hpp +30 -0
  1453. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/is_future_type.hpp +21 -0
  1454. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +31 -0
  1455. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +74 -0
  1456. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +161 -0
  1457. data/src/cxx_supportlib/vendor-modified/boost/thread/latch.hpp +43 -15
  1458. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +45 -41
  1459. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_adapter.hpp +28 -28
  1460. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +1 -1
  1461. data/src/cxx_supportlib/vendor-modified/boost/thread/ostream_buffer.hpp +45 -0
  1462. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +2 -2
  1463. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +101 -56
  1464. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +141 -47
  1465. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +20 -13
  1466. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +4 -4
  1467. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +4 -4
  1468. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +11 -8
  1469. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +39 -10
  1470. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +15 -11
  1471. data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +1 -0
  1472. data/src/cxx_supportlib/vendor-modified/boost/thread/sync_bounded_queue.hpp +2 -580
  1473. data/src/cxx_supportlib/vendor-modified/boost/thread/sync_queue.hpp +2 -502
  1474. data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +78 -11
  1475. data/src/cxx_supportlib/vendor-modified/boost/thread/testable_mutex.hpp +4 -0
  1476. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_pool.hpp +15 -0
  1477. data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +8 -8
  1478. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +202 -0
  1479. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +6 -6
  1480. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +73 -1
  1481. data/src/cxx_supportlib/vendor-modified/boost/thread/with_lock_guard.hpp +234 -0
  1482. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +7 -5
  1483. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +3 -17
  1484. data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +14 -14
  1485. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +14 -5
  1486. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +1 -24
  1487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +9 -10
  1488. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +2 -9
  1489. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +8 -7
  1490. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -17
  1491. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +14 -62
  1492. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +5 -7
  1493. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +2 -9
  1494. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +134 -9
  1495. data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +9 -18
  1496. data/src/cxx_supportlib/vendor-modified/boost/type_traits/{detail/wrap.hpp → alignment_traits.hpp} +7 -10
  1497. data/src/cxx_supportlib/vendor-modified/boost/type_traits/arithmetic_traits.hpp +20 -0
  1498. data/src/cxx_supportlib/vendor-modified/boost/type_traits/array_traits.hpp +15 -0
  1499. data/src/cxx_supportlib/vendor-modified/boost/type_traits/broken_compiler_spec.hpp +9 -105
  1500. data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +118 -131
  1501. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +20 -0
  1502. data/src/cxx_supportlib/vendor-modified/boost/type_traits/config.hpp +5 -60
  1503. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +34 -0
  1504. data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +12 -13
  1505. data/src/cxx_supportlib/vendor-modified/boost/type_traits/declval.hpp +44 -0
  1506. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/bool_trait_def.hpp +9 -26
  1507. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/bool_trait_undef.hpp +2 -2
  1508. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +212 -0
  1509. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_type_impl.hpp +107 -0
  1510. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/composite_member_pointer_type.hpp +113 -0
  1511. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/composite_pointer_type.hpp +153 -0
  1512. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +72 -0
  1513. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +12 -19
  1514. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +12 -19
  1515. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +14 -19
  1516. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_and.hpp +7 -0
  1517. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_eq.hpp +7 -0
  1518. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_not.hpp +7 -0
  1519. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/ice_or.hpp +7 -0
  1520. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +13 -57
  1521. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +13 -218
  1522. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +13 -107
  1523. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +15 -974
  1524. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +56 -0
  1525. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/template_arity_spec.hpp +6 -21
  1526. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +138 -0
  1527. data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +20 -0
  1528. data/src/cxx_supportlib/vendor-modified/boost/type_traits/function_traits.hpp +0 -62
  1529. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_and.hpp +49 -0
  1530. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_and_assign.hpp +55 -0
  1531. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_or.hpp +49 -0
  1532. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_or_assign.hpp +55 -0
  1533. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_xor.hpp +49 -0
  1534. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_bit_xor_assign.hpp +55 -0
  1535. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_complement.hpp +32 -0
  1536. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +31 -0
  1537. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_divides.hpp +40 -0
  1538. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_divides_assign.hpp +47 -0
  1539. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +49 -0
  1540. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +49 -0
  1541. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +49 -0
  1542. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_left_shift.hpp +19 -19
  1543. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_left_shift_assign.hpp +55 -0
  1544. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +49 -0
  1545. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +49 -0
  1546. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_and.hpp +40 -0
  1547. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_not.hpp +32 -0
  1548. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_logical_or.hpp +40 -0
  1549. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +60 -0
  1550. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +65 -0
  1551. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_modulus.hpp +49 -0
  1552. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_modulus_assign.hpp +55 -0
  1553. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_multiplies.hpp +40 -0
  1554. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_multiplies_assign.hpp +47 -0
  1555. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_negate.hpp +25 -0
  1556. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_new_operator.hpp +147 -0
  1557. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +49 -0
  1558. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +57 -18
  1559. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +43 -24
  1560. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +52 -23
  1561. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +47 -0
  1562. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_operator.hpp +51 -0
  1563. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus.hpp +54 -0
  1564. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +66 -0
  1565. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +44 -0
  1566. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +44 -0
  1567. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +44 -0
  1568. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +44 -0
  1569. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_right_shift.hpp +19 -19
  1570. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_right_shift_assign.hpp +55 -0
  1571. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +23 -29
  1572. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_constructor.hpp +31 -25
  1573. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +34 -36
  1574. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +21 -22
  1575. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +40 -25
  1576. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +45 -25
  1577. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_unary_minus.hpp +25 -0
  1578. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_unary_plus.hpp +23 -0
  1579. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_virtual_destructor.hpp +26 -0
  1580. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +86 -33
  1581. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +181 -0
  1582. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +116 -41
  1583. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +6 -10
  1584. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_arithmetic.hpp +3 -32
  1585. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +12 -60
  1586. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +76 -0
  1587. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +9 -19
  1588. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_of.hpp +8 -20
  1589. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_of_tr1.hpp +37 -0
  1590. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_class.hpp +17 -43
  1591. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +24 -0
  1592. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +2 -24
  1593. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +8 -127
  1594. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +80 -0
  1595. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +94 -98
  1596. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +141 -0
  1597. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +187 -0
  1598. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +64 -0
  1599. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +60 -0
  1600. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +8 -117
  1601. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +19 -42
  1602. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +30 -0
  1603. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_float.hpp +2 -9
  1604. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_floating_point.hpp +12 -9
  1605. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +9 -18
  1606. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +2 -21
  1607. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +43 -37
  1608. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +8 -76
  1609. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +18 -34
  1610. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_object_pointer.hpp +24 -0
  1611. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +8 -79
  1612. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +32 -35
  1613. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +43 -41
  1614. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_object.hpp +7 -32
  1615. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +14 -101
  1616. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +12 -127
  1617. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_polymorphic.hpp +122 -0
  1618. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_reference.hpp +6 -21
  1619. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -8
  1620. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +4 -66
  1621. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scalar.hpp +3 -31
  1622. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +83 -60
  1623. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_stateless.hpp +8 -23
  1624. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_union.hpp +6 -32
  1625. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +85 -57
  1626. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +105 -0
  1627. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_void.hpp +7 -19
  1628. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +8 -115
  1629. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +35 -57
  1630. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +34 -57
  1631. data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +20 -0
  1632. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +86 -0
  1633. data/src/cxx_supportlib/vendor-modified/boost/type_traits/reference_traits.hpp +15 -0
  1634. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +35 -0
  1635. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +4 -31
  1636. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +8 -65
  1637. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +13 -57
  1638. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +35 -0
  1639. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +8 -23
  1640. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -21
  1641. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +7 -61
  1642. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +22 -0
  1643. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +101 -239
  1644. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +100 -0
  1645. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +61 -0
  1646. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +34 -0
  1647. data/src/cxx_supportlib/vendor-modified/boost/typeof/incr_registration_group.hpp +14 -0
  1648. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +118 -0
  1649. data/src/cxx_supportlib/vendor-modified/boost/typeof/integral_template_param.hpp +80 -0
  1650. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +121 -0
  1651. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +283 -0
  1652. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +38 -0
  1653. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions.hpp +50 -0
  1654. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +135 -0
  1655. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +62 -0
  1656. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +32 -0
  1657. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/bitset.hpp +15 -0
  1658. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/complex.hpp +15 -0
  1659. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/deque.hpp +17 -0
  1660. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/fstream.hpp +27 -0
  1661. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +55 -0
  1662. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iostream.hpp +18 -0
  1663. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/istream.hpp +21 -0
  1664. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/iterator.hpp +58 -0
  1665. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/list.hpp +17 -0
  1666. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/locale.hpp +40 -0
  1667. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/map.hpp +23 -0
  1668. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +17 -0
  1669. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/ostream.hpp +18 -0
  1670. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/queue.hpp +17 -0
  1671. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/set.hpp +22 -0
  1672. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/sstream.hpp +32 -0
  1673. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/stack.hpp +17 -0
  1674. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/streambuf.hpp +17 -0
  1675. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/string.hpp +24 -0
  1676. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/utility.hpp +15 -0
  1677. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/valarray.hpp +21 -0
  1678. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/vector.hpp +17 -0
  1679. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +160 -0
  1680. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +149 -0
  1681. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +27 -0
  1682. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_template_param.hpp +37 -0
  1683. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +186 -0
  1684. data/src/cxx_supportlib/vendor-modified/boost/typeof/unsupported.hpp +29 -0
  1685. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +166 -0
  1686. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +321 -0
  1687. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +471 -0
  1688. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +621 -0
  1689. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +171 -0
  1690. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +42 -34
  1691. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +108 -56
  1692. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +30 -24
  1693. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +21 -16
  1694. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +3 -3
  1695. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +45 -33
  1696. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +21 -15
  1697. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +8 -2
  1698. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +11 -6
  1699. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +3 -3
  1700. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +11 -6
  1701. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +3 -3
  1702. data/src/cxx_supportlib/vendor-modified/boost/unordered_map.hpp +3 -2
  1703. data/src/cxx_supportlib/vendor-modified/boost/unordered_set.hpp +3 -2
  1704. data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +21 -0
  1705. data/src/cxx_supportlib/vendor-modified/boost/utility/addressof.hpp +11 -96
  1706. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +171 -0
  1707. data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +708 -0
  1708. data/src/cxx_supportlib/vendor-modified/boost/utility/declval.hpp +5 -41
  1709. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +18 -5
  1710. data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +43 -0
  1711. data/src/cxx_supportlib/vendor-modified/boost/utility/enable_if.hpp +10 -112
  1712. data/src/cxx_supportlib/vendor-modified/boost/utility/explicit_operator_bool.hpp +17 -0
  1713. data/src/cxx_supportlib/vendor-modified/boost/utility/identity_type.hpp +46 -0
  1714. data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +2 -4
  1715. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +25 -9
  1716. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +536 -0
  1717. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref_fwd.hpp +37 -0
  1718. data/src/cxx_supportlib/vendor-modified/boost/utility/swap.hpp +10 -48
  1719. data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +77 -0
  1720. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +281 -0
  1721. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +6 -6
  1722. data/src/cxx_supportlib/vendor-modified/boost/visit_each.hpp +0 -2
  1723. data/src/cxx_supportlib/vendor-modified/modp_b64.cpp +3 -1
  1724. data/src/nginx_module/Configuration.c +157 -6
  1725. data/src/nginx_module/Configuration.h +3 -1
  1726. data/src/nginx_module/ContentHandler.c +2 -1
  1727. data/src/nginx_module/ngx_http_passenger_module.c +27 -46
  1728. data/src/nodejs_supportlib/phusion_passenger/log_express.js +1 -1
  1729. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1730. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +102 -0
  1731. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +20 -3
  1732. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +36 -3
  1733. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -0
  1734. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +3 -1
  1735. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/LICENSE.md +1 -1
  1736. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core.rb +7 -0
  1737. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/api.rb +28 -0
  1738. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/request_reporter/misc.rb +4 -0
  1739. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/spec_helper.rb +18 -0
  1740. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/transaction.rb +1 -10
  1741. data/src/ruby_supportlib/phusion_passenger/vendor/union_station_hooks_core/lib/union_station_hooks_core/version_data.rb +4 -4
  1742. metadata +609 -62
  1743. data/src/agent/UstRouter/DataStoreId.h +0 -184
  1744. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.0 +0 -15374
  1745. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.1 +0 -15374
  1746. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/output.2 +0 -15374
  1747. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/requests +0 -568
  1748. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.0 +0 -3104
  1749. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.1 +0 -3104
  1750. data/src/cxx_supportlib/vendor-copy/libuv/autom4te.cache/traces.2 +0 -699
  1751. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/base.hpp +0 -585
  1752. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas32strong.hpp +0 -885
  1753. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas32weak.hpp +0 -947
  1754. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas64strong.hpp +0 -443
  1755. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-alpha.hpp +0 -368
  1756. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-armv6plus.hpp +0 -252
  1757. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-cas.hpp +0 -157
  1758. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-ppc.hpp +0 -2850
  1759. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-sparcv9.hpp +0 -1259
  1760. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc-x86.hpp +0 -1766
  1761. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/generic-cas.hpp +0 -206
  1762. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/linux-arm.hpp +0 -189
  1763. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type-classification.hpp +0 -45
  1764. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithms.hpp +0 -84
  1765. data/src/cxx_supportlib/vendor-modified/boost/container/detail/memory_util.hpp +0 -83
  1766. data/src/cxx_supportlib/vendor-modified/boost/container/detail/preprocessor.hpp +0 -232
  1767. data/src/cxx_supportlib/vendor-modified/boost/container/detail/utilities.hpp +0 -1141
  1768. data/src/cxx_supportlib/vendor-modified/boost/detail/is_incrementable.hpp +0 -134
  1769. data/src/cxx_supportlib/vendor-modified/boost/detail/is_xxx.hpp +0 -61
  1770. data/src/cxx_supportlib/vendor-modified/boost/detail/limits.hpp +0 -449
  1771. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/attribute_noreturn.hpp +0 -17
  1772. data/src/cxx_supportlib/vendor-modified/boost/indirect_reference.hpp +0 -43
  1773. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/clear_on_destructor_base.hpp +0 -36
  1774. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/memory_util.hpp +0 -288
  1775. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/preprocessor.hpp +0 -52
  1776. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/utilities.hpp +0 -858
  1777. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set_hook.hpp +0 -292
  1778. data/src/cxx_supportlib/vendor-modified/boost/libs/atomic/lockpool.cpp +0 -24
  1779. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/local_free_on_destruction.hpp +0 -40
  1780. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/timeconv.inl +0 -151
  1781. data/src/cxx_supportlib/vendor-modified/boost/math/common_factor_ct.hpp +0 -180
  1782. data/src/cxx_supportlib/vendor-modified/boost/math_fwd.hpp +0 -108
  1783. data/src/cxx_supportlib/vendor-modified/boost/parameter.hpp +0 -21
  1784. data/src/cxx_supportlib/vendor-modified/boost/pointee.hpp +0 -74
  1785. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/allocate_array_helper.hpp +0 -169
  1786. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_deleter.hpp +0 -124
  1787. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/make_array_helper.hpp +0 -157
  1788. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/async_func.hpp +0 -571
  1789. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_type_imp.hpp +0 -333
  1790. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/cv_traits_impl.hpp +0 -97
  1791. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/false_result.hpp +0 -28
  1792. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/size_t_trait_def.hpp +0 -60
  1793. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/size_t_trait_undef.hpp +0 -16
  1794. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/type_trait_def.hpp +0 -67
  1795. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/type_trait_undef.hpp +0 -19
  1796. data/src/cxx_supportlib/vendor-modified/boost/units/detail/utility.hpp +0 -104
@@ -8,20 +8,12 @@
8
8
  # include <boost/detail/iterator.hpp>
9
9
  # include <boost/detail/workaround.hpp>
10
10
 
11
- namespace boost {
11
+ namespace boost {
12
+ namespace iterators {
12
13
 
13
- // Unfortunately, g++ 2.95.x chokes when we define a class template
14
- // iterator_category which has the same name as its
15
- // std::iterator_category() function, probably due in part to the
16
- // "std:: is visible globally" hack it uses. Use
17
- // BOOST_ITERATOR_CATEGORY to write code that's portable to older
18
- // GCCs.
19
-
20
- # if BOOST_WORKAROUND(__GNUC__, <= 2)
21
- # define BOOST_ITERATOR_CATEGORY iterator_category_
22
- # else
23
- # define BOOST_ITERATOR_CATEGORY iterator_category
24
- # endif
14
+ // Macro for supporting old compilers, no longer needed but kept
15
+ // for backwards compatibility (it was documented).
16
+ #define BOOST_ITERATOR_CATEGORY iterator_category
25
17
 
26
18
 
27
19
  template <class Iterator>
@@ -29,20 +21,20 @@ struct iterator_value
29
21
  {
30
22
  typedef typename boost::detail::iterator_traits<Iterator>::value_type type;
31
23
  };
32
-
24
+
33
25
  template <class Iterator>
34
26
  struct iterator_reference
35
27
  {
36
28
  typedef typename boost::detail::iterator_traits<Iterator>::reference type;
37
29
  };
38
-
39
-
30
+
31
+
40
32
  template <class Iterator>
41
33
  struct iterator_pointer
42
34
  {
43
35
  typedef typename boost::detail::iterator_traits<Iterator>::pointer type;
44
36
  };
45
-
37
+
46
38
  template <class Iterator>
47
39
  struct iterator_difference
48
40
  {
@@ -50,43 +42,19 @@ struct iterator_difference
50
42
  };
51
43
 
52
44
  template <class Iterator>
53
- struct BOOST_ITERATOR_CATEGORY
45
+ struct iterator_category
54
46
  {
55
47
  typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type;
56
48
  };
57
49
 
58
- # if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
59
- template <>
60
- struct iterator_value<int>
61
- {
62
- typedef void type;
63
- };
64
-
65
- template <>
66
- struct iterator_reference<int>
67
- {
68
- typedef void type;
69
- };
50
+ } // namespace iterators
70
51
 
71
- template <>
72
- struct iterator_pointer<int>
73
- {
74
- typedef void type;
75
- };
76
-
77
- template <>
78
- struct iterator_difference<int>
79
- {
80
- typedef void type;
81
- };
82
-
83
- template <>
84
- struct BOOST_ITERATOR_CATEGORY<int>
85
- {
86
- typedef void type;
87
- };
88
- # endif
52
+ using iterators::iterator_value;
53
+ using iterators::iterator_reference;
54
+ using iterators::iterator_pointer;
55
+ using iterators::iterator_difference;
56
+ using iterators::iterator_category;
89
57
 
90
- } // namespace boost::iterator
58
+ } // namespace boost
91
59
 
92
60
  #endif // ITERATOR_TRAITS_DWA200347_HPP
@@ -1,41 +1,26 @@
1
1
  // Copyright David Abrahams 2003. Use, modification and distribution is
2
2
  // subject to the Boost Software License, Version 1.0. (See accompanying
3
3
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4
- #ifndef MINIMUM_CATEGORY_DWA20031119_HPP
5
- # define MINIMUM_CATEGORY_DWA20031119_HPP
4
+ #ifndef BOOST_ITERATOR_MINIMUM_CATEGORY_HPP_INCLUDED_
5
+ # define BOOST_ITERATOR_MINIMUM_CATEGORY_HPP_INCLUDED_
6
6
 
7
+ # include <boost/static_assert.hpp>
7
8
  # include <boost/type_traits/is_convertible.hpp>
8
9
  # include <boost/type_traits/is_same.hpp>
9
10
 
11
+ # include <boost/mpl/placeholders.hpp>
10
12
  # include <boost/mpl/aux_/lambda_support.hpp>
11
13
 
12
- namespace boost { namespace detail {
13
- //
14
- // Returns the minimum category type or error_type
15
- // if T1 and T2 are unrelated.
16
- //
17
- // For compilers not supporting is_convertible this only
18
- // works with the new boost return and traversal category
19
- // types. The exact boost _types_ are required. No derived types
20
- // will work.
21
- //
22
- //
14
+ namespace boost {
15
+ namespace iterators {
16
+ namespace detail {
17
+
23
18
  template <bool GreaterEqual, bool LessEqual>
24
- struct minimum_category_impl
25
- # if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
26
- {
27
- template <class T1, class T2> struct apply
28
- {
29
- typedef T2 type;
30
- };
31
- typedef void type;
32
- }
33
- # endif
34
- ;
19
+ struct minimum_category_impl;
35
20
 
36
21
  template <class T1, class T2>
37
22
  struct error_not_related_by_convertibility;
38
-
23
+
39
24
  template <>
40
25
  struct minimum_category_impl<true,false>
41
26
  {
@@ -68,31 +53,31 @@ template <>
68
53
  struct minimum_category_impl<false,false>
69
54
  {
70
55
  template <class T1, class T2> struct apply
71
- : error_not_related_by_convertibility<T1,T2>
56
+ : error_not_related_by_convertibility<T1,T2>
72
57
  {
73
58
  };
74
59
  };
75
60
 
61
+ } // namespace detail
62
+
63
+ //
64
+ // Returns the minimum category type or fails to compile
65
+ // if T1 and T2 are unrelated.
66
+ //
76
67
  template <class T1 = mpl::_1, class T2 = mpl::_2>
77
68
  struct minimum_category
78
69
  {
79
- typedef minimum_category_impl<
80
- # if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
81
- is_same<T2,int>::value ||
82
- # endif
70
+ typedef boost::iterators::detail::minimum_category_impl<
83
71
  ::boost::is_convertible<T1,T2>::value
84
72
  , ::boost::is_convertible<T2,T1>::value
85
- # if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
86
- || is_same<T1,int>::value
87
- # endif
88
73
  > outer;
89
74
 
90
75
  typedef typename outer::template apply<T1,T2> inner;
91
76
  typedef typename inner::type type;
92
-
77
+
93
78
  BOOST_MPL_AUX_LAMBDA_SUPPORT(2,minimum_category,(T1,T2))
94
79
  };
95
-
80
+
96
81
  template <>
97
82
  struct minimum_category<mpl::_1,mpl::_2>
98
83
  {
@@ -103,14 +88,8 @@ struct minimum_category<mpl::_1,mpl::_2>
103
88
  BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,minimum_category,(mpl::_1,mpl::_2))
104
89
  };
105
90
 
106
- # if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
107
- template <>
108
- struct minimum_category<int,int>
109
- {
110
- typedef int type;
111
- };
112
- # endif
113
-
114
- }} // namespace boost::detail
91
+ } // namespace iterators
92
+
93
+ } // namespace boost
115
94
 
116
- #endif // MINIMUM_CATEGORY_DWA20031119_HPP
95
+ #endif // BOOST_ITERATOR_MINIMUM_CATEGORY_HPP_INCLUDED_
@@ -11,8 +11,8 @@
11
11
  #include <boost/iterator.hpp>
12
12
  #include <boost/iterator/iterator_adaptor.hpp>
13
13
 
14
- namespace boost
15
- {
14
+ namespace boost {
15
+ namespace iterators {
16
16
 
17
17
  //
18
18
  //
@@ -28,7 +28,7 @@ namespace boost
28
28
  public:
29
29
  reverse_iterator() {}
30
30
 
31
- explicit reverse_iterator(Iterator x)
31
+ explicit reverse_iterator(Iterator x)
32
32
  : super_t(x) {}
33
33
 
34
34
  template<class OtherIterator>
@@ -41,7 +41,7 @@ namespace boost
41
41
 
42
42
  private:
43
43
  typename super_t::reference dereference() const { return *boost::prior(this->base()); }
44
-
44
+
45
45
  void increment() { --this->base_reference(); }
46
46
  void decrement() { ++this->base_reference(); }
47
47
 
@@ -59,11 +59,16 @@ namespace boost
59
59
  };
60
60
 
61
61
  template <class BidirectionalIterator>
62
- reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
62
+ inline reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
63
63
  {
64
64
  return reverse_iterator<BidirectionalIterator>(x);
65
65
  }
66
66
 
67
+ } // namespace iterators
68
+
69
+ using iterators::reverse_iterator;
70
+ using iterators::make_reverse_iterator;
71
+
67
72
  } // namespace boost
68
73
 
69
74
  #endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP
@@ -26,16 +26,17 @@
26
26
  #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
27
27
  # include <boost/type_traits/is_base_and_derived.hpp>
28
28
 
29
- #endif
29
+ #endif
30
30
  #include <boost/iterator/detail/config_def.hpp>
31
31
 
32
32
 
33
- namespace boost
34
- {
33
+ namespace boost {
34
+ namespace iterators {
35
+
35
36
  template <class UnaryFunction, class Iterator, class Reference = use_default, class Value = use_default>
36
37
  class transform_iterator;
37
38
 
38
- namespace detail
39
+ namespace detail
39
40
  {
40
41
  // Compute the iterator_adaptor instantiation to be used for transform_iterator
41
42
  template <class UnaryFunc, class Iterator, class Reference, class Value>
@@ -72,10 +73,10 @@ namespace boost
72
73
 
73
74
  template <class UnaryFunc, class Iterator, class Reference, class Value>
74
75
  class transform_iterator
75
- : public boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
76
+ : public boost::iterators::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
76
77
  {
77
78
  typedef typename
78
- boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
79
+ boost::iterators::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
79
80
  super_t;
80
81
 
81
82
  friend class iterator_core_access;
@@ -95,7 +96,7 @@ namespace boost
95
96
  // don't provide this constructor if UnaryFunc is a
96
97
  // function pointer type, since it will be 0. Too dangerous.
97
98
  BOOST_STATIC_ASSERT(is_class<UnaryFunc>::value);
98
- #endif
99
+ #endif
99
100
  }
100
101
 
101
102
  template <
@@ -108,7 +109,7 @@ namespace boost
108
109
  , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
109
110
  #if !BOOST_WORKAROUND(BOOST_MSVC, == 1310)
110
111
  , typename enable_if_convertible<OtherUnaryFunction, UnaryFunc>::type* = 0
111
- #endif
112
+ #endif
112
113
  )
113
114
  : super_t(t.base()), m_f(t.functor())
114
115
  {}
@@ -126,7 +127,7 @@ namespace boost
126
127
  };
127
128
 
128
129
  template <class UnaryFunc, class Iterator>
129
- transform_iterator<UnaryFunc, Iterator>
130
+ inline transform_iterator<UnaryFunc, Iterator>
130
131
  make_transform_iterator(Iterator it, UnaryFunc fun)
131
132
  {
132
133
  return transform_iterator<UnaryFunc, Iterator>(it, fun);
@@ -140,16 +141,9 @@ namespace boost
140
141
  // function pointer in the iterator be 0, leading to a runtime
141
142
  // crash.
142
143
  template <class UnaryFunc, class Iterator>
143
- #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
144
- typename mpl::if_<
145
- #else
146
- typename iterators::enable_if<
147
- #endif
144
+ inline typename iterators::enable_if<
148
145
  is_class<UnaryFunc> // We should probably find a cheaper test than is_class<>
149
146
  , transform_iterator<UnaryFunc, Iterator>
150
- #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
151
- , int[3]
152
- #endif
153
147
  >::type
154
148
  make_transform_iterator(Iterator it)
155
149
  {
@@ -158,13 +152,18 @@ namespace boost
158
152
 
159
153
  #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
160
154
  template <class Return, class Argument, class Iterator>
161
- transform_iterator< Return (*)(Argument), Iterator, Return>
155
+ inline transform_iterator< Return (*)(Argument), Iterator, Return>
162
156
  make_transform_iterator(Iterator it, Return (*fun)(Argument))
163
157
  {
164
158
  return transform_iterator<Return (*)(Argument), Iterator, Return>(it, fun);
165
159
  }
166
160
  #endif
167
161
 
162
+ } // namespace iterators
163
+
164
+ using iterators::transform_iterator;
165
+ using iterators::make_transform_iterator;
166
+
168
167
  } // namespace boost
169
168
 
170
169
  #include <boost/iterator/detail/config_undef.hpp>
@@ -1,16 +1,10 @@
1
- #ifndef BOOST_LEXICAL_CAST_INCLUDED
2
- #define BOOST_LEXICAL_CAST_INCLUDED
3
-
4
- // MS compatible compilers support #pragma once
5
-
6
- #if defined(_MSC_VER) && (_MSC_VER >= 1020)
7
- # pragma once
8
- #endif
9
-
10
- // Boost lexical_cast.hpp header -------------------------------------------//
1
+ // Copyright Kevlin Henney, 2000-2005.
2
+ // Copyright Alexander Nasonov, 2006-2010.
3
+ // Copyright Antony Polukhin, 2011-2014.
11
4
  //
12
- // See http://www.boost.org/libs/conversion for documentation.
13
- // See end of this header for rights and permissions.
5
+ // Distributed under the Boost Software License, Version 1.0. (See
6
+ // accompanying file LICENSE_1_0.txt or copy at
7
+ // http://www.boost.org/LICENSE_1_0.txt)
14
8
  //
15
9
  // what: lexical_cast custom keyword cast
16
10
  // who: contributed by Kevlin Henney,
@@ -19,2522 +13,53 @@
19
13
  // Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
20
14
  // Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
21
15
  // Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
22
- // when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2013
23
-
24
- #include <boost/config.hpp>
25
- #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
26
- #define BOOST_LCAST_NO_WCHAR_T
27
- #endif
28
-
29
- #include <climits>
30
- #include <cstddef>
31
- #include <string>
32
- #include <cstring>
33
- #include <cstdio>
34
- #include <typeinfo>
35
- #include <exception>
36
- #include <boost/limits.hpp>
37
- #include <boost/mpl/if.hpp>
38
- #include <boost/throw_exception.hpp>
39
- #include <boost/type_traits/ice.hpp>
40
- #include <boost/type_traits/is_pointer.hpp>
41
- #include <boost/static_assert.hpp>
42
- #include <boost/detail/lcast_precision.hpp>
43
- #include <boost/detail/workaround.hpp>
44
-
45
-
46
- #ifndef BOOST_NO_STD_LOCALE
47
- # include <locale>
48
- #else
49
- # ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
50
- // Getting error at this point means, that your STL library is old/lame/misconfigured.
51
- // If nothing can be done with STL library, define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE,
52
- // but beware: lexical_cast will understand only 'C' locale delimeters and thousands
53
- // separators.
54
- # error "Unable to use <locale> header. Define BOOST_LEXICAL_CAST_ASSUME_C_LOCALE to force "
55
- # error "boost::lexical_cast to use only 'C' locale during conversions."
56
- # endif
57
- #endif
58
-
59
- #ifdef BOOST_NO_STRINGSTREAM
60
- #include <strstream>
61
- #else
62
- #include <sstream>
63
- #endif
64
-
65
- #ifdef BOOST_NO_TYPEID
66
- #define BOOST_LCAST_THROW_BAD_CAST(S, T) throw_exception(bad_lexical_cast())
67
- #else
68
- #define BOOST_LCAST_THROW_BAD_CAST(Source, Target) \
69
- throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)))
70
- #endif
71
-
72
- #if (defined(BOOST_LCAST_HAS_INT128) && !defined(__GNUC__)) || GCC_VERSION > 40700
73
- #define BOOST_LCAST_HAS_INT128
74
- #endif
75
-
76
-
77
- namespace boost
78
- {
79
- // exception used to indicate runtime lexical_cast failure
80
- class BOOST_SYMBOL_VISIBLE bad_lexical_cast :
81
- // workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0
82
- #if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
83
- public std::exception
84
- #else
85
- public std::bad_cast
86
- #endif
87
-
88
- #if defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, < 0x560 )
89
- // under bcc32 5.5.1 bad_cast doesn't derive from exception
90
- , public std::exception
91
- #endif
92
-
93
- {
94
- public:
95
- bad_lexical_cast() BOOST_NOEXCEPT :
96
- #ifndef BOOST_NO_TYPEID
97
- source(&typeid(void)), target(&typeid(void))
98
- #else
99
- source(0), target(0) // this breaks getters
100
- #endif
101
- {
102
- }
103
-
104
- bad_lexical_cast(
105
- const std::type_info &source_type_arg,
106
- const std::type_info &target_type_arg) BOOST_NOEXCEPT :
107
- source(&source_type_arg), target(&target_type_arg)
108
- {
109
- }
16
+ // when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
110
17
 
111
- const std::type_info &source_type() const
112
- {
113
- return *source;
114
- }
115
- const std::type_info &target_type() const
116
- {
117
- return *target;
118
- }
119
-
120
- #ifndef BOOST_NO_CXX11_NOEXCEPT
121
- virtual const char *what() const noexcept
122
- #else
123
- virtual const char *what() const throw()
124
- #endif
125
- {
126
- return "bad lexical cast: "
127
- "source type value could not be interpreted as target";
128
- }
18
+ #ifndef BOOST_LEXICAL_CAST_INCLUDED
19
+ #define BOOST_LEXICAL_CAST_INCLUDED
129
20
 
130
- #ifndef BOOST_NO_CXX11_NOEXCEPT
131
- virtual ~bad_lexical_cast() BOOST_NOEXCEPT
132
- #else
133
- virtual ~bad_lexical_cast() throw()
21
+ #include <boost/config.hpp>
22
+ #ifdef BOOST_HAS_PRAGMA_ONCE
23
+ # pragma once
134
24
  #endif
135
- {}
136
- private:
137
- const std::type_info *source;
138
- const std::type_info *target;
139
- };
140
25
 
141
- namespace detail // widest_char
142
- {
143
- template <typename TargetChar, typename SourceChar>
144
- struct widest_char
145
- {
146
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
147
- (sizeof(TargetChar) > sizeof(SourceChar))
148
- , TargetChar
149
- , SourceChar >::type type;
150
- };
151
- }
152
- } // namespace boost
153
-
154
- #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(__SUNPRO_CC) && !defined(__PGIC__)
155
-
156
- #include <cmath>
157
- #include <istream>
158
-
159
- #ifndef BOOST_NO_CXX11_HDR_ARRAY
160
- #include <array>
26
+ #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
27
+ #define BOOST_LCAST_NO_WCHAR_T
161
28
  #endif
162
29
 
163
- #include <boost/array.hpp>
164
- #include <boost/numeric/conversion/cast.hpp>
165
- #include <boost/type_traits/make_unsigned.hpp>
166
- #include <boost/type_traits/is_signed.hpp>
167
- #include <boost/type_traits/is_integral.hpp>
168
- #include <boost/type_traits/is_arithmetic.hpp>
169
- #include <boost/type_traits/remove_pointer.hpp>
170
- #include <boost/type_traits/has_left_shift.hpp>
171
- #include <boost/type_traits/has_right_shift.hpp>
172
- #include <boost/math/special_functions/sign.hpp>
173
- #include <boost/math/special_functions/fpclassify.hpp>
174
30
  #include <boost/range/iterator_range_core.hpp>
175
- #include <boost/container/container_fwd.hpp>
176
- #include <boost/integer.hpp>
177
- #ifndef BOOST_NO_CWCHAR
178
- # include <cwchar>
179
- #endif
180
-
181
- namespace boost {
182
-
183
- namespace detail // is_char_or_wchar<...>
184
- {
185
- // returns true, if T is one of the character types
186
- template < typename T >
187
- struct is_char_or_wchar
188
- {
189
- typedef boost::type_traits::ice_or<
190
- boost::is_same< T, char >::value,
191
- #ifndef BOOST_LCAST_NO_WCHAR_T
192
- boost::is_same< T, wchar_t >::value,
193
- #endif
194
- #ifndef BOOST_NO_CXX11_CHAR16_T
195
- boost::is_same< T, char16_t >::value,
196
- #endif
197
- #ifndef BOOST_NO_CXX11_CHAR32_T
198
- boost::is_same< T, char32_t >::value,
199
- #endif
200
- boost::is_same< T, unsigned char >::value,
201
- boost::is_same< T, signed char >::value
202
- > result_type;
203
-
204
- BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
205
- };
206
- }
207
-
208
- namespace detail // normalize_single_byte_char<Char>
209
- {
210
- // Converts signed/unsigned char to char
211
- template < class Char >
212
- struct normalize_single_byte_char
213
- {
214
- typedef Char type;
215
- };
216
-
217
- template <>
218
- struct normalize_single_byte_char< signed char >
219
- {
220
- typedef char type;
221
- };
222
-
223
- template <>
224
- struct normalize_single_byte_char< unsigned char >
225
- {
226
- typedef char type;
227
- };
228
- }
229
-
230
- namespace detail // deduce_character_type_later<T>
231
- {
232
- // Helper type, meaning that stram character for T must be deduced
233
- // at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
234
- template < class T > struct deduce_character_type_later {};
235
- }
236
-
237
- namespace detail // stream_char_common<T>
238
- {
239
- // Selectors to choose stream character type (common for Source and Target)
240
- // Returns one of char, wchar_t, char16_t, char32_t or deduce_character_type_later<T> types
241
- // Executed on Stage 1 (See deduce_source_char<T> and deduce_target_char<T>)
242
- template < typename Type >
243
- struct stream_char_common: public boost::mpl::if_c<
244
- boost::detail::is_char_or_wchar< Type >::value,
245
- Type,
246
- boost::detail::deduce_character_type_later< Type >
247
- > {};
248
-
249
- template < typename Char >
250
- struct stream_char_common< Char* >: public boost::mpl::if_c<
251
- boost::detail::is_char_or_wchar< Char >::value,
252
- Char,
253
- boost::detail::deduce_character_type_later< Char* >
254
- > {};
255
-
256
- template < typename Char >
257
- struct stream_char_common< const Char* >: public boost::mpl::if_c<
258
- boost::detail::is_char_or_wchar< Char >::value,
259
- Char,
260
- boost::detail::deduce_character_type_later< const Char* >
261
- > {};
262
-
263
- template < typename Char >
264
- struct stream_char_common< boost::iterator_range< Char* > >: public boost::mpl::if_c<
265
- boost::detail::is_char_or_wchar< Char >::value,
266
- Char,
267
- boost::detail::deduce_character_type_later< boost::iterator_range< Char* > >
268
- > {};
269
-
270
- template < typename Char >
271
- struct stream_char_common< boost::iterator_range< const Char* > >: public boost::mpl::if_c<
272
- boost::detail::is_char_or_wchar< Char >::value,
273
- Char,
274
- boost::detail::deduce_character_type_later< boost::iterator_range< const Char* > >
275
- > {};
276
-
277
- template < class Char, class Traits, class Alloc >
278
- struct stream_char_common< std::basic_string< Char, Traits, Alloc > >
279
- {
280
- typedef Char type;
281
- };
282
-
283
- template < class Char, class Traits, class Alloc >
284
- struct stream_char_common< boost::container::basic_string< Char, Traits, Alloc > >
285
- {
286
- typedef Char type;
287
- };
288
-
289
- template < typename Char, std::size_t N >
290
- struct stream_char_common< boost::array< Char, N > >: public boost::mpl::if_c<
291
- boost::detail::is_char_or_wchar< Char >::value,
292
- Char,
293
- boost::detail::deduce_character_type_later< boost::array< Char, N > >
294
- > {};
295
-
296
- template < typename Char, std::size_t N >
297
- struct stream_char_common< boost::array< const Char, N > >: public boost::mpl::if_c<
298
- boost::detail::is_char_or_wchar< Char >::value,
299
- Char,
300
- boost::detail::deduce_character_type_later< boost::array< const Char, N > >
301
- > {};
302
-
303
- #ifndef BOOST_NO_CXX11_HDR_ARRAY
304
- template < typename Char, std::size_t N >
305
- struct stream_char_common< std::array<Char, N > >: public boost::mpl::if_c<
306
- boost::detail::is_char_or_wchar< Char >::value,
307
- Char,
308
- boost::detail::deduce_character_type_later< std::array< Char, N > >
309
- > {};
310
-
311
- template < typename Char, std::size_t N >
312
- struct stream_char_common< std::array< const Char, N > >: public boost::mpl::if_c<
313
- boost::detail::is_char_or_wchar< Char >::value,
314
- Char,
315
- boost::detail::deduce_character_type_later< std::array< const Char, N > >
316
- > {};
317
- #endif
318
-
319
- #ifdef BOOST_LCAST_HAS_INT128
320
- template <> struct stream_char_common< boost::int128_type >: public boost::mpl::identity< char > {};
321
- template <> struct stream_char_common< boost::uint128_type >: public boost::mpl::identity< char > {};
322
- #endif
323
-
324
- #if !defined(BOOST_LCAST_NO_WCHAR_T) && defined(BOOST_NO_INTRINSIC_WCHAR_T)
325
- template <>
326
- struct stream_char_common< wchar_t >
327
- {
328
- typedef char type;
329
- };
330
- #endif
331
- }
332
-
333
- namespace detail // deduce_source_char_impl<T>
334
- {
335
- // If type T is `deduce_character_type_later` type, then tries to deduce
336
- // character type using boost::has_left_shift<T> metafunction.
337
- // Otherwise supplied type T is a character type, that must be normalized
338
- // using normalize_single_byte_char<Char>.
339
- // Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
340
- template < class Char >
341
- struct deduce_source_char_impl
342
- {
343
- typedef BOOST_DEDUCED_TYPENAME boost::detail::normalize_single_byte_char< Char >::type type;
344
- };
345
-
346
- template < class T >
347
- struct deduce_source_char_impl< deduce_character_type_later< T > >
348
- {
349
- typedef boost::has_left_shift< std::basic_ostream< char >, T > result_t;
350
-
351
- #if defined(BOOST_LCAST_NO_WCHAR_T)
352
- BOOST_STATIC_ASSERT_MSG((result_t::value),
353
- "Source type is not std::ostream`able and std::wostream`s are not supported by your STL implementation");
354
- typedef char type;
355
- #else
356
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
357
- result_t::value, char, wchar_t
358
- >::type type;
359
-
360
- BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_left_shift< std::basic_ostream< type >, T >::value),
361
- "Source type is neither std::ostream`able nor std::wostream`able");
362
- #endif
363
- };
364
- }
365
-
366
- namespace detail // deduce_target_char_impl<T>
367
- {
368
- // If type T is `deduce_character_type_later` type, then tries to deduce
369
- // character type using boost::has_right_shift<T> metafunction.
370
- // Otherwise supplied type T is a character type, that must be normalized
371
- // using normalize_single_byte_char<Char>.
372
- // Executed at Stage 2 (See deduce_source_char<T> and deduce_target_char<T>)
373
- template < class Char >
374
- struct deduce_target_char_impl
375
- {
376
- typedef BOOST_DEDUCED_TYPENAME normalize_single_byte_char< Char >::type type;
377
- };
378
-
379
- template < class T >
380
- struct deduce_target_char_impl< deduce_character_type_later<T> >
381
- {
382
- typedef boost::has_right_shift<std::basic_istream<char>, T > result_t;
383
-
384
- #if defined(BOOST_LCAST_NO_WCHAR_T)
385
- BOOST_STATIC_ASSERT_MSG((result_t::value),
386
- "Target type is not std::istream`able and std::wistream`s are not supported by your STL implementation");
387
- typedef char type;
388
- #else
389
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
390
- result_t::value, char, wchar_t
391
- >::type type;
392
-
393
- BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_right_shift<std::basic_istream<wchar_t>, T >::value),
394
- "Target type is neither std::istream`able nor std::wistream`able");
395
- #endif
396
- };
397
- }
398
-
399
- namespace detail // deduce_target_char<T> and deduce_source_char<T>
400
- {
401
- // We deduce stream character types in two stages.
402
- //
403
- // Stage 1 is common for Target and Source. At Stage 1 we get
404
- // non normalized character type (may contain unsigned/signed char)
405
- // or deduce_character_type_later<T> where T is the original type.
406
- // Stage 1 is executed by stream_char_common<T>
407
- //
408
- // At Stage 2 we normalize character types or try to deduce character
409
- // type using metafunctions.
410
- // Stage 2 is executed by deduce_target_char_impl<T> and
411
- // deduce_source_char_impl<T>
412
- //
413
- // deduce_target_char<T> and deduce_source_char<T> functions combine
414
- // both stages
415
-
416
- template < class T >
417
- struct deduce_target_char
418
- {
419
- typedef BOOST_DEDUCED_TYPENAME stream_char_common< T >::type stage1_type;
420
- typedef BOOST_DEDUCED_TYPENAME deduce_target_char_impl< stage1_type >::type stage2_type;
421
-
422
- typedef stage2_type type;
423
- };
424
-
425
- template < class T >
426
- struct deduce_source_char
427
- {
428
- typedef BOOST_DEDUCED_TYPENAME stream_char_common< T >::type stage1_type;
429
- typedef BOOST_DEDUCED_TYPENAME deduce_source_char_impl< stage1_type >::type stage2_type;
430
-
431
- typedef stage2_type type;
432
- };
433
- }
434
-
435
- namespace detail // deduce_char_traits template
436
- {
437
- // We are attempting to get char_traits<> from Source or Tagret
438
- // template parameter. Otherwise we'll be using std::char_traits<Char>
439
- template < class Char, class Target, class Source >
440
- struct deduce_char_traits
441
- {
442
- typedef std::char_traits< Char > type;
443
- };
444
-
445
- template < class Char, class Traits, class Alloc, class Source >
446
- struct deduce_char_traits< Char
447
- , std::basic_string< Char, Traits, Alloc >
448
- , Source
449
- >
450
- {
451
- typedef Traits type;
452
- };
453
-
454
- template < class Char, class Target, class Traits, class Alloc >
455
- struct deduce_char_traits< Char
456
- , Target
457
- , std::basic_string< Char, Traits, Alloc >
458
- >
459
- {
460
- typedef Traits type;
461
- };
462
-
463
- template < class Char, class Traits, class Alloc, class Source >
464
- struct deduce_char_traits< Char
465
- , boost::container::basic_string< Char, Traits, Alloc >
466
- , Source
467
- >
468
- {
469
- typedef Traits type;
470
- };
471
-
472
- template < class Char, class Target, class Traits, class Alloc >
473
- struct deduce_char_traits< Char
474
- , Target
475
- , boost::container::basic_string< Char, Traits, Alloc >
476
- >
477
- {
478
- typedef Traits type;
479
- };
480
-
481
- template < class Char, class Traits, class Alloc1, class Alloc2 >
482
- struct deduce_char_traits< Char
483
- , std::basic_string< Char, Traits, Alloc1 >
484
- , std::basic_string< Char, Traits, Alloc2 >
485
- >
486
- {
487
- typedef Traits type;
488
- };
489
-
490
- template<class Char, class Traits, class Alloc1, class Alloc2>
491
- struct deduce_char_traits< Char
492
- , boost::container::basic_string< Char, Traits, Alloc1 >
493
- , boost::container::basic_string< Char, Traits, Alloc2 >
494
- >
495
- {
496
- typedef Traits type;
497
- };
498
-
499
- template < class Char, class Traits, class Alloc1, class Alloc2 >
500
- struct deduce_char_traits< Char
501
- , boost::container::basic_string< Char, Traits, Alloc1 >
502
- , std::basic_string< Char, Traits, Alloc2 >
503
- >
504
- {
505
- typedef Traits type;
506
- };
507
-
508
- template < class Char, class Traits, class Alloc1, class Alloc2 >
509
- struct deduce_char_traits< Char
510
- , std::basic_string< Char, Traits, Alloc1 >
511
- , boost::container::basic_string< Char, Traits, Alloc2 >
512
- >
513
- {
514
- typedef Traits type;
515
- };
516
- }
517
-
518
- namespace detail // array_to_pointer_decay<T>
519
- {
520
- template<class T>
521
- struct array_to_pointer_decay
522
- {
523
- typedef T type;
524
- };
525
-
526
- template<class T, std::size_t N>
527
- struct array_to_pointer_decay<T[N]>
528
- {
529
- typedef const T * type;
530
- };
531
- }
532
-
533
- namespace detail // is_this_float_conversion_optimized<Float, Char>
534
- {
535
- // this metafunction evaluates to true, if we have optimized comnversion
536
- // from Float type to Char array.
537
- // Must be in sync with lexical_stream_limited_src<Char, ...>::shl_real_type(...)
538
- template <typename Float, typename Char>
539
- struct is_this_float_conversion_optimized
540
- {
541
- typedef boost::type_traits::ice_and<
542
- boost::is_float<Float>::value,
543
- #if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
544
- boost::type_traits::ice_or<
545
- boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value,
546
- boost::is_same<Char, wchar_t>::value
547
- >::value
548
- #else
549
- boost::type_traits::ice_eq<sizeof(Char), sizeof(char) >::value
550
- #endif
551
- > result_type;
552
-
553
- BOOST_STATIC_CONSTANT(bool, value = (result_type::value) );
554
- };
555
- }
556
-
557
- namespace detail // lcast_src_length
558
- {
559
- // Return max. length of string representation of Source;
560
- template< class Source // Source type of lexical_cast.
561
- >
562
- struct lcast_src_length
563
- {
564
- BOOST_STATIC_CONSTANT(std::size_t, value = 1);
565
- // To check coverage, build the test with
566
- // bjam --v2 profile optimization=off
567
- static void check_coverage() {}
568
- };
569
-
570
- // Helper for integral types.
571
- // Notes on length calculation:
572
- // Max length for 32bit int with grouping "\1" and thousands_sep ',':
573
- // "-2,1,4,7,4,8,3,6,4,7"
574
- // ^ - is_signed
575
- // ^ - 1 digit not counted by digits10
576
- // ^^^^^^^^^^^^^^^^^^ - digits10 * 2
577
- //
578
- // Constant is_specialized is used instead of constant 1
579
- // to prevent buffer overflow in a rare case when
580
- // <boost/limits.hpp> doesn't add missing specialization for
581
- // numeric_limits<T> for some integral type T.
582
- // When is_specialized is false, the whole expression is 0.
583
- template<class Source>
584
- struct lcast_src_length_integral
585
- {
586
- #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
587
- BOOST_STATIC_CONSTANT(std::size_t, value =
588
- std::numeric_limits<Source>::is_signed +
589
- std::numeric_limits<Source>::is_specialized + /* == 1 */
590
- std::numeric_limits<Source>::digits10 * 2
591
- );
592
- #else
593
- BOOST_STATIC_CONSTANT(std::size_t, value = 156);
594
- BOOST_STATIC_ASSERT(sizeof(Source) * CHAR_BIT <= 256);
595
- #endif
596
- };
597
-
598
- #define BOOST_LCAST_DEF(T) \
599
- template<> struct lcast_src_length<T> \
600
- : lcast_src_length_integral<T> \
601
- { static void check_coverage() {} };
602
-
603
- BOOST_LCAST_DEF(short)
604
- BOOST_LCAST_DEF(unsigned short)
605
- BOOST_LCAST_DEF(int)
606
- BOOST_LCAST_DEF(unsigned int)
607
- BOOST_LCAST_DEF(long)
608
- BOOST_LCAST_DEF(unsigned long)
609
- #if defined(BOOST_HAS_LONG_LONG)
610
- BOOST_LCAST_DEF(boost::ulong_long_type)
611
- BOOST_LCAST_DEF(boost::long_long_type )
612
- #elif defined(BOOST_HAS_MS_INT64)
613
- BOOST_LCAST_DEF(unsigned __int64)
614
- BOOST_LCAST_DEF( __int64)
615
- #endif
616
- #ifdef BOOST_LCAST_HAS_INT128
617
- BOOST_LCAST_DEF(boost::int128_type)
618
- BOOST_LCAST_DEF(boost::uint128_type)
619
- #endif
620
-
621
- #undef BOOST_LCAST_DEF
622
-
623
- #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
624
- // Helper for floating point types.
625
- // -1.23456789e-123456
626
- // ^ sign
627
- // ^ leading digit
628
- // ^ decimal point
629
- // ^^^^^^^^ lcast_precision<Source>::value
630
- // ^ "e"
631
- // ^ exponent sign
632
- // ^^^^^^ exponent (assumed 6 or less digits)
633
- // sign + leading digit + decimal point + "e" + exponent sign == 5
634
- template<class Source>
635
- struct lcast_src_length_floating
636
- {
637
- BOOST_STATIC_ASSERT(
638
- std::numeric_limits<Source>::max_exponent10 <= 999999L &&
639
- std::numeric_limits<Source>::min_exponent10 >= -999999L
640
- );
641
- BOOST_STATIC_CONSTANT(std::size_t, value =
642
- 5 + lcast_precision<Source>::value + 6
643
- );
644
- };
645
-
646
- template<>
647
- struct lcast_src_length<float>
648
- : lcast_src_length_floating<float>
649
- {
650
- static void check_coverage() {}
651
- };
652
-
653
- template<>
654
- struct lcast_src_length<double>
655
- : lcast_src_length_floating<double>
656
- {
657
- static void check_coverage() {}
658
- };
659
-
660
- template<>
661
- struct lcast_src_length<long double>
662
- : lcast_src_length_floating<long double>
663
- {
664
- static void check_coverage() {}
665
- };
666
-
667
- #endif // #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
668
- }
669
-
670
- namespace detail // lexical_cast_stream_traits<Source, Target>
671
- {
672
- template <class Source, class Target>
673
- struct lexical_cast_stream_traits {
674
- typedef BOOST_DEDUCED_TYPENAME boost::detail::array_to_pointer_decay<Source>::type src;
675
- typedef BOOST_DEDUCED_TYPENAME boost::remove_cv<src>::type no_cv_src;
676
-
677
- typedef boost::detail::deduce_source_char<no_cv_src> deduce_src_char_metafunc;
678
- typedef BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::type src_char_t;
679
- typedef BOOST_DEDUCED_TYPENAME boost::detail::deduce_target_char<Target>::type target_char_t;
680
-
681
- typedef BOOST_DEDUCED_TYPENAME boost::detail::widest_char<
682
- target_char_t, src_char_t
683
- >::type char_type;
684
-
685
- #if !defined(BOOST_NO_CXX11_CHAR16_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
686
- BOOST_STATIC_ASSERT_MSG(( !boost::is_same<char16_t, src_char_t>::value
687
- && !boost::is_same<char16_t, target_char_t>::value),
688
- "Your compiler does not have full support for char16_t" );
689
- #endif
690
- #if !defined(BOOST_NO_CXX11_CHAR32_T) && defined(BOOST_NO_CXX11_UNICODE_LITERALS)
691
- BOOST_STATIC_ASSERT_MSG(( !boost::is_same<char32_t, src_char_t>::value
692
- && !boost::is_same<char32_t, target_char_t>::value),
693
- "Your compiler does not have full support for char32_t" );
694
- #endif
695
-
696
- typedef BOOST_DEDUCED_TYPENAME boost::detail::deduce_char_traits<
697
- char_type, Target, no_cv_src
698
- >::type traits;
699
-
700
- typedef boost::type_traits::ice_and<
701
- boost::is_same<char, src_char_t>::value, // source is not a wide character based type
702
- boost::type_traits::ice_ne<sizeof(char), sizeof(target_char_t) >::value, // target type is based on wide character
703
- boost::type_traits::ice_not<
704
- boost::detail::is_char_or_wchar<no_cv_src>::value // single character widening is optimized
705
- >::value // and does not requires stringbuffer
706
- > is_string_widening_required_t;
707
-
708
- typedef boost::type_traits::ice_not< boost::type_traits::ice_or<
709
- boost::is_integral<no_cv_src>::value,
710
- boost::detail::is_this_float_conversion_optimized<no_cv_src, char_type >::value,
711
- boost::detail::is_char_or_wchar<
712
- BOOST_DEDUCED_TYPENAME deduce_src_char_metafunc::stage1_type // if we did not get character type at stage1
713
- >::value // then we have no optimization for that type
714
- >::value > is_source_input_not_optimized_t;
715
-
716
- // If we have an optimized conversion for
717
- // Source, we do not need to construct stringbuf.
718
- BOOST_STATIC_CONSTANT(bool, requires_stringbuf =
719
- (boost::type_traits::ice_or<
720
- is_string_widening_required_t::value, is_source_input_not_optimized_t::value
721
- >::value)
722
- );
723
-
724
- typedef boost::detail::lcast_src_length<no_cv_src> len_t;
725
- };
726
- }
727
-
728
- namespace detail // '0', '+' and '-' constants
729
- {
730
- template < typename Char > struct lcast_char_constants;
731
-
732
- template<>
733
- struct lcast_char_constants<char>
734
- {
735
- BOOST_STATIC_CONSTANT(char, zero = '0');
736
- BOOST_STATIC_CONSTANT(char, minus = '-');
737
- BOOST_STATIC_CONSTANT(char, plus = '+');
738
- BOOST_STATIC_CONSTANT(char, lowercase_e = 'e');
739
- BOOST_STATIC_CONSTANT(char, capital_e = 'E');
740
- BOOST_STATIC_CONSTANT(char, c_decimal_separator = '.');
741
- };
742
-
743
- #ifndef BOOST_LCAST_NO_WCHAR_T
744
- template<>
745
- struct lcast_char_constants<wchar_t>
746
- {
747
- BOOST_STATIC_CONSTANT(wchar_t, zero = L'0');
748
- BOOST_STATIC_CONSTANT(wchar_t, minus = L'-');
749
- BOOST_STATIC_CONSTANT(wchar_t, plus = L'+');
750
- BOOST_STATIC_CONSTANT(wchar_t, lowercase_e = L'e');
751
- BOOST_STATIC_CONSTANT(wchar_t, capital_e = L'E');
752
- BOOST_STATIC_CONSTANT(wchar_t, c_decimal_separator = L'.');
753
- };
754
- #endif
755
-
756
- #if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
757
- template<>
758
- struct lcast_char_constants<char16_t>
759
- {
760
- BOOST_STATIC_CONSTANT(char16_t, zero = u'0');
761
- BOOST_STATIC_CONSTANT(char16_t, minus = u'-');
762
- BOOST_STATIC_CONSTANT(char16_t, plus = u'+');
763
- BOOST_STATIC_CONSTANT(char16_t, lowercase_e = u'e');
764
- BOOST_STATIC_CONSTANT(char16_t, capital_e = u'E');
765
- BOOST_STATIC_CONSTANT(char16_t, c_decimal_separator = u'.');
766
- };
767
- #endif
768
-
769
- #if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
770
- template<>
771
- struct lcast_char_constants<char32_t>
772
- {
773
- BOOST_STATIC_CONSTANT(char32_t, zero = U'0');
774
- BOOST_STATIC_CONSTANT(char32_t, minus = U'-');
775
- BOOST_STATIC_CONSTANT(char32_t, plus = U'+');
776
- BOOST_STATIC_CONSTANT(char32_t, lowercase_e = U'e');
777
- BOOST_STATIC_CONSTANT(char32_t, capital_e = U'E');
778
- BOOST_STATIC_CONSTANT(char32_t, c_decimal_separator = U'.');
779
- };
780
- #endif
781
- }
782
-
783
- namespace detail // lcast_to_unsigned
784
- {
785
- template<class T>
786
- inline
787
- BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value) BOOST_NOEXCEPT
788
- {
789
- typedef BOOST_DEDUCED_TYPENAME boost::make_unsigned<T>::type result_type;
790
- return static_cast<result_type>(
791
- value < 0 ? 0u - static_cast<result_type>(value) : value
792
- );
793
- }
794
- }
795
-
796
- namespace detail // lcast_put_unsigned
797
- {
798
- template<class Traits, class T, class CharT>
799
- CharT* lcast_put_unsigned(const T n_param, CharT* finish)
800
- {
801
- #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
802
- BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
803
- #endif
804
-
805
- typedef typename Traits::int_type int_type;
806
- CharT const czero = lcast_char_constants<CharT>::zero;
807
- int_type const zero = Traits::to_int_type(czero);
808
- BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
809
- (sizeof(int_type) > sizeof(T))
810
- , int_type
811
- , T
812
- >::type n = n_param;
813
-
814
- #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
815
- std::locale loc;
816
- if (loc != std::locale::classic()) {
817
- typedef std::numpunct<CharT> numpunct;
818
- numpunct const& np = BOOST_USE_FACET(numpunct, loc);
819
- std::string const grouping = np.grouping();
820
- std::string::size_type const grouping_size = grouping.size();
821
-
822
- if ( grouping_size && grouping[0] > 0 )
823
- {
824
-
825
- #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
826
- // Check that ulimited group is unreachable:
827
- BOOST_STATIC_ASSERT(std::numeric_limits<T>::digits10 < CHAR_MAX);
828
- #endif
829
- CharT thousands_sep = np.thousands_sep();
830
- std::string::size_type group = 0; // current group number
831
- char last_grp_size = grouping[0];
832
- char left = last_grp_size;
833
-
834
- do
835
- {
836
- if(left == 0)
837
- {
838
- ++group;
839
- if(group < grouping_size)
840
- {
841
- char const grp_size = grouping[group];
842
- last_grp_size = grp_size <= 0 ? static_cast<char>(CHAR_MAX) : grp_size;
843
- }
844
-
845
- left = last_grp_size;
846
- --finish;
847
- Traits::assign(*finish, thousands_sep);
848
- }
849
-
850
- --left;
851
-
852
- --finish;
853
- int_type const digit = static_cast<int_type>(n % 10U);
854
- Traits::assign(*finish, Traits::to_char_type(zero + digit));
855
- n /= 10;
856
- } while(n);
857
- return finish;
858
- }
859
- }
860
- #endif
861
- {
862
- do
863
- {
864
- --finish;
865
- int_type const digit = static_cast<int_type>(n % 10U);
866
- Traits::assign(*finish, Traits::to_char_type(zero + digit));
867
- n /= 10;
868
- } while(n);
869
- }
870
-
871
- return finish;
872
- }
873
- }
874
-
875
- namespace detail // lcast_ret_unsigned
876
- {
877
- template<class Traits, class T, class CharT>
878
- inline bool lcast_ret_unsigned(T& value, const CharT* const begin, const CharT* end)
879
- {
880
- #ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
881
- BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
882
- #endif
883
- CharT const czero = lcast_char_constants<CharT>::zero;
884
- --end;
885
- value = 0;
886
-
887
- if (begin > end || *end < czero || *end >= czero + 10)
888
- return false;
889
- value = static_cast<T>(*end - czero);
890
- --end;
891
- T multiplier = 1;
892
- bool multiplier_overflowed = false;
893
-
894
- #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
895
- std::locale loc;
896
- if (loc != std::locale::classic()) {
897
- typedef std::numpunct<CharT> numpunct;
898
- numpunct const& np = BOOST_USE_FACET(numpunct, loc);
899
- std::string const& grouping = np.grouping();
900
- std::string::size_type const grouping_size = grouping.size();
901
-
902
- /* According to Programming languages - C++
903
- * we MUST check for correct grouping
904
- */
905
- if (grouping_size && grouping[0] > 0)
906
- {
907
- unsigned char current_grouping = 0;
908
- CharT const thousands_sep = np.thousands_sep();
909
- char remained = static_cast<char>(grouping[current_grouping] - 1);
910
- bool shall_we_return = true;
911
-
912
- for(;end>=begin; --end)
913
- {
914
- if (remained) {
915
- T const multiplier_10 = static_cast<T>(multiplier * 10);
916
- if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
917
-
918
- T const dig_value = static_cast<T>(*end - czero);
919
- T const new_sub_value = static_cast<T>(multiplier_10 * dig_value);
920
-
921
- if (*end < czero || *end >= czero + 10
922
- /* detecting overflow */
923
- || (dig_value && new_sub_value / dig_value != multiplier_10)
924
- || static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
925
- || (multiplier_overflowed && dig_value)
926
- )
927
- return false;
928
-
929
- value = static_cast<T>(value + new_sub_value);
930
- multiplier = static_cast<T>(multiplier * 10);
931
- --remained;
932
- } else {
933
- if ( !Traits::eq(*end, thousands_sep) ) //|| begin == end ) return false;
934
- {
935
- /*
936
- * According to Programming languages - C++
937
- * Digit grouping is checked. That is, the positions of discarded
938
- * separators is examined for consistency with
939
- * use_facet<numpunct<charT> >(loc ).grouping()
940
- *
941
- * BUT what if there is no separators at all and grouping()
942
- * is not empty? Well, we have no extraced separators, so we
943
- * won`t check them for consistency. This will allow us to
944
- * work with "C" locale from other locales
945
- */
946
- shall_we_return = false;
947
- break;
948
- } else {
949
- if ( begin == end ) return false;
950
- if (current_grouping < grouping_size-1 ) ++current_grouping;
951
- remained = grouping[current_grouping];
952
- }
953
- }
954
- }
955
-
956
- if (shall_we_return) return true;
957
- }
958
- }
959
- #endif
960
- {
961
- while ( begin <= end )
962
- {
963
- T const multiplier_10 = static_cast<T>(multiplier * 10);
964
- if (multiplier_10 / 10 != multiplier) multiplier_overflowed = true;
965
-
966
- T const dig_value = static_cast<T>(*end - czero);
967
- T const new_sub_value = static_cast<T>(multiplier_10 * dig_value);
968
-
969
- if (*end < czero || *end >= czero + 10
970
- /* detecting overflow */
971
- || (dig_value && new_sub_value / dig_value != multiplier_10)
972
- || static_cast<T>((std::numeric_limits<T>::max)()-new_sub_value) < value
973
- || (multiplier_overflowed && dig_value)
974
- )
975
- return false;
976
-
977
- value = static_cast<T>(value + new_sub_value);
978
- multiplier = static_cast<T>(multiplier * 10);
979
- --end;
980
- }
981
- }
982
- return true;
983
- }
984
- }
985
-
986
- namespace detail
987
- {
988
- template <class CharT>
989
- bool lc_iequal(const CharT* val, const CharT* lcase, const CharT* ucase, unsigned int len) BOOST_NOEXCEPT {
990
- for( unsigned int i=0; i < len; ++i ) {
991
- if ( val[i] != lcase[i] && val[i] != ucase[i] ) return false;
992
- }
993
-
994
- return true;
995
- }
996
-
997
- /* Returns true and sets the correct value if found NaN or Inf. */
998
- template <class CharT, class T>
999
- inline bool parse_inf_nan_impl(const CharT* begin, const CharT* end, T& value
1000
- , const CharT* lc_NAN, const CharT* lc_nan
1001
- , const CharT* lc_INFINITY, const CharT* lc_infinity
1002
- , const CharT opening_brace, const CharT closing_brace) BOOST_NOEXCEPT
1003
- {
1004
- using namespace std;
1005
- if (begin == end) return false;
1006
- const CharT minus = lcast_char_constants<CharT>::minus;
1007
- const CharT plus = lcast_char_constants<CharT>::plus;
1008
- const int inifinity_size = 8;
1009
-
1010
- bool has_minus = false;
1011
- /* Parsing +/- */
1012
- if( *begin == minus)
1013
- {
1014
- ++ begin;
1015
- has_minus = true;
1016
- }
1017
- else if( *begin == plus ) ++begin;
1018
-
1019
- if( end-begin < 3 ) return false;
1020
- if( lc_iequal(begin, lc_nan, lc_NAN, 3) )
1021
- {
1022
- begin += 3;
1023
- if (end != begin) /* It is 'nan(...)' or some bad input*/
1024
- {
1025
- if(end-begin<2) return false; // bad input
1026
- -- end;
1027
- if( *begin != opening_brace || *end != closing_brace) return false; // bad input
1028
- }
1029
-
1030
- if( !has_minus ) value = std::numeric_limits<T>::quiet_NaN();
1031
- else value = (boost::math::changesign) (std::numeric_limits<T>::quiet_NaN());
1032
- return true;
1033
- } else
1034
- if (( /* 'INF' or 'inf' */
1035
- end-begin==3
1036
- &&
1037
- lc_iequal(begin, lc_infinity, lc_INFINITY, 3)
1038
- )
1039
- ||
1040
- ( /* 'INFINITY' or 'infinity' */
1041
- end-begin==inifinity_size
1042
- &&
1043
- lc_iequal(begin, lc_infinity, lc_INFINITY, inifinity_size)
1044
- )
1045
- )
1046
- {
1047
- if( !has_minus ) value = std::numeric_limits<T>::infinity();
1048
- else value = (boost::math::changesign) (std::numeric_limits<T>::infinity());
1049
- return true;
1050
- }
1051
-
1052
- return false;
1053
- }
1054
-
1055
- template <class CharT, class T>
1056
- bool put_inf_nan_impl(CharT* begin, CharT*& end, const T& value
1057
- , const CharT* lc_nan
1058
- , const CharT* lc_infinity) BOOST_NOEXCEPT
1059
- {
1060
- using namespace std;
1061
- const CharT minus = lcast_char_constants<CharT>::minus;
1062
- if ( (boost::math::isnan)(value) )
1063
- {
1064
- if ( (boost::math::signbit)(value) )
1065
- {
1066
- *begin = minus;
1067
- ++ begin;
1068
- }
1069
-
1070
- memcpy(begin, lc_nan, 3 * sizeof(CharT));
1071
- end = begin + 3;
1072
- return true;
1073
- } else if ( (boost::math::isinf)(value) )
1074
- {
1075
- if ( (boost::math::signbit)(value) )
1076
- {
1077
- *begin = minus;
1078
- ++ begin;
1079
- }
1080
-
1081
- memcpy(begin, lc_infinity, 3 * sizeof(CharT));
1082
- end = begin + 3;
1083
- return true;
1084
- }
1085
-
1086
- return false;
1087
- }
1088
-
1089
-
1090
- #ifndef BOOST_LCAST_NO_WCHAR_T
1091
- template <class T>
1092
- bool parse_inf_nan(const wchar_t* begin, const wchar_t* end, T& value) BOOST_NOEXCEPT
1093
- {
1094
- return parse_inf_nan_impl(begin, end, value
1095
- , L"NAN", L"nan"
1096
- , L"INFINITY", L"infinity"
1097
- , L'(', L')');
1098
- }
1099
-
1100
- template <class T>
1101
- bool put_inf_nan(wchar_t* begin, wchar_t*& end, const T& value) BOOST_NOEXCEPT
1102
- {
1103
- return put_inf_nan_impl(begin, end, value, L"nan", L"infinity");
1104
- }
1105
-
1106
- #endif
1107
- #if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
1108
- template <class T>
1109
- bool parse_inf_nan(const char16_t* begin, const char16_t* end, T& value) BOOST_NOEXCEPT
1110
- {
1111
- return parse_inf_nan_impl(begin, end, value
1112
- , u"NAN", u"nan"
1113
- , u"INFINITY", u"infinity"
1114
- , u'(', u')');
1115
- }
1116
-
1117
- template <class T>
1118
- bool put_inf_nan(char16_t* begin, char16_t*& end, const T& value) BOOST_NOEXCEPT
1119
- {
1120
- return put_inf_nan_impl(begin, end, value, u"nan", u"infinity");
1121
- }
1122
- #endif
1123
- #if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
1124
- template <class T>
1125
- bool parse_inf_nan(const char32_t* begin, const char32_t* end, T& value) BOOST_NOEXCEPT
1126
- {
1127
- return parse_inf_nan_impl(begin, end, value
1128
- , U"NAN", U"nan"
1129
- , U"INFINITY", U"infinity"
1130
- , U'(', U')');
1131
- }
1132
-
1133
- template <class T>
1134
- bool put_inf_nan(char32_t* begin, char32_t*& end, const T& value) BOOST_NOEXCEPT
1135
- {
1136
- return put_inf_nan_impl(begin, end, value, U"nan", U"infinity");
1137
- }
1138
- #endif
1139
-
1140
- template <class CharT, class T>
1141
- bool parse_inf_nan(const CharT* begin, const CharT* end, T& value) BOOST_NOEXCEPT
1142
- {
1143
- return parse_inf_nan_impl(begin, end, value
1144
- , "NAN", "nan"
1145
- , "INFINITY", "infinity"
1146
- , '(', ')');
1147
- }
1148
-
1149
- template <class CharT, class T>
1150
- bool put_inf_nan(CharT* begin, CharT*& end, const T& value) BOOST_NOEXCEPT
1151
- {
1152
- return put_inf_nan_impl(begin, end, value, "nan", "infinity");
1153
- }
1154
- }
1155
-
1156
-
1157
- namespace detail // lcast_ret_float
1158
- {
1159
-
1160
- // Silence buggy MS warnings like C4244: '+=' : conversion from 'int' to 'unsigned short', possible loss of data
1161
- #if defined(_MSC_VER) && (_MSC_VER == 1400)
1162
- # pragma warning(push)
1163
- # pragma warning(disable:4244)
1164
- #endif
1165
- template <class T>
1166
- struct mantissa_holder_type
1167
- {
1168
- /* Can not be used with this type */
1169
- };
1170
-
1171
- template <>
1172
- struct mantissa_holder_type<float>
1173
- {
1174
- typedef unsigned int type;
1175
- typedef double wide_result_t;
1176
- };
1177
-
1178
- template <>
1179
- struct mantissa_holder_type<double>
1180
- {
1181
- #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
1182
- typedef long double wide_result_t;
1183
- #if defined(BOOST_HAS_LONG_LONG)
1184
- typedef boost::ulong_long_type type;
1185
- #elif defined(BOOST_HAS_MS_INT64)
1186
- typedef unsigned __int64 type;
1187
- #endif
1188
- #endif
1189
- };
1190
-
1191
- template<class Traits, class T, class CharT>
1192
- inline bool lcast_ret_float(T& value, const CharT* begin, const CharT* end)
1193
- {
1194
-
1195
- #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
1196
- std::locale loc;
1197
- typedef std::numpunct<CharT> numpunct;
1198
- numpunct const& np = BOOST_USE_FACET(numpunct, loc);
1199
- std::string const grouping(
1200
- (loc == std::locale::classic())
1201
- ? std::string()
1202
- : np.grouping()
1203
- );
1204
- std::string::size_type const grouping_size = grouping.size();
1205
- CharT const thousands_sep = static_cast<CharT>(grouping_size ? np.thousands_sep() : 0);
1206
- CharT const decimal_point = np.decimal_point();
1207
- bool found_grouping = false;
1208
- std::string::size_type last_grouping_pos = grouping_size - 1;
1209
- #else
1210
- CharT const decimal_point = lcast_char_constants<CharT>::c_decimal_separator;
1211
- #endif
1212
-
1213
- CharT const czero = lcast_char_constants<CharT>::zero;
1214
- CharT const minus = lcast_char_constants<CharT>::minus;
1215
- CharT const plus = lcast_char_constants<CharT>::plus;
1216
- CharT const capital_e = lcast_char_constants<CharT>::capital_e;
1217
- CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
1218
-
1219
- value = static_cast<T>(0);
1220
-
1221
- if (parse_inf_nan(begin, end, value)) return true;
1222
-
1223
- typedef typename Traits::int_type int_type;
1224
- typedef BOOST_DEDUCED_TYPENAME mantissa_holder_type<T>::type mantissa_type;
1225
- typedef BOOST_DEDUCED_TYPENAME mantissa_holder_type<T>::wide_result_t wide_result_t;
1226
- int_type const zero = Traits::to_int_type(czero);
1227
- if (begin == end) return false;
1228
-
1229
- /* Getting the plus/minus sign */
1230
- bool has_minus = false;
1231
- if (Traits::eq(*begin, minus) ) {
1232
- ++ begin;
1233
- has_minus = true;
1234
- if (begin == end) return false;
1235
- } else if (Traits::eq(*begin, plus) ) {
1236
- ++begin;
1237
- if (begin == end) return false;
1238
- }
1239
-
1240
- bool found_decimal = false;
1241
- bool found_number_before_exp = false;
1242
- int pow_of_10 = 0;
1243
- mantissa_type mantissa=0;
1244
- bool is_mantissa_full = false;
1245
-
1246
- char length_since_last_delim = 0;
1247
-
1248
- while ( begin != end )
1249
- {
1250
- if (found_decimal) {
1251
- /* We allow no thousand_separators after decimal point */
1252
-
1253
- mantissa_type tmp_mantissa = mantissa * 10u;
1254
- if (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) break;
1255
- if ( *begin < czero || *begin >= czero + 10 ) return false;
1256
- if ( is_mantissa_full
1257
- || tmp_mantissa / 10u != mantissa
1258
- || (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) < tmp_mantissa
1259
- ) {
1260
- is_mantissa_full = true;
1261
- ++ begin;
1262
- continue;
1263
- }
1264
-
1265
- -- pow_of_10;
1266
- mantissa = tmp_mantissa;
1267
- mantissa += *begin - zero;
1268
-
1269
- found_number_before_exp = true;
1270
- } else {
1271
-
1272
- if (*begin >= czero && *begin < czero + 10) {
1273
-
1274
- /* Checking for mantissa overflow. If overflow will
1275
- * occur, them we only increase multiplyer
1276
- */
1277
- mantissa_type tmp_mantissa = mantissa * 10u;
1278
- if( !is_mantissa_full
1279
- && tmp_mantissa / 10u == mantissa
1280
- && (std::numeric_limits<mantissa_type>::max)()-(*begin - zero) >= tmp_mantissa
1281
- )
1282
- {
1283
- mantissa = tmp_mantissa;
1284
- mantissa += *begin - zero;
1285
- } else
1286
- {
1287
- is_mantissa_full = true;
1288
- ++ pow_of_10;
1289
- }
1290
-
1291
- found_number_before_exp = true;
1292
- ++ length_since_last_delim;
1293
- } else if (Traits::eq(*begin, decimal_point) || Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) {
1294
- #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
1295
- /* If ( we need to check grouping
1296
- * and ( grouping missmatches
1297
- * or grouping position is incorrect
1298
- * or we are using the grouping position 0 twice
1299
- * )
1300
- * ) then return error
1301
- */
1302
- if( grouping_size && found_grouping
1303
- && (
1304
- length_since_last_delim != grouping[0]
1305
- || last_grouping_pos>1
1306
- || (last_grouping_pos==0 && grouping_size>1)
1307
- )
1308
- ) return false;
1309
- #endif
1310
-
1311
- if(Traits::eq(*begin, decimal_point)) {
1312
- ++ begin;
1313
- found_decimal = true;
1314
- if (!found_number_before_exp && begin==end) return false;
1315
- continue;
1316
- }else {
1317
- if (!found_number_before_exp) return false;
1318
- break;
1319
- }
1320
- }
1321
- #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
1322
- else if (grouping_size && Traits::eq(*begin, thousands_sep)){
1323
- if(found_grouping)
1324
- {
1325
- /* It is not he first time, when we find thousands separator,
1326
- * so we need to chek, is the distance between two groupings
1327
- * equal to grouping[last_grouping_pos] */
1328
-
1329
- if (length_since_last_delim != grouping[last_grouping_pos] )
1330
- {
1331
- if (!last_grouping_pos) return false;
1332
- else
1333
- {
1334
- -- last_grouping_pos;
1335
- if (length_since_last_delim != grouping[last_grouping_pos]) return false;
1336
- }
1337
- } else
1338
- /* We are calling the grouping[0] twice, when grouping size is more than 1 */
1339
- if (grouping_size>1u && last_grouping_pos+1<grouping_size) return false;
1340
-
1341
- } else {
1342
- /* Delimiter at the begining ',000' */
1343
- if (!length_since_last_delim) return false;
1344
-
1345
- found_grouping = true;
1346
- if (length_since_last_delim > grouping[last_grouping_pos] ) return false;
1347
- }
1348
-
1349
- length_since_last_delim = 0;
1350
- ++ begin;
1351
-
1352
- /* Delimiter at the end '100,' */
1353
- if (begin == end) return false;
1354
- continue;
1355
- }
1356
- #endif
1357
- else return false;
1358
- }
1359
-
1360
- ++begin;
1361
- }
1362
-
1363
- // Exponent found
1364
- if ( begin != end && (Traits::eq(*begin, lowercase_e) || Traits::eq(*begin, capital_e)) ) {
1365
- ++ begin;
1366
- if ( begin == end ) return false;
1367
-
1368
- bool exp_has_minus = false;
1369
- if(Traits::eq(*begin, minus)) {
1370
- exp_has_minus = true;
1371
- ++ begin;
1372
- if ( begin == end ) return false;
1373
- } else if (Traits::eq(*begin, plus)) {
1374
- ++ begin;
1375
- if ( begin == end ) return false;
1376
- }
1377
-
1378
- int exp_pow_of_10 = 0;
1379
- while ( begin != end )
1380
- {
1381
- if ( *begin < czero
1382
- || *begin >= czero + 10
1383
- || exp_pow_of_10 * 10 < exp_pow_of_10) /* Overflows are checked lower more precisely*/
1384
- return false;
1385
-
1386
- exp_pow_of_10 *= 10;
1387
- exp_pow_of_10 += *begin - zero;
1388
- ++ begin;
1389
- };
1390
-
1391
- if ( exp_pow_of_10 ) {
1392
- /* Overflows are checked lower */
1393
- if ( exp_has_minus ) {
1394
- pow_of_10 -= exp_pow_of_10;
1395
- } else {
1396
- pow_of_10 += exp_pow_of_10;
1397
- }
1398
- }
1399
- }
1400
-
1401
- /* We need a more accurate algorithm... We can not use current algorithm
1402
- * with long doubles (and with doubles if sizeof(double)==sizeof(long double)).
1403
- */
1404
- const wide_result_t result = std::pow(static_cast<wide_result_t>(10.0), pow_of_10) * mantissa;
1405
- value = static_cast<T>( has_minus ? (boost::math::changesign)(result) : result);
1406
-
1407
- if ( (boost::math::isinf)(value) || (boost::math::isnan)(value) ) return false;
1408
-
1409
- return true;
1410
- }
1411
- // Unsilence buggy MS warnings like C4244: '+=' : conversion from 'int' to 'unsigned short', possible loss of data
1412
- #if defined(_MSC_VER) && (_MSC_VER == 1400)
1413
- # pragma warning(pop)
1414
- #endif
1415
- }
1416
-
1417
- namespace detail // parser_buf
1418
- {
1419
- //
1420
- // class parser_buf:
1421
- // acts as a stream buffer which wraps around a pair of pointers
1422
- //
1423
- // This class is copied (and slightly changed) from
1424
- // boost/regex/v4/cpp_regex_traits.hpp
1425
- // Thanks John Maddock for it! (previous version had some
1426
- // problems with libc++ and some other STL implementations)
1427
- template <class BufferType, class charT>
1428
- class parser_buf : public BufferType {
1429
- typedef BufferType base_type;
1430
- typedef typename base_type::int_type int_type;
1431
- typedef typename base_type::char_type char_type;
1432
- typedef typename base_type::pos_type pos_type;
1433
- typedef ::std::streamsize streamsize;
1434
- typedef typename base_type::off_type off_type;
1435
-
1436
- public:
1437
- parser_buf() : base_type() { setbuf(0, 0); }
1438
- const charT* getnext() { return this->gptr(); }
1439
- #ifndef BOOST_NO_USING_TEMPLATE
1440
- using base_type::pptr;
1441
- using base_type::pbase;
1442
- #else
1443
- charT* pptr() const { return base_type::pptr(); }
1444
- charT* pbase() const { return base_type::pbase(); }
1445
- #endif
1446
- base_type* setbuf(char_type* s, streamsize n) {
1447
- this->setg(s, s, s + n);
1448
- return this;
1449
- }
1450
-
1451
- pos_type seekpos(pos_type sp, ::std::ios_base::openmode which) {
1452
- if(which & ::std::ios_base::out)
1453
- return pos_type(off_type(-1));
1454
- off_type size = static_cast<off_type>(this->egptr() - this->eback());
1455
- charT* g = this->eback();
1456
- if(off_type(sp) <= size)
1457
- {
1458
- this->setg(g, g + off_type(sp), g + size);
1459
- }
1460
- return pos_type(off_type(-1));
1461
- }
1462
-
1463
- pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) {
1464
- typedef typename boost::int_t<sizeof(way) * CHAR_BIT>::least cast_type;
1465
-
1466
- if(which & ::std::ios_base::out)
1467
- return pos_type(off_type(-1));
1468
- std::ptrdiff_t size = this->egptr() - this->eback();
1469
- std::ptrdiff_t pos = this->gptr() - this->eback();
1470
- charT* g = this->eback();
1471
- switch(static_cast<cast_type>(way))
1472
- {
1473
- case ::std::ios_base::beg:
1474
- if((off < 0) || (off > size))
1475
- return pos_type(off_type(-1));
1476
- else
1477
- this->setg(g, g + off, g + size);
1478
- break;
1479
- case ::std::ios_base::end:
1480
- if((off < 0) || (off > size))
1481
- return pos_type(off_type(-1));
1482
- else
1483
- this->setg(g, g + size - off, g + size);
1484
- break;
1485
- case ::std::ios_base::cur:
1486
- {
1487
- std::ptrdiff_t newpos = static_cast<std::ptrdiff_t>(pos + off);
1488
- if((newpos < 0) || (newpos > size))
1489
- return pos_type(off_type(-1));
1490
- else
1491
- this->setg(g, g + newpos, g + size);
1492
- break;
1493
- }
1494
- default: ;
1495
- }
1496
- #ifdef BOOST_MSVC
1497
- #pragma warning(push)
1498
- #pragma warning(disable:4244)
1499
- #endif
1500
- return static_cast<pos_type>(this->gptr() - this->eback());
1501
- #ifdef BOOST_MSVC
1502
- #pragma warning(pop)
1503
- #endif
1504
- }
1505
- private:
1506
- parser_buf& operator=(const parser_buf&);
1507
- parser_buf(const parser_buf&);
1508
- };
1509
- }
1510
-
1511
- namespace detail
1512
- {
1513
- struct do_not_construct_out_stream_t{};
1514
- }
1515
-
1516
- namespace detail // optimized stream wrapper
1517
- {
1518
- // String representation of Source has an upper limit.
1519
- template< class CharT // a result of widest_char transformation
1520
- , class Traits // usually char_traits<CharT>
1521
- , bool RequiresStringbuffer
1522
- >
1523
- class lexical_stream_limited_src
1524
- {
1525
-
1526
- #if defined(BOOST_NO_STRINGSTREAM)
1527
- typedef std::ostrstream out_stream_t;
1528
- #elif defined(BOOST_NO_STD_LOCALE)
1529
- typedef std::ostringstream out_stream_t;
1530
- typedef parser_buf<std::streambuf, char> buffer_t;
1531
- #else
1532
- typedef std::basic_ostringstream<CharT, Traits> out_stream_t;
1533
- typedef parser_buf<std::basic_streambuf<CharT, Traits>, CharT> buffer_t;
1534
- #endif
1535
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
1536
- RequiresStringbuffer,
1537
- out_stream_t,
1538
- do_not_construct_out_stream_t
1539
- >::type deduced_out_stream_t;
1540
-
1541
- // A string representation of Source is written to [start, finish).
1542
- CharT* start;
1543
- CharT* finish;
1544
- deduced_out_stream_t out_stream;
1545
-
1546
- public:
1547
- lexical_stream_limited_src(CharT* sta, CharT* fin) BOOST_NOEXCEPT
1548
- : start(sta)
1549
- , finish(fin)
1550
- {}
1551
-
1552
- private:
1553
- // Undefined:
1554
- lexical_stream_limited_src(lexical_stream_limited_src const&);
1555
- void operator=(lexical_stream_limited_src const&);
1556
-
1557
- /************************************ HELPER FUNCTIONS FOR OPERATORS << ( ... ) ********************************/
1558
- bool shl_char(CharT ch) BOOST_NOEXCEPT
1559
- {
1560
- Traits::assign(*start, ch);
1561
- finish = start + 1;
1562
- return true;
1563
- }
1564
-
1565
- #ifndef BOOST_LCAST_NO_WCHAR_T
1566
- template <class T>
1567
- bool shl_char(T ch)
1568
- {
1569
- BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)) ,
1570
- "boost::lexical_cast does not support narrowing of char types."
1571
- "Use boost::locale instead" );
1572
- #ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
1573
- std::locale loc;
1574
- CharT const w = BOOST_USE_FACET(std::ctype<CharT>, loc).widen(ch);
1575
- #else
1576
- CharT const w = static_cast<CharT>(ch);
1577
- #endif
1578
- Traits::assign(*start, w);
1579
- finish = start + 1;
1580
- return true;
1581
- }
1582
- #endif
1583
-
1584
- bool shl_char_array(CharT const* str) BOOST_NOEXCEPT
1585
- {
1586
- start = const_cast<CharT*>(str);
1587
- finish = start + Traits::length(str);
1588
- return true;
1589
- }
1590
-
1591
- template <class T>
1592
- bool shl_char_array(T const* str)
1593
- {
1594
- BOOST_STATIC_ASSERT_MSG(( sizeof(T) <= sizeof(CharT)),
1595
- "boost::lexical_cast does not support narrowing of char types."
1596
- "Use boost::locale instead" );
1597
- return shl_input_streamable(str);
1598
- }
1599
-
1600
- bool shl_char_array_limited(CharT const* str, std::size_t max_size) BOOST_NOEXCEPT
1601
- {
1602
- start = const_cast<CharT*>(str);
1603
- finish = std::find(start, start + max_size, Traits::to_char_type(0));
1604
- return true;
1605
- }
1606
-
1607
- template<typename InputStreamable>
1608
- bool shl_input_streamable(InputStreamable& input)
1609
- {
1610
- #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
1611
- // If you have compilation error at this point, than your STL library
1612
- // does not support such conversions. Try updating it.
1613
- BOOST_STATIC_ASSERT((boost::is_same<char, CharT>::value));
1614
- #endif
1615
- bool const result = !(out_stream << input).fail();
1616
- const buffer_t* const p = static_cast<buffer_t*>(
1617
- static_cast<std::basic_streambuf<CharT, Traits>*>(out_stream.rdbuf())
1618
- );
1619
- start = p->pbase();
1620
- finish = p->pptr();
1621
- return result;
1622
- }
1623
-
1624
- template <class T>
1625
- inline bool shl_signed(T n)
1626
- {
1627
- start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
1628
- if(n < 0)
1629
- {
1630
- --start;
1631
- CharT const minus = lcast_char_constants<CharT>::minus;
1632
- Traits::assign(*start, minus);
1633
- }
1634
- return true;
1635
- }
1636
-
1637
- template <class T, class SomeCharT>
1638
- bool shl_real_type(const T& val, SomeCharT* begin, SomeCharT*& end)
1639
- {
1640
- if (put_inf_nan(begin, end, val)) return true;
1641
- lcast_set_precision(out_stream, &val);
1642
- return shl_input_streamable(val);
1643
- }
1644
-
1645
- static bool shl_real_type(float val, char* begin, char*& end)
1646
- { using namespace std;
1647
- if (put_inf_nan(begin, end, val)) return true;
1648
- const double val_as_double = val;
1649
- end = begin +
1650
- #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
1651
- sprintf_s(begin, end-begin,
1652
- #else
1653
- sprintf(begin,
1654
- #endif
1655
- "%.*g", static_cast<int>(boost::detail::lcast_get_precision<float>()), val_as_double);
1656
- return end > begin;
1657
- }
1658
-
1659
- static bool shl_real_type(double val, char* begin, char*& end)
1660
- { using namespace std;
1661
- if (put_inf_nan(begin, end, val)) return true;
1662
- end = begin +
1663
- #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
1664
- sprintf_s(begin, end-begin,
1665
- #else
1666
- sprintf(begin,
1667
- #endif
1668
- "%.*g", static_cast<int>(boost::detail::lcast_get_precision<double>()), val);
1669
- return end > begin;
1670
- }
1671
-
1672
- #ifndef __MINGW32__
1673
- static bool shl_real_type(long double val, char* begin, char*& end)
1674
- { using namespace std;
1675
- if (put_inf_nan(begin, end, val)) return true;
1676
- end = begin +
1677
- #if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
1678
- sprintf_s(begin, end-begin,
1679
- #else
1680
- sprintf(begin,
1681
- #endif
1682
- "%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double>()), val );
1683
- return end > begin;
1684
- }
1685
- #endif
1686
-
1687
-
1688
- #if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_SWPRINTF) && !defined(__MINGW32__)
1689
- static bool shl_real_type(float val, wchar_t* begin, wchar_t*& end)
1690
- { using namespace std;
1691
- if (put_inf_nan(begin, end, val)) return true;
1692
- const double val_as_double = val;
1693
- end = begin + swprintf(begin, end-begin,
1694
- L"%.*g",
1695
- static_cast<int>(boost::detail::lcast_get_precision<float >()),
1696
- val_as_double );
1697
- return end > begin;
1698
- }
1699
-
1700
- static bool shl_real_type(double val, wchar_t* begin, wchar_t*& end)
1701
- { using namespace std;
1702
- if (put_inf_nan(begin, end, val)) return true;
1703
- end = begin + swprintf(begin, end-begin,
1704
- L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
1705
- return end > begin;
1706
- }
1707
-
1708
- static bool shl_real_type(long double val, wchar_t* begin, wchar_t*& end)
1709
- { using namespace std;
1710
- if (put_inf_nan(begin, end, val)) return true;
1711
- end = begin + swprintf(begin, end-begin,
1712
- L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
1713
- return end > begin;
1714
- }
1715
- #endif
1716
-
1717
- /************************************ OPERATORS << ( ... ) ********************************/
1718
- public:
1719
- template<class Alloc>
1720
- bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
1721
- {
1722
- start = const_cast<CharT*>(str.data());
1723
- finish = start + str.length();
1724
- return true;
1725
- }
1726
-
1727
- template<class Alloc>
1728
- bool operator<<(boost::container::basic_string<CharT,Traits,Alloc> const& str) BOOST_NOEXCEPT
1729
- {
1730
- start = const_cast<CharT*>(str.data());
1731
- finish = start + str.length();
1732
- return true;
1733
- }
1734
-
1735
- bool operator<<(bool value) BOOST_NOEXCEPT
1736
- {
1737
- CharT const czero = lcast_char_constants<CharT>::zero;
1738
- Traits::assign(*start, Traits::to_char_type(czero + value));
1739
- finish = start + 1;
1740
- return true;
1741
- }
1742
-
1743
- bool operator<<(const iterator_range<CharT*>& rng) BOOST_NOEXCEPT
1744
- {
1745
- start = rng.begin();
1746
- finish = rng.end();
1747
- return true;
1748
- }
1749
-
1750
- bool operator<<(const iterator_range<const CharT*>& rng) BOOST_NOEXCEPT
1751
- {
1752
- start = const_cast<CharT*>(rng.begin());
1753
- finish = const_cast<CharT*>(rng.end());
1754
- return true;
1755
- }
1756
-
1757
- bool operator<<(const iterator_range<const signed char*>& rng) BOOST_NOEXCEPT
1758
- {
1759
- return (*this) << iterator_range<char*>(
1760
- const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
1761
- const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
1762
- );
1763
- }
1764
-
1765
- bool operator<<(const iterator_range<const unsigned char*>& rng) BOOST_NOEXCEPT
1766
- {
1767
- return (*this) << iterator_range<char*>(
1768
- const_cast<char*>(reinterpret_cast<const char*>(rng.begin())),
1769
- const_cast<char*>(reinterpret_cast<const char*>(rng.end()))
1770
- );
1771
- }
1772
-
1773
- bool operator<<(const iterator_range<signed char*>& rng) BOOST_NOEXCEPT
1774
- {
1775
- return (*this) << iterator_range<char*>(
1776
- reinterpret_cast<char*>(rng.begin()),
1777
- reinterpret_cast<char*>(rng.end())
1778
- );
1779
- }
1780
-
1781
- bool operator<<(const iterator_range<unsigned char*>& rng) BOOST_NOEXCEPT
1782
- {
1783
- return (*this) << iterator_range<char*>(
1784
- reinterpret_cast<char*>(rng.begin()),
1785
- reinterpret_cast<char*>(rng.end())
1786
- );
1787
- }
1788
-
1789
- bool operator<<(char ch) { return shl_char(ch); }
1790
- bool operator<<(unsigned char ch) { return ((*this) << static_cast<char>(ch)); }
1791
- bool operator<<(signed char ch) { return ((*this) << static_cast<char>(ch)); }
1792
- #if !defined(BOOST_LCAST_NO_WCHAR_T)
1793
- bool operator<<(wchar_t const* str) { return shl_char_array(str); }
1794
- bool operator<<(wchar_t * str) { return shl_char_array(str); }
1795
- #ifndef BOOST_NO_INTRINSIC_WCHAR_T
1796
- bool operator<<(wchar_t ch) { return shl_char(ch); }
1797
- #endif
1798
- #endif
1799
- #if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
1800
- bool operator<<(char16_t ch) { return shl_char(ch); }
1801
- bool operator<<(char16_t * str) { return shl_char_array(str); }
1802
- bool operator<<(char16_t const * str) { return shl_char_array(str); }
1803
- #endif
1804
- #if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
1805
- bool operator<<(char32_t ch) { return shl_char(ch); }
1806
- bool operator<<(char32_t * str) { return shl_char_array(str); }
1807
- bool operator<<(char32_t const * str) { return shl_char_array(str); }
1808
- #endif
1809
- bool operator<<(unsigned char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
1810
- bool operator<<(unsigned char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
1811
- bool operator<<(signed char const* ch) { return ((*this) << reinterpret_cast<char const*>(ch)); }
1812
- bool operator<<(signed char * ch) { return ((*this) << reinterpret_cast<char *>(ch)); }
1813
- bool operator<<(char const* str) { return shl_char_array(str); }
1814
- bool operator<<(char* str) { return shl_char_array(str); }
1815
- bool operator<<(short n) { return shl_signed(n); }
1816
- bool operator<<(int n) { return shl_signed(n); }
1817
- bool operator<<(long n) { return shl_signed(n); }
1818
- bool operator<<(unsigned short n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
1819
- bool operator<<(unsigned int n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
1820
- bool operator<<(unsigned long n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
1821
-
1822
- #if defined(BOOST_HAS_LONG_LONG)
1823
- bool operator<<(boost::ulong_long_type n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
1824
- bool operator<<(boost::long_long_type n) { return shl_signed(n); }
1825
- #elif defined(BOOST_HAS_MS_INT64)
1826
- bool operator<<(unsigned __int64 n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
1827
- bool operator<<( __int64 n) { return shl_signed(n); }
1828
- #endif
1829
-
1830
- #ifdef BOOST_LCAST_HAS_INT128
1831
- bool operator<<(const boost::uint128_type& n) { start = lcast_put_unsigned<Traits>(n, finish); return true; }
1832
- bool operator<<(const boost::int128_type& n) { return shl_signed(n); }
1833
- #endif
1834
-
1835
- bool operator<<(float val) { return shl_real_type(val, start, finish); }
1836
- bool operator<<(double val) { return shl_real_type(val, start, finish); }
1837
- bool operator<<(long double val) {
1838
- #ifndef __MINGW32__
1839
- return shl_real_type(val, start, finish);
1840
- #else
1841
- return shl_real_type(static_cast<double>(val), start, finish);
1842
- #endif
1843
- }
1844
-
1845
- template <std::size_t N>
1846
- bool operator<<(boost::array<CharT, N> const& input) BOOST_NOEXCEPT
1847
- { return shl_char_array_limited(input.begin(), N); }
1848
-
1849
- template <std::size_t N>
1850
- bool operator<<(boost::array<unsigned char, N> const& input) BOOST_NOEXCEPT
1851
- { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1852
-
1853
- template <std::size_t N>
1854
- bool operator<<(boost::array<signed char, N> const& input) BOOST_NOEXCEPT
1855
- { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1856
-
1857
- template <std::size_t N>
1858
- bool operator<<(boost::array<const CharT, N> const& input) BOOST_NOEXCEPT
1859
- { return shl_char_array_limited(input.begin(), N); }
1860
-
1861
- template <std::size_t N>
1862
- bool operator<<(boost::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
1863
- { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1864
-
1865
- template <std::size_t N>
1866
- bool operator<<(boost::array<const signed char, N> const& input) BOOST_NOEXCEPT
1867
- { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1868
-
1869
- #ifndef BOOST_NO_CXX11_HDR_ARRAY
1870
- template <std::size_t N>
1871
- bool operator<<(std::array<CharT, N> const& input) BOOST_NOEXCEPT
1872
- {
1873
- if (input.size()) return shl_char_array_limited(&input[0], N);
1874
- else return true;
1875
- }
1876
-
1877
- template <std::size_t N>
1878
- bool operator<<(std::array<unsigned char, N> const& input) BOOST_NOEXCEPT
1879
- { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1880
-
1881
- template <std::size_t N>
1882
- bool operator<<(std::array<signed char, N> const& input) BOOST_NOEXCEPT
1883
- { return ((*this) << reinterpret_cast<boost::array<char, N> const& >(input)); }
1884
-
1885
- template <std::size_t N>
1886
- bool operator<<(std::array<const CharT, N> const& input) BOOST_NOEXCEPT
1887
- {
1888
- if (input.size()) return shl_char_array_limited(&input[0], N);
1889
- else return true;
1890
- }
1891
-
1892
- template <std::size_t N>
1893
- bool operator<<(std::array<const unsigned char, N> const& input) BOOST_NOEXCEPT
1894
- { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1895
-
1896
- template <std::size_t N>
1897
- bool operator<<(std::array<const signed char, N> const& input) BOOST_NOEXCEPT
1898
- { return ((*this) << reinterpret_cast<boost::array<const char, N> const& >(input)); }
1899
- #endif
1900
-
1901
- template <class InStreamable>
1902
- bool operator<<(const InStreamable& input) { return shl_input_streamable(input); }
1903
-
1904
- /************************************ HELPER FUNCTIONS FOR OPERATORS >> ( ... ) ********************************/
1905
- private:
1906
-
1907
- template <typename Type>
1908
- bool shr_unsigned(Type& output)
1909
- {
1910
- if (start == finish) return false;
1911
- CharT const minus = lcast_char_constants<CharT>::minus;
1912
- CharT const plus = lcast_char_constants<CharT>::plus;
1913
- bool has_minus = false;
1914
-
1915
- /* We won`t use `start' any more, so no need in decrementing it after */
1916
- if ( Traits::eq(minus,*start) )
1917
- {
1918
- ++start;
1919
- has_minus = true;
1920
- } else if ( Traits::eq( plus, *start ) )
1921
- {
1922
- ++start;
1923
- }
1924
-
1925
- bool const succeed = lcast_ret_unsigned<Traits>(output, start, finish);
1926
-
1927
- if (has_minus) {
1928
- output = static_cast<Type>(0u - output);
1929
- }
1930
-
1931
- return succeed;
1932
- }
1933
-
1934
- template <typename Type>
1935
- bool shr_signed(Type& output)
1936
- {
1937
- if (start == finish) return false;
1938
- CharT const minus = lcast_char_constants<CharT>::minus;
1939
- CharT const plus = lcast_char_constants<CharT>::plus;
1940
- typedef BOOST_DEDUCED_TYPENAME make_unsigned<Type>::type utype;
1941
- utype out_tmp =0;
1942
- bool has_minus = false;
1943
-
1944
- /* We won`t use `start' any more, so no need in decrementing it after */
1945
- if ( Traits::eq(minus,*start) )
1946
- {
1947
- ++start;
1948
- has_minus = true;
1949
- } else if ( Traits::eq(plus, *start) )
1950
- {
1951
- ++start;
1952
- }
1953
-
1954
- bool succeed = lcast_ret_unsigned<Traits>(out_tmp, start, finish);
1955
- if (has_minus) {
1956
- utype const comp_val = (static_cast<utype>(1) << std::numeric_limits<Type>::digits);
1957
- succeed = succeed && out_tmp<=comp_val;
1958
- output = static_cast<Type>(0u - out_tmp);
1959
- } else {
1960
- utype const comp_val = static_cast<utype>((std::numeric_limits<Type>::max)());
1961
- succeed = succeed && out_tmp<=comp_val;
1962
- output = out_tmp;
1963
- }
1964
- return succeed;
1965
- }
1966
-
1967
- template<typename InputStreamable>
1968
- bool shr_using_base_class(InputStreamable& output)
1969
- {
1970
- BOOST_STATIC_ASSERT_MSG(
1971
- (!boost::is_pointer<InputStreamable>::value),
1972
- "boost::lexical_cast can not convert to pointers"
1973
- );
1974
-
1975
- #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_LOCALE)
1976
- BOOST_STATIC_ASSERT_MSG((boost::is_same<char, CharT>::value),
1977
- "boost::lexical_cast can not convert, because your STL library does not "
1978
- "support such conversions. Try updating it."
1979
- );
1980
- #endif
1981
-
1982
- #if defined(BOOST_NO_STRINGSTREAM)
1983
- std::istrstream stream(start, finish - start);
1984
- #else
1985
-
1986
- buffer_t buf;
1987
- buf.setbuf(start, finish - start);
1988
- #if defined(BOOST_NO_STD_LOCALE)
1989
- std::istream stream(&buf);
1990
- #else
1991
- std::basic_istream<CharT, Traits> stream(&buf);
1992
- #endif // BOOST_NO_STD_LOCALE
1993
- #endif // BOOST_NO_STRINGSTREAM
1994
-
1995
- stream.unsetf(std::ios::skipws);
1996
- lcast_set_precision(stream, static_cast<InputStreamable*>(0));
1997
-
1998
- return stream >> output &&
1999
- stream.get() ==
2000
- #if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
2001
- // GCC 2.9x lacks std::char_traits<>::eof().
2002
- // We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
2003
- // configurations, which do provide std::char_traits<>::eof().
2004
-
2005
- EOF;
2006
- #else
2007
- Traits::eof();
2008
- #endif
2009
- }
2010
-
2011
- template<class T>
2012
- inline bool shr_xchar(T& output)
2013
- {
2014
- BOOST_STATIC_ASSERT_MSG(( sizeof(CharT) == sizeof(T) ),
2015
- "boost::lexical_cast does not support narrowing of character types."
2016
- "Use boost::locale instead" );
2017
- bool const ok = (finish - start == 1);
2018
- if (ok) {
2019
- CharT out;
2020
- Traits::assign(out, *start);
2021
- output = static_cast<T>(out);
2022
- }
2023
- return ok;
2024
- }
2025
-
2026
- /************************************ OPERATORS >> ( ... ) ********************************/
2027
- public:
2028
- bool operator>>(unsigned short& output) { return shr_unsigned(output); }
2029
- bool operator>>(unsigned int& output) { return shr_unsigned(output); }
2030
- bool operator>>(unsigned long int& output) { return shr_unsigned(output); }
2031
- bool operator>>(short& output) { return shr_signed(output); }
2032
- bool operator>>(int& output) { return shr_signed(output); }
2033
- bool operator>>(long int& output) { return shr_signed(output); }
2034
- #if defined(BOOST_HAS_LONG_LONG)
2035
- bool operator>>(boost::ulong_long_type& output) { return shr_unsigned(output); }
2036
- bool operator>>(boost::long_long_type& output) { return shr_signed(output); }
2037
- #elif defined(BOOST_HAS_MS_INT64)
2038
- bool operator>>(unsigned __int64& output) { return shr_unsigned(output); }
2039
- bool operator>>(__int64& output) { return shr_signed(output); }
2040
- #endif
2041
-
2042
- #ifdef BOOST_LCAST_HAS_INT128
2043
- bool operator>>(boost::uint128_type& output) { return shr_unsigned(output); }
2044
- bool operator>>(boost::int128_type& output) { return shr_signed(output); }
2045
- #endif
2046
-
2047
- bool operator>>(char& output) { return shr_xchar(output); }
2048
- bool operator>>(unsigned char& output) { return shr_xchar(output); }
2049
- bool operator>>(signed char& output) { return shr_xchar(output); }
2050
- #if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
2051
- bool operator>>(wchar_t& output) { return shr_xchar(output); }
2052
- #endif
2053
- #if !defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
2054
- bool operator>>(char16_t& output) { return shr_xchar(output); }
2055
- #endif
2056
- #if !defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CXX11_UNICODE_LITERALS)
2057
- bool operator>>(char32_t& output) { return shr_xchar(output); }
2058
- #endif
2059
- template<class Alloc>
2060
- bool operator>>(std::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
2061
-
2062
- template<class Alloc>
2063
- bool operator>>(boost::container::basic_string<CharT,Traits,Alloc>& str) { str.assign(start, finish); return true; }
2064
-
2065
-
2066
- private:
2067
- template <std::size_t N, class ArrayT>
2068
- bool shr_std_array(ArrayT& output) BOOST_NOEXCEPT
2069
- {
2070
- using namespace std;
2071
- const std::size_t size = finish - start;
2072
- if (size > N - 1) { // `-1` because we need to store \0 at the end
2073
- return false;
2074
- }
2075
-
2076
- memcpy(&output[0], start, size * sizeof(CharT));
2077
- output[size] = Traits::to_char_type(0);
2078
- return true;
2079
- }
2080
-
2081
- public:
2082
-
2083
- template <std::size_t N>
2084
- bool operator>>(boost::array<CharT, N>& output) BOOST_NOEXCEPT
2085
- {
2086
- return shr_std_array<N>(output);
2087
- }
2088
-
2089
- template <std::size_t N>
2090
- bool operator>>(boost::array<unsigned char, N>& output)
2091
- {
2092
- return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
2093
- }
2094
-
2095
- template <std::size_t N>
2096
- bool operator>>(boost::array<signed char, N>& output)
2097
- {
2098
- return ((*this) >> reinterpret_cast<boost::array<char, N>& >(output));
2099
- }
2100
-
2101
- #ifndef BOOST_NO_CXX11_HDR_ARRAY
2102
- template <std::size_t N>
2103
- bool operator>>(std::array<CharT, N>& output) BOOST_NOEXCEPT
2104
- {
2105
- return shr_std_array<N>(output);
2106
- }
2107
-
2108
- template <std::size_t N>
2109
- bool operator>>(std::array<unsigned char, N>& output)
2110
- {
2111
- return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
2112
- }
2113
-
2114
- template <std::size_t N>
2115
- bool operator>>(std::array<signed char, N>& output)
2116
- {
2117
- return ((*this) >> reinterpret_cast<std::array<char, N>& >(output));
2118
- }
2119
- #endif
2120
-
2121
-
2122
- /*
2123
- * case "-0" || "0" || "+0" : output = false; return true;
2124
- * case "1" || "+1": output = true; return true;
2125
- * default: return false;
2126
- */
2127
- bool operator>>(bool& output) BOOST_NOEXCEPT
2128
- {
2129
- CharT const zero = lcast_char_constants<CharT>::zero;
2130
- CharT const plus = lcast_char_constants<CharT>::plus;
2131
- CharT const minus = lcast_char_constants<CharT>::minus;
2132
-
2133
- switch(finish-start)
2134
- {
2135
- case 1:
2136
- output = Traits::eq(start[0], zero+1);
2137
- return output || Traits::eq(start[0], zero );
2138
- case 2:
2139
- if ( Traits::eq( plus, *start) )
2140
- {
2141
- ++start;
2142
- output = Traits::eq(start[0], zero +1);
2143
- return output || Traits::eq(start[0], zero );
2144
- } else
2145
- {
2146
- output = false;
2147
- return Traits::eq( minus, *start)
2148
- && Traits::eq( zero, start[1]);
2149
- }
2150
- default:
2151
- output = false; // Suppress warning about uninitalized variable
2152
- return false;
2153
- }
2154
- }
2155
-
2156
- bool operator>>(float& output) { return lcast_ret_float<Traits>(output,start,finish); }
2157
-
2158
- private:
2159
- // Not optimised converter
2160
- template <class T>
2161
- bool float_types_converter_internal(T& output, int /*tag*/) {
2162
- if (parse_inf_nan(start, finish, output)) return true;
2163
- bool return_value = shr_using_base_class(output);
2164
-
2165
- /* Some compilers and libraries successfully
2166
- * parse 'inf', 'INFINITY', '1.0E', '1.0E-'...
2167
- * We are trying to provide a unified behaviour,
2168
- * so we just forbid such conversions (as some
2169
- * of the most popular compilers/libraries do)
2170
- * */
2171
- CharT const minus = lcast_char_constants<CharT>::minus;
2172
- CharT const plus = lcast_char_constants<CharT>::plus;
2173
- CharT const capital_e = lcast_char_constants<CharT>::capital_e;
2174
- CharT const lowercase_e = lcast_char_constants<CharT>::lowercase_e;
2175
- if ( return_value &&
2176
- (
2177
- Traits::eq(*(finish-1), lowercase_e) // 1.0e
2178
- || Traits::eq(*(finish-1), capital_e) // 1.0E
2179
- || Traits::eq(*(finish-1), minus) // 1.0e- or 1.0E-
2180
- || Traits::eq(*(finish-1), plus) // 1.0e+ or 1.0E+
2181
- )
2182
- ) return false;
2183
-
2184
- return return_value;
2185
- }
2186
-
2187
- // Optimised converter
2188
- bool float_types_converter_internal(double& output,char /*tag*/) {
2189
- return lcast_ret_float<Traits>(output,start,finish);
2190
- }
2191
- public:
2192
-
2193
- bool operator>>(double& output)
2194
- {
2195
- /*
2196
- * Some compilers implement long double as double. In that case these types have
2197
- * same size, same precision, same max and min values... And it means,
2198
- * that current implementation of lcast_ret_float cannot be used for type
2199
- * double, because it will give a big precision loss.
2200
- * */
2201
- boost::mpl::if_c<
2202
- #if (defined(BOOST_HAS_LONG_LONG) || defined(BOOST_HAS_MS_INT64)) && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
2203
- boost::type_traits::ice_eq< sizeof(double), sizeof(long double) >::value,
2204
- #else
2205
- 1,
2206
- #endif
2207
- int,
2208
- char
2209
- >::type tag = 0;
2210
-
2211
- return float_types_converter_internal(output, tag);
2212
- }
2213
-
2214
- bool operator>>(long double& output)
2215
- {
2216
- int tag = 0;
2217
- return float_types_converter_internal(output, tag);
2218
- }
2219
-
2220
- // Generic istream-based algorithm.
2221
- // lcast_streambuf_for_target<InputStreamable>::value is true.
2222
- template<typename InputStreamable>
2223
- bool operator>>(InputStreamable& output) { return shr_using_base_class(output); }
2224
- };
2225
- }
2226
-
2227
- namespace detail
2228
- {
2229
- template<typename T>
2230
- struct is_stdstring
2231
- {
2232
- BOOST_STATIC_CONSTANT(bool, value = false );
2233
- };
2234
-
2235
- template<typename CharT, typename Traits, typename Alloc>
2236
- struct is_stdstring< std::basic_string<CharT, Traits, Alloc> >
2237
- {
2238
- BOOST_STATIC_CONSTANT(bool, value = true );
2239
- };
2240
-
2241
- template<typename CharT, typename Traits, typename Alloc>
2242
- struct is_stdstring< boost::container::basic_string<CharT, Traits, Alloc> >
2243
- {
2244
- BOOST_STATIC_CONSTANT(bool, value = true );
2245
- };
2246
-
2247
- template<typename Target, typename Source>
2248
- struct is_arithmetic_and_not_xchars
2249
- {
2250
- BOOST_STATIC_CONSTANT(bool, value =
2251
- (
2252
- boost::type_traits::ice_and<
2253
- boost::is_arithmetic<Source>::value,
2254
- boost::is_arithmetic<Target>::value,
2255
- boost::type_traits::ice_not<
2256
- detail::is_char_or_wchar<Target>::value
2257
- >::value,
2258
- boost::type_traits::ice_not<
2259
- detail::is_char_or_wchar<Source>::value
2260
- >::value
2261
- >::value
2262
- )
2263
- );
2264
- };
2265
-
2266
- /*
2267
- * is_xchar_to_xchar<Target, Source>::value is true, when
2268
- * Target and Souce are the same char types, or when
2269
- * Target and Souce are char types of the same size.
2270
- */
2271
- template<typename Target, typename Source>
2272
- struct is_xchar_to_xchar
2273
- {
2274
- BOOST_STATIC_CONSTANT(bool, value =
2275
- (
2276
- boost::type_traits::ice_or<
2277
- boost::type_traits::ice_and<
2278
- is_same<Source,Target>::value,
2279
- is_char_or_wchar<Target>::value
2280
- >::value,
2281
- boost::type_traits::ice_and<
2282
- boost::type_traits::ice_eq< sizeof(char),sizeof(Target)>::value,
2283
- boost::type_traits::ice_eq< sizeof(char),sizeof(Source)>::value,
2284
- is_char_or_wchar<Target>::value,
2285
- is_char_or_wchar<Source>::value
2286
- >::value
2287
- >::value
2288
- )
2289
- );
2290
- };
2291
-
2292
- template<typename Target, typename Source>
2293
- struct is_char_array_to_stdstring
2294
- {
2295
- BOOST_STATIC_CONSTANT(bool, value = false );
2296
- };
2297
-
2298
- template<typename CharT, typename Traits, typename Alloc>
2299
- struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, CharT* >
2300
- {
2301
- BOOST_STATIC_CONSTANT(bool, value = true );
2302
- };
2303
-
2304
- template<typename CharT, typename Traits, typename Alloc>
2305
- struct is_char_array_to_stdstring< std::basic_string<CharT, Traits, Alloc>, const CharT* >
2306
- {
2307
- BOOST_STATIC_CONSTANT(bool, value = true );
2308
- };
2309
-
2310
- template<typename CharT, typename Traits, typename Alloc>
2311
- struct is_char_array_to_stdstring< boost::container::basic_string<CharT, Traits, Alloc>, CharT* >
2312
- {
2313
- BOOST_STATIC_CONSTANT(bool, value = true );
2314
- };
2315
-
2316
- template<typename CharT, typename Traits, typename Alloc>
2317
- struct is_char_array_to_stdstring< boost::container::basic_string<CharT, Traits, Alloc>, const CharT* >
2318
- {
2319
- BOOST_STATIC_CONSTANT(bool, value = true );
2320
- };
2321
-
2322
- #if (defined _MSC_VER)
2323
- # pragma warning( push )
2324
- # pragma warning( disable : 4701 ) // possible use of ... before initialization
2325
- # pragma warning( disable : 4702 ) // unreachable code
2326
- # pragma warning( disable : 4267 ) // conversion from 'size_t' to 'unsigned int'
2327
- #endif
2328
- template<typename Target, typename Source>
2329
- struct lexical_cast_do_cast
2330
- {
2331
- static inline Target lexical_cast_impl(const Source& arg)
2332
- {
2333
- typedef lexical_cast_stream_traits<Source, Target> stream_trait;
2334
-
2335
- typedef detail::lexical_stream_limited_src<
2336
- BOOST_DEDUCED_TYPENAME stream_trait::char_type,
2337
- BOOST_DEDUCED_TYPENAME stream_trait::traits,
2338
- stream_trait::requires_stringbuf
2339
- > interpreter_type;
2340
-
2341
- // Target type must be default constructible
2342
- Target result;
2343
-
2344
- BOOST_DEDUCED_TYPENAME stream_trait::char_type buf[stream_trait::len_t::value + 1];
2345
- stream_trait::len_t::check_coverage();
2346
-
2347
- interpreter_type interpreter(buf, buf + stream_trait::len_t::value + 1);
2348
-
2349
- // Disabling ADL, by directly specifying operators.
2350
- if(!(interpreter.operator <<(arg) && interpreter.operator >>(result)))
2351
- BOOST_LCAST_THROW_BAD_CAST(Source, Target);
2352
-
2353
- return result;
2354
- }
2355
- };
2356
- #if (defined _MSC_VER)
2357
- # pragma warning( pop )
2358
- #endif
2359
-
2360
- template <typename Source>
2361
- struct lexical_cast_copy
2362
- {
2363
- static inline const Source& lexical_cast_impl(const Source &arg) BOOST_NOEXCEPT
2364
- {
2365
- return arg;
2366
- }
2367
- };
2368
-
2369
- template <class Source, class Target >
2370
- struct detect_precision_loss
2371
- {
2372
- typedef boost::numeric::Trunc<Source> Rounder;
2373
- typedef Source source_type ;
2374
-
2375
- typedef BOOST_DEDUCED_TYPENAME mpl::if_<
2376
- boost::is_arithmetic<Source>, Source, Source const&
2377
- >::type argument_type ;
2378
-
2379
- static source_type nearbyint ( argument_type s )
2380
- {
2381
- const source_type near_int = Rounder::nearbyint(s);
2382
- if (near_int) {
2383
- const source_type orig_div_round = s / near_int;
2384
- const source_type eps = std::numeric_limits<source_type>::epsilon();
2385
-
2386
- if ((orig_div_round > 1 ? orig_div_round - 1 : 1 - orig_div_round) > eps)
2387
- BOOST_LCAST_THROW_BAD_CAST(Source, Target);
2388
- }
2389
-
2390
- return s ;
2391
- }
2392
-
2393
- typedef typename Rounder::round_style round_style;
2394
- } ;
2395
-
2396
- template <class Source, class Target >
2397
- struct nothrow_overflow_handler
2398
- {
2399
- void operator() ( boost::numeric::range_check_result r )
2400
- {
2401
- if (r != boost::numeric::cInRange)
2402
- BOOST_LCAST_THROW_BAD_CAST(Source, Target);
2403
- }
2404
- } ;
2405
-
2406
- template <typename Target, typename Source>
2407
- struct lexical_cast_dynamic_num_not_ignoring_minus
2408
- {
2409
- static inline Target lexical_cast_impl(const Source &arg)
2410
- {
2411
- return boost::numeric::converter<
2412
- Target,
2413
- Source,
2414
- boost::numeric::conversion_traits<Target,Source>,
2415
- nothrow_overflow_handler<Source, Target>,
2416
- detect_precision_loss<Source, Target>
2417
- >::convert(arg);
2418
- }
2419
- };
2420
-
2421
- template <typename Target, typename Source>
2422
- struct lexical_cast_dynamic_num_ignoring_minus
2423
- {
2424
- static inline Target lexical_cast_impl(const Source &arg)
2425
- {
2426
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::eval_if_c<
2427
- boost::is_float<Source>::value,
2428
- boost::mpl::identity<Source>,
2429
- boost::make_unsigned<Source>
2430
- >::type usource_t;
2431
-
2432
- typedef boost::numeric::converter<
2433
- Target,
2434
- usource_t,
2435
- boost::numeric::conversion_traits<Target,usource_t>,
2436
- nothrow_overflow_handler<usource_t, Target>,
2437
- detect_precision_loss<usource_t, Target>
2438
- > converter_t;
2439
-
2440
- return (
2441
- arg < 0 ? static_cast<Target>(0u - converter_t::convert(0u - arg)) : converter_t::convert(arg)
2442
- );
2443
- }
2444
- };
2445
-
2446
- /*
2447
- * lexical_cast_dynamic_num follows the rules:
2448
- * 1) If Source can be converted to Target without precision loss and
2449
- * without overflows, then assign Source to Target and return
2450
- *
2451
- * 2) If Source is less than 0 and Target is an unsigned integer,
2452
- * then negate Source, check the requirements of rule 1) and if
2453
- * successful, assign static_casted Source to Target and return
2454
- *
2455
- * 3) Otherwise throw a bad_lexical_cast exception
2456
- *
2457
- *
2458
- * Rule 2) required because boost::lexical_cast has the behavior of
2459
- * stringstream, which uses the rules of scanf for conversions. And
2460
- * in the C99 standard for unsigned input value minus sign is
2461
- * optional, so if a negative number is read, no errors will arise
2462
- * and the result will be the two's complement.
2463
- */
2464
- template <typename Target, typename Source>
2465
- struct lexical_cast_dynamic_num
2466
- {
2467
- static inline Target lexical_cast_impl(const Source &arg)
2468
- {
2469
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
2470
- boost::type_traits::ice_and<
2471
- boost::type_traits::ice_or<
2472
- boost::is_signed<Source>::value,
2473
- boost::is_float<Source>::value
2474
- >::value,
2475
- boost::type_traits::ice_not<
2476
- boost::is_same<Source, bool>::value
2477
- >::value,
2478
- boost::type_traits::ice_not<
2479
- boost::is_same<Target, bool>::value
2480
- >::value,
2481
- boost::is_unsigned<Target>::value
2482
- >::value,
2483
- lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
2484
- lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
2485
- >::type caster_type;
2486
-
2487
- return caster_type::lexical_cast_impl(arg);
2488
- }
2489
- };
2490
- }
31
+ #include <boost/lexical_cast/bad_lexical_cast.hpp>
32
+ #include <boost/lexical_cast/try_lexical_convert.hpp>
2491
33
 
34
+ namespace boost
35
+ {
2492
36
  template <typename Target, typename Source>
2493
37
  inline Target lexical_cast(const Source &arg)
2494
38
  {
2495
- typedef BOOST_DEDUCED_TYPENAME boost::detail::array_to_pointer_decay<Source>::type src;
2496
-
2497
- typedef BOOST_DEDUCED_TYPENAME boost::type_traits::ice_or<
2498
- boost::detail::is_xchar_to_xchar<Target, src >::value,
2499
- boost::detail::is_char_array_to_stdstring<Target, src >::value,
2500
- boost::type_traits::ice_and<
2501
- boost::is_same<Target, src >::value,
2502
- boost::detail::is_stdstring<Target >::value
2503
- >::value
2504
- > shall_we_copy_t;
2505
-
2506
- typedef BOOST_DEDUCED_TYPENAME
2507
- boost::detail::is_arithmetic_and_not_xchars<Target, src > shall_we_copy_with_dynamic_check_t;
39
+ Target result;
2508
40
 
2509
- typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
2510
- shall_we_copy_t::value,
2511
- boost::detail::lexical_cast_copy<src >,
2512
- BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
2513
- shall_we_copy_with_dynamic_check_t::value,
2514
- boost::detail::lexical_cast_dynamic_num<Target, src >,
2515
- boost::detail::lexical_cast_do_cast<Target, src >
2516
- >::type
2517
- >::type caster_type;
41
+ if (!boost::conversion::detail::try_lexical_convert(arg, result)) {
42
+ boost::conversion::detail::throw_bad_cast<Source, Target>();
43
+ }
2518
44
 
2519
- return caster_type::lexical_cast_impl(arg);
45
+ return result;
2520
46
  }
2521
47
 
2522
48
  template <typename Target>
2523
49
  inline Target lexical_cast(const char* chars, std::size_t count)
2524
- {
50
+ {
2525
51
  return ::boost::lexical_cast<Target>(
2526
52
  ::boost::iterator_range<const char*>(chars, chars + count)
2527
53
  );
2528
54
  }
2529
55
 
2530
-
2531
56
  template <typename Target>
2532
57
  inline Target lexical_cast(const unsigned char* chars, std::size_t count)
2533
58
  {
2534
- return ::boost::lexical_cast<Target>(
59
+ return ::boost::lexical_cast<Target>(
2535
60
  ::boost::iterator_range<const unsigned char*>(chars, chars + count)
2536
- );
2537
- }
61
+ );
62
+ }
2538
63
 
2539
64
  template <typename Target>
2540
65
  inline Target lexical_cast(const signed char* chars, std::size_t count)
@@ -2553,7 +78,7 @@ namespace boost {
2553
78
  );
2554
79
  }
2555
80
  #endif
2556
- #ifndef BOOST_NO_CHAR16_T
81
+ #ifndef BOOST_NO_CXX11_CHAR16_T
2557
82
  template <typename Target>
2558
83
  inline Target lexical_cast(const char16_t* chars, std::size_t count)
2559
84
  {
@@ -2562,7 +87,7 @@ namespace boost {
2562
87
  );
2563
88
  }
2564
89
  #endif
2565
- #ifndef BOOST_NO_CHAR32_T
90
+ #ifndef BOOST_NO_CXX11_CHAR32_T
2566
91
  template <typename Target>
2567
92
  inline Target lexical_cast(const char32_t* chars, std::size_t count)
2568
93
  {
@@ -2574,152 +99,7 @@ namespace boost {
2574
99
 
2575
100
  } // namespace boost
2576
101
 
2577
- #else // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
2578
-
2579
- namespace boost {
2580
- namespace detail
2581
- {
2582
-
2583
- // selectors for choosing stream character type
2584
- template<typename Type>
2585
- struct stream_char
2586
- {
2587
- typedef char type;
2588
- };
2589
-
2590
- #ifndef BOOST_LCAST_NO_WCHAR_T
2591
- #ifndef BOOST_NO_INTRINSIC_WCHAR_T
2592
- template<>
2593
- struct stream_char<wchar_t>
2594
- {
2595
- typedef wchar_t type;
2596
- };
2597
- #endif
2598
-
2599
- template<>
2600
- struct stream_char<wchar_t *>
2601
- {
2602
- typedef wchar_t type;
2603
- };
2604
-
2605
- template<>
2606
- struct stream_char<const wchar_t *>
2607
- {
2608
- typedef wchar_t type;
2609
- };
2610
-
2611
- template<>
2612
- struct stream_char<std::wstring>
2613
- {
2614
- typedef wchar_t type;
2615
- };
2616
- #endif
2617
-
2618
- // stream wrapper for handling lexical conversions
2619
- template<typename Target, typename Source, typename Traits>
2620
- class lexical_stream
2621
- {
2622
- private:
2623
- typedef typename widest_char<
2624
- typename stream_char<Target>::type,
2625
- typename stream_char<Source>::type>::type char_type;
2626
-
2627
- typedef Traits traits_type;
2628
-
2629
- public:
2630
- lexical_stream(char_type* = 0, char_type* = 0)
2631
- {
2632
- stream.unsetf(std::ios::skipws);
2633
- lcast_set_precision(stream, static_cast<Source*>(0), static_cast<Target*>(0) );
2634
- }
2635
- ~lexical_stream()
2636
- {
2637
- #if defined(BOOST_NO_STRINGSTREAM)
2638
- stream.freeze(false);
2639
- #endif
2640
- }
2641
- bool operator<<(const Source &input)
2642
- {
2643
- return !(stream << input).fail();
2644
- }
2645
- template<typename InputStreamable>
2646
- bool operator>>(InputStreamable &output)
2647
- {
2648
- return !is_pointer<InputStreamable>::value &&
2649
- stream >> output &&
2650
- stream.get() ==
2651
- #if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
2652
- // GCC 2.9x lacks std::char_traits<>::eof().
2653
- // We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
2654
- // configurations, which do provide std::char_traits<>::eof().
2655
-
2656
- EOF;
2657
- #else
2658
- traits_type::eof();
2659
- #endif
2660
- }
2661
-
2662
- bool operator>>(std::string &output)
2663
- {
2664
- #if defined(BOOST_NO_STRINGSTREAM)
2665
- stream << '\0';
2666
- #endif
2667
- stream.str().swap(output);
2668
- return true;
2669
- }
2670
- #ifndef BOOST_LCAST_NO_WCHAR_T
2671
- bool operator>>(std::wstring &output)
2672
- {
2673
- stream.str().swap(output);
2674
- return true;
2675
- }
2676
- #endif
2677
-
2678
- private:
2679
- #if defined(BOOST_NO_STRINGSTREAM)
2680
- std::strstream stream;
2681
- #elif defined(BOOST_NO_STD_LOCALE)
2682
- std::stringstream stream;
2683
- #else
2684
- std::basic_stringstream<char_type,traits_type> stream;
2685
- #endif
2686
- };
2687
- }
2688
-
2689
- // call-by-value fallback version (deprecated)
2690
-
2691
- template<typename Target, typename Source>
2692
- Target lexical_cast(Source arg)
2693
- {
2694
- typedef typename detail::widest_char<
2695
- BOOST_DEDUCED_TYPENAME detail::stream_char<Target>::type
2696
- , BOOST_DEDUCED_TYPENAME detail::stream_char<Source>::type
2697
- >::type char_type;
2698
-
2699
- typedef std::char_traits<char_type> traits;
2700
- detail::lexical_stream<Target, Source, traits> interpreter;
2701
- Target result;
2702
-
2703
- if(!(interpreter << arg && interpreter >> result))
2704
- BOOST_LCAST_THROW_BAD_CAST(Source, Target);
2705
- return result;
2706
- }
2707
-
2708
- } // namespace boost
2709
-
2710
- #endif
2711
-
2712
- // Copyright Kevlin Henney, 2000-2005.
2713
- // Copyright Alexander Nasonov, 2006-2010.
2714
- // Copyright Antony Polukhin, 2011-2013.
2715
- //
2716
- // Distributed under the Boost Software License, Version 1.0. (See
2717
- // accompanying file LICENSE_1_0.txt or copy at
2718
- // http://www.boost.org/LICENSE_1_0.txt)
2719
-
2720
- #undef BOOST_LCAST_THROW_BAD_CAST
2721
102
  #undef BOOST_LCAST_NO_WCHAR_T
2722
- #undef BOOST_LCAST_HAS_INT128
2723
103
 
2724
104
  #endif // BOOST_LEXICAL_CAST_INCLUDED
2725
105