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
@@ -1,6 +1,6 @@
1
1
  /////////////////////////////////////////////////////////////////////////////
2
2
  //
3
- // (C) Copyright Ion Gaztanaga 2007-2012
3
+ // (C) Copyright Ion Gaztanaga 2007-2014
4
4
  //
5
5
  // Distributed under the Boost Software License, Version 1.0.
6
6
  // (See accompanying file LICENSE_1_0.txt or copy at
@@ -19,27 +19,32 @@
19
19
  #define BOOST_INTRUSIVE_SGTREE_HPP
20
20
 
21
21
  #include <boost/intrusive/detail/config_begin.hpp>
22
- #include <algorithm>
23
- #include <cstddef>
24
- #include <functional>
25
- #include <iterator>
26
- #include <utility>
27
- #include <cmath>
28
- #include <cstddef>
22
+ #include <boost/intrusive/intrusive_fwd.hpp>
29
23
  #include <boost/intrusive/detail/assert.hpp>
30
24
  #include <boost/static_assert.hpp>
31
- #include <boost/intrusive/intrusive_fwd.hpp>
32
25
  #include <boost/intrusive/bs_set_hook.hpp>
26
+ #include <boost/intrusive/bstree.hpp>
33
27
  #include <boost/intrusive/detail/tree_node.hpp>
34
- #include <boost/intrusive/detail/ebo_functor_holder.hpp>
35
28
  #include <boost/intrusive/pointer_traits.hpp>
36
- #include <boost/intrusive/detail/clear_on_destructor_base.hpp>
37
29
  #include <boost/intrusive/detail/mpl.hpp>
38
- #include <boost/intrusive/detail/utilities.hpp>
39
- #include <boost/intrusive/options.hpp>
30
+ #include <boost/intrusive/detail/math.hpp>
31
+ #include <boost/intrusive/detail/get_value_traits.hpp>
40
32
  #include <boost/intrusive/sgtree_algorithms.hpp>
33
+ #include <boost/intrusive/detail/key_nodeptr_comp.hpp>
41
34
  #include <boost/intrusive/link_mode.hpp>
42
- #include <boost/move/move.hpp>
35
+
36
+ #include <boost/move/utility_core.hpp>
37
+ #include <boost/move/adl_move_swap.hpp>
38
+
39
+ #include <cstddef>
40
+ #include <boost/intrusive/detail/minimal_less_equal_header.hpp>
41
+ #include <boost/intrusive/detail/minimal_pair_header.hpp> //std::pair
42
+ #include <cmath>
43
+ #include <cstddef>
44
+
45
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
46
+ # pragma once
47
+ #endif
43
48
 
44
49
  namespace boost {
45
50
  namespace intrusive {
@@ -48,6 +53,12 @@ namespace intrusive {
48
53
 
49
54
  namespace detail{
50
55
 
56
+ /////////////////////////////////////////////////////////////
57
+ //
58
+ // Halpha for fixed floating_point<false> option
59
+ //
60
+ /////////////////////////////////////////////////////////////
61
+
51
62
  //! Returns floor(log2(n)/log2(sqrt(2))) -> floor(2*log2(n))
52
63
  //! Undefined if N is 0.
53
64
  //!
@@ -55,7 +66,7 @@ namespace detail{
55
66
  inline std::size_t calculate_h_sqrt2 (std::size_t n)
56
67
  {
57
68
  std::size_t f_log2 = detail::floor_log2(n);
58
- return (2*f_log2) + (n >= detail::sqrt2_pow_2xplus1 (f_log2));
69
+ return (2*f_log2) + static_cast<std::size_t>(n >= detail::sqrt2_pow_2xplus1(f_log2));
59
70
  }
60
71
 
61
72
  struct h_alpha_sqrt2_t
@@ -68,6 +79,7 @@ struct h_alpha_sqrt2_t
68
79
  struct alpha_0_75_by_max_size_t
69
80
  {
70
81
  alpha_0_75_by_max_size_t(void){}
82
+
71
83
  std::size_t operator()(std::size_t max_tree_size) const
72
84
  {
73
85
  const std::size_t max_tree_size_limit = ((~std::size_t(0))/std::size_t(3));
@@ -75,18 +87,26 @@ struct alpha_0_75_by_max_size_t
75
87
  }
76
88
  };
77
89
 
90
+ /////////////////////////////////////////////////////////////
91
+ //
92
+ // Halpha for fixed floating_point<true> option
93
+ //
94
+ /////////////////////////////////////////////////////////////
95
+
78
96
  struct h_alpha_t
79
97
  {
80
- h_alpha_t(float inv_minus_logalpha)
98
+ explicit h_alpha_t(float inv_minus_logalpha)
81
99
  : inv_minus_logalpha_(inv_minus_logalpha)
82
100
  {}
83
101
 
84
102
  std::size_t operator()(std::size_t n) const
85
103
  {
86
- //Returns floor(log2(1/alpha(n))) ->
87
- // floor(log2(n)/log(1/alpha)) ->
88
- // floor(log2(n)/(-log2(alpha)))
89
- //return static_cast<std::size_t>(std::log(float(n))*inv_minus_logalpha_);
104
+ ////////////////////////////////////////////////////////////
105
+ // This function must return "floor(log2(1/alpha(n)))" ->
106
+ // floor(log2(n)/log(1/alpha)) ->
107
+ // floor(log2(n)/-log2(alpha))
108
+ // floor(log2(n)*(1/-log2(alpha)))
109
+ ////////////////////////////////////////////////////////////
90
110
  return static_cast<std::size_t>(detail::fast_log2(float(n))*inv_minus_logalpha_);
91
111
  }
92
112
 
@@ -94,13 +114,13 @@ struct h_alpha_t
94
114
  //Since the function will be repeatedly called
95
115
  //precalculate constant data to avoid repeated
96
116
  //calls to log and division.
97
- //This will store 1/(-std::log(alpha_))
117
+ //This will store 1/(-std::log2(alpha_))
98
118
  float inv_minus_logalpha_;
99
119
  };
100
120
 
101
121
  struct alpha_by_max_size_t
102
122
  {
103
- alpha_by_max_size_t(float alpha)
123
+ explicit alpha_by_max_size_t(float alpha)
104
124
  : alpha_(alpha)
105
125
  {}
106
126
 
@@ -109,17 +129,17 @@ struct alpha_by_max_size_t
109
129
 
110
130
  private:
111
131
  float alpha_;
112
- float inv_minus_logalpha_;
113
132
  };
114
133
 
115
- template<bool Activate>
134
+ template<bool Activate, class SizeType>
116
135
  struct alpha_holder
117
136
  {
118
137
  typedef boost::intrusive::detail::h_alpha_t h_alpha_t;
119
138
  typedef boost::intrusive::detail::alpha_by_max_size_t multiply_by_alpha_t;
120
139
 
121
140
  alpha_holder()
122
- { set_alpha(0.7f); }
141
+ : max_tree_size_()
142
+ { set_alpha(0.70711f); } // ~1/sqrt(2)
123
143
 
124
144
  float get_alpha() const
125
145
  { return alpha_; }
@@ -136,13 +156,14 @@ struct alpha_holder
136
156
  multiply_by_alpha_t get_multiply_by_alpha_t() const
137
157
  { return multiply_by_alpha_t(alpha_); }
138
158
 
139
- private:
159
+ protected:
140
160
  float alpha_;
141
161
  float inv_minus_logalpha_;
162
+ SizeType max_tree_size_;
142
163
  };
143
164
 
144
- template<>
145
- struct alpha_holder<false>
165
+ template<class SizeType>
166
+ struct alpha_holder<false, SizeType>
146
167
  {
147
168
  //This specialization uses alpha = 1/sqrt(2)
148
169
  //without using floating point operations
@@ -150,6 +171,10 @@ struct alpha_holder<false>
150
171
  typedef boost::intrusive::detail::h_alpha_sqrt2_t h_alpha_t;
151
172
  typedef boost::intrusive::detail::alpha_0_75_by_max_size_t multiply_by_alpha_t;
152
173
 
174
+ alpha_holder()
175
+ : max_tree_size_()
176
+ {}
177
+
153
178
  float get_alpha() const
154
179
  { return 0.70710677f; }
155
180
 
@@ -163,30 +188,18 @@ struct alpha_holder<false>
163
188
 
164
189
  multiply_by_alpha_t get_multiply_by_alpha_t() const
165
190
  { return multiply_by_alpha_t(); }
191
+
192
+ SizeType max_tree_size_;
166
193
  };
167
194
 
168
195
  } //namespace detail{
169
196
 
170
- template <class ValueTraits, class Compare, class SizeType, bool FloatingPoint>
171
- struct sg_setopt
197
+ struct sgtree_defaults
198
+ : bstree_defaults
172
199
  {
173
- typedef ValueTraits value_traits;
174
- typedef Compare compare;
175
- typedef SizeType size_type;
176
- static const bool floating_point = FloatingPoint;
200
+ static const bool floating_point = true;
177
201
  };
178
202
 
179
- template <class T>
180
- struct sg_set_defaults
181
- : pack_options
182
- < none
183
- , base_hook<detail::default_bs_set_hook>
184
- , floating_point<true>
185
- , size_type<std::size_t>
186
- , compare<std::less<T> >
187
- >::type
188
- {};
189
-
190
203
  /// @endcond
191
204
 
192
205
  //! The class template sgtree is an intrusive scapegoat tree container, that
@@ -205,499 +218,242 @@ struct sg_set_defaults
205
218
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
206
219
  template<class T, class ...Options>
207
220
  #else
208
- template<class Config>
221
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, class SizeType, bool FloatingPoint, typename HeaderHolder>
209
222
  #endif
210
223
  class sgtree_impl
211
- : private detail::clear_on_destructor_base<sgtree_impl<Config> >
224
+ /// @cond
225
+ : public bstree_impl<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, SizeType, true, SgTreeAlgorithms, HeaderHolder>
226
+ , public detail::alpha_holder<FloatingPoint, SizeType>
227
+ /// @endcond
212
228
  {
213
- template<class C> friend class detail::clear_on_destructor_base;
214
229
  public:
215
- typedef typename Config::value_traits value_traits;
230
+ typedef ValueTraits value_traits;
216
231
  /// @cond
217
- static const bool external_value_traits =
218
- detail::external_value_traits_bool_is_true<value_traits>::value;
219
- typedef typename detail::eval_if_c
220
- < external_value_traits
221
- , detail::eval_value_traits<value_traits>
222
- , detail::identity<value_traits>
223
- >::type real_value_traits;
232
+ typedef bstree_impl< ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, SizeType
233
+ , true, SgTreeAlgorithms, HeaderHolder> tree_type;
234
+ typedef tree_type implementation_defined;
235
+
224
236
  /// @endcond
225
- typedef typename real_value_traits::pointer pointer;
226
- typedef typename real_value_traits::const_pointer const_pointer;
227
- typedef typename pointer_traits<pointer>::element_type value_type;
228
- typedef value_type key_type;
229
- typedef typename pointer_traits<pointer>::reference reference;
230
- typedef typename pointer_traits<const_pointer>::reference const_reference;
231
- typedef typename pointer_traits<const_pointer>::difference_type difference_type;
232
- typedef typename Config::size_type size_type;
233
- typedef typename Config::compare value_compare;
234
- typedef value_compare key_compare;
235
- typedef tree_iterator<sgtree_impl, false> iterator;
236
- typedef tree_iterator<sgtree_impl, true> const_iterator;
237
- typedef boost::intrusive::detail::reverse_iterator<iterator> reverse_iterator;
238
- typedef boost::intrusive::detail::reverse_iterator<const_iterator>const_reverse_iterator;
239
- typedef typename real_value_traits::node_traits node_traits;
240
- typedef typename node_traits::node node;
241
- typedef typename pointer_traits
242
- <pointer>::template rebind_pointer
243
- <node>::type node_ptr;
244
- typedef typename pointer_traits
245
- <pointer>::template rebind_pointer
246
- <const node>::type const_node_ptr;
247
- typedef sgtree_algorithms<node_traits> node_algorithms;
248
-
249
- static const bool floating_point = Config::floating_point;
250
- static const bool constant_time_size = true;
251
- static const bool stateful_value_traits = detail::is_stateful_value_traits<real_value_traits>::value;
237
+
238
+ typedef typename implementation_defined::pointer pointer;
239
+ typedef typename implementation_defined::const_pointer const_pointer;
240
+ typedef typename implementation_defined::value_type value_type;
241
+ typedef typename implementation_defined::key_type key_type;
242
+ typedef typename implementation_defined::key_of_value key_of_value;
243
+ typedef typename implementation_defined::reference reference;
244
+ typedef typename implementation_defined::const_reference const_reference;
245
+ typedef typename implementation_defined::difference_type difference_type;
246
+ typedef typename implementation_defined::size_type size_type;
247
+ typedef typename implementation_defined::value_compare value_compare;
248
+ typedef typename implementation_defined::key_compare key_compare;
249
+ typedef typename implementation_defined::iterator iterator;
250
+ typedef typename implementation_defined::const_iterator const_iterator;
251
+ typedef typename implementation_defined::reverse_iterator reverse_iterator;
252
+ typedef typename implementation_defined::const_reverse_iterator const_reverse_iterator;
253
+ typedef typename implementation_defined::node_traits node_traits;
254
+ typedef typename implementation_defined::node node;
255
+ typedef typename implementation_defined::node_ptr node_ptr;
256
+ typedef typename implementation_defined::const_node_ptr const_node_ptr;
257
+ typedef BOOST_INTRUSIVE_IMPDEF(sgtree_algorithms<node_traits>) node_algorithms;
258
+
259
+ static const bool constant_time_size = implementation_defined::constant_time_size;
260
+ static const bool floating_point = FloatingPoint;
261
+ static const bool stateful_value_traits = implementation_defined::stateful_value_traits;
252
262
 
253
263
  /// @cond
254
264
  private:
255
- typedef detail::size_holder<true, size_type> size_traits;
256
- typedef detail::alpha_holder<floating_point> alpha_traits;
257
- typedef typename alpha_traits::h_alpha_t h_alpha_t;
258
- typedef typename alpha_traits::multiply_by_alpha_t multiply_by_alpha_t;
259
265
 
260
266
  //noncopyable
267
+ typedef detail::alpha_holder<FloatingPoint, SizeType> alpha_traits;
268
+ typedef typename alpha_traits::h_alpha_t h_alpha_t;
269
+ typedef typename alpha_traits::multiply_by_alpha_t multiply_by_alpha_t;
270
+
261
271
  BOOST_MOVABLE_BUT_NOT_COPYABLE(sgtree_impl)
272
+ BOOST_STATIC_ASSERT(((int)value_traits::link_mode != (int)auto_unlink));
262
273
 
263
274
  enum { safemode_or_autounlink =
264
- (int)real_value_traits::link_mode == (int)auto_unlink ||
265
- (int)real_value_traits::link_mode == (int)safe_link };
266
-
267
- BOOST_STATIC_ASSERT(((int)real_value_traits::link_mode != (int)auto_unlink));
268
-
269
- //BOOST_STATIC_ASSERT((
270
- // (int)real_value_traits::link_mode != (int)auto_unlink ||
271
- // !floating_point
272
- // ));
273
-
274
- struct header_plus_alpha : public alpha_traits
275
- { node header_; };
276
-
277
- struct node_plus_pred_t : public detail::ebo_functor_holder<value_compare>
278
- {
279
- node_plus_pred_t(const value_compare &comp)
280
- : detail::ebo_functor_holder<value_compare>(comp)
281
- {}
282
- header_plus_alpha header_plus_alpha_;
283
- size_traits size_traits_;
284
- };
285
-
286
- struct data_t : public sgtree_impl::value_traits
287
- {
288
- typedef typename sgtree_impl::value_traits value_traits;
289
- data_t(const value_compare & comp, const value_traits &val_traits)
290
- : value_traits(val_traits), node_plus_pred_(comp)
291
- , max_tree_size_(0)
292
- {}
293
- node_plus_pred_t node_plus_pred_;
294
- size_type max_tree_size_;
295
- } data_;
296
-
297
- float priv_alpha() const
298
- { return this->priv_alpha_traits().get_alpha(); }
299
-
300
- void priv_alpha(float alpha)
301
- { return this->priv_alpha_traits().set_alpha(alpha); }
302
-
303
- const value_compare &priv_comp() const
304
- { return data_.node_plus_pred_.get(); }
305
-
306
- value_compare &priv_comp()
307
- { return data_.node_plus_pred_.get(); }
308
-
309
- const value_traits &priv_value_traits() const
310
- { return data_; }
311
-
312
- value_traits &priv_value_traits()
313
- { return data_; }
314
-
315
- node_ptr priv_header_ptr()
316
- { return pointer_traits<node_ptr>::pointer_to(data_.node_plus_pred_.header_plus_alpha_.header_); }
317
-
318
- const_node_ptr priv_header_ptr() const
319
- { return pointer_traits<const_node_ptr>::pointer_to(data_.node_plus_pred_.header_plus_alpha_.header_); }
320
-
321
- static node_ptr uncast(const const_node_ptr & ptr)
322
- { return pointer_traits<node_ptr>::const_cast_from(ptr); }
323
-
324
- size_traits &priv_size_traits()
325
- { return data_.node_plus_pred_.size_traits_; }
326
-
327
- const size_traits &priv_size_traits() const
328
- { return data_.node_plus_pred_.size_traits_; }
329
-
330
- alpha_traits &priv_alpha_traits()
331
- { return data_.node_plus_pred_.header_plus_alpha_; }
332
-
333
- const alpha_traits &priv_alpha_traits() const
334
- { return data_.node_plus_pred_.header_plus_alpha_; }
335
-
336
- const real_value_traits &get_real_value_traits(detail::bool_<false>) const
337
- { return data_; }
338
-
339
- const real_value_traits &get_real_value_traits(detail::bool_<true>) const
340
- { return data_.get_value_traits(*this); }
341
-
342
- real_value_traits &get_real_value_traits(detail::bool_<false>)
343
- { return data_; }
344
-
345
- real_value_traits &get_real_value_traits(detail::bool_<true>)
346
- { return data_.get_value_traits(*this); }
347
-
348
- h_alpha_t get_h_alpha_func() const
349
- { return priv_alpha_traits().get_h_alpha_t(); }
350
-
351
- multiply_by_alpha_t get_alpha_by_max_size_func() const
352
- { return priv_alpha_traits().get_multiply_by_alpha_t(); }
275
+ (int)value_traits::link_mode == (int)auto_unlink ||
276
+ (int)value_traits::link_mode == (int)safe_link };
353
277
 
354
278
  /// @endcond
355
279
 
356
280
  public:
357
281
 
358
- const real_value_traits &get_real_value_traits() const
359
- { return this->get_real_value_traits(detail::bool_<external_value_traits>()); }
360
-
361
- real_value_traits &get_real_value_traits()
362
- { return this->get_real_value_traits(detail::bool_<external_value_traits>()); }
282
+ typedef BOOST_INTRUSIVE_IMPDEF(typename node_algorithms::insert_commit_data) insert_commit_data;
363
283
 
364
- typedef typename node_algorithms::insert_commit_data insert_commit_data;
365
-
366
- //! <b>Effects</b>: Constructs an empty tree.
367
- //!
368
- //! <b>Complexity</b>: Constant.
369
- //!
370
- //! <b>Throws</b>: If value_traits::node_traits::node
371
- //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
372
- //! or the copy constructorof the value_compare object throws. Basic guarantee.
373
- explicit sgtree_impl( const value_compare &cmp = value_compare()
284
+ //! @copydoc ::boost::intrusive::bstree::bstree(const key_compare &,const value_traits &)
285
+ explicit sgtree_impl( const key_compare &cmp = key_compare()
374
286
  , const value_traits &v_traits = value_traits())
375
- : data_(cmp, v_traits)
376
- {
377
- node_algorithms::init_header(this->priv_header_ptr());
378
- this->priv_size_traits().set_size(size_type(0));
379
- }
287
+ : tree_type(cmp, v_traits)
288
+ {}
380
289
 
381
- //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
382
- //! cmp must be a comparison function that induces a strict weak ordering.
383
- //!
384
- //! <b>Effects</b>: Constructs an empty tree and inserts elements from
385
- //! [b, e).
386
- //!
387
- //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
388
- //! comp and otherwise N * log N, where N is the distance between first and last.
389
- //!
390
- //! <b>Throws</b>: If value_traits::node_traits::node
391
- //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
392
- //! or the copy constructor/operator() of the value_compare object throws. Basic guarantee.
290
+ //! @copydoc ::boost::intrusive::bstree::bstree(bool,Iterator,Iterator,const key_compare &,const value_traits &)
393
291
  template<class Iterator>
394
292
  sgtree_impl( bool unique, Iterator b, Iterator e
395
- , const value_compare &cmp = value_compare()
293
+ , const key_compare &cmp = key_compare()
396
294
  , const value_traits &v_traits = value_traits())
397
- : data_(cmp, v_traits)
295
+ : tree_type(cmp, v_traits)
398
296
  {
399
- node_algorithms::init_header(this->priv_header_ptr());
400
- this->priv_size_traits().set_size(size_type(0));
401
297
  if(unique)
402
298
  this->insert_unique(b, e);
403
299
  else
404
300
  this->insert_equal(b, e);
405
301
  }
406
302
 
407
- //! <b>Effects</b>: to-do
408
- //!
303
+ //! @copydoc ::boost::intrusive::bstree::bstree(bstree &&)
409
304
  sgtree_impl(BOOST_RV_REF(sgtree_impl) x)
410
- : data_(::boost::move(x.priv_comp()), ::boost::move(x.priv_value_traits()))
305
+ : tree_type(BOOST_MOVE_BASE(tree_type, x)), alpha_traits(x.get_alpha_traits())
306
+ { ::boost::adl_move_swap(this->get_alpha_traits(), x.get_alpha_traits()); }
307
+
308
+ //! @copydoc ::boost::intrusive::bstree::operator=(bstree &&)
309
+ sgtree_impl& operator=(BOOST_RV_REF(sgtree_impl) x)
411
310
  {
412
- node_algorithms::init_header(this->priv_header_ptr());
413
- this->priv_size_traits().set_size(size_type(0));
414
- this->swap(x);
311
+ this->get_alpha_traits() = x.get_alpha_traits();
312
+ return static_cast<sgtree_impl&>(tree_type::operator=(BOOST_MOVE_BASE(tree_type, x)));
415
313
  }
416
314
 
417
- //! <b>Effects</b>: to-do
418
- //!
419
- sgtree_impl& operator=(BOOST_RV_REF(sgtree_impl) x)
420
- { this->swap(x); return *this; }
315
+ /// @cond
316
+ private:
421
317
 
422
- //! <b>Effects</b>: Detaches all elements from this. The objects in the set
423
- //! are not deleted (i.e. no destructors are called), but the nodes according to
424
- //! the value_traits template parameter are reinitialized and thus can be reused.
425
- //!
426
- //! <b>Complexity</b>: Linear to elements contained in *this.
427
- //!
428
- //! <b>Throws</b>: Nothing.
429
- ~sgtree_impl()
430
- {}
318
+ const alpha_traits &get_alpha_traits() const
319
+ { return *this; }
431
320
 
432
- //! <b>Effects</b>: Returns an iterator pointing to the beginning of the tree.
433
- //!
434
- //! <b>Complexity</b>: Constant.
435
- //!
436
- //! <b>Throws</b>: Nothing.
437
- iterator begin()
438
- { return iterator (node_traits::get_left(this->priv_header_ptr()), this); }
321
+ alpha_traits &get_alpha_traits()
322
+ { return *this; }
439
323
 
440
- //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
441
- //!
442
- //! <b>Complexity</b>: Constant.
443
- //!
444
- //! <b>Throws</b>: Nothing.
445
- const_iterator begin() const
446
- { return cbegin(); }
324
+ h_alpha_t get_h_alpha_func() const
325
+ { return this->get_alpha_traits().get_h_alpha_t(); }
447
326
 
448
- //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the tree.
449
- //!
450
- //! <b>Complexity</b>: Constant.
451
- //!
452
- //! <b>Throws</b>: Nothing.
453
- const_iterator cbegin() const
454
- { return const_iterator (node_traits::get_left(this->priv_header_ptr()), this); }
327
+ multiply_by_alpha_t get_alpha_by_max_size_func() const
328
+ { return this->get_alpha_traits().get_multiply_by_alpha_t(); }
455
329
 
456
- //! <b>Effects</b>: Returns an iterator pointing to the end of the tree.
457
- //!
458
- //! <b>Complexity</b>: Constant.
459
- //!
460
- //! <b>Throws</b>: Nothing.
461
- iterator end()
462
- { return iterator (this->priv_header_ptr(), this); }
330
+ /// @endcond
463
331
 
464
- //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
465
- //!
466
- //! <b>Complexity</b>: Constant.
467
- //!
468
- //! <b>Throws</b>: Nothing.
469
- const_iterator end() const
470
- { return cend(); }
332
+ public:
471
333
 
472
- //! <b>Effects</b>: Returns a const_iterator pointing to the end of the tree.
473
- //!
474
- //! <b>Complexity</b>: Constant.
475
- //!
476
- //! <b>Throws</b>: Nothing.
477
- const_iterator cend() const
478
- { return const_iterator (uncast(this->priv_header_ptr()), this); }
334
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
335
+ //! @copydoc ::boost::intrusive::bstree::~bstree()
336
+ ~sgtree_impl();
479
337
 
480
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
481
- //! reversed tree.
482
- //!
483
- //! <b>Complexity</b>: Constant.
484
- //!
485
- //! <b>Throws</b>: Nothing.
486
- reverse_iterator rbegin()
487
- { return reverse_iterator(end()); }
338
+ //! @copydoc ::boost::intrusive::bstree::begin()
339
+ iterator begin();
488
340
 
489
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
490
- //! of the reversed tree.
491
- //!
492
- //! <b>Complexity</b>: Constant.
493
- //!
494
- //! <b>Throws</b>: Nothing.
495
- const_reverse_iterator rbegin() const
496
- { return const_reverse_iterator(end()); }
341
+ //! @copydoc ::boost::intrusive::bstree::begin()const
342
+ const_iterator begin() const;
497
343
 
498
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
499
- //! of the reversed tree.
500
- //!
501
- //! <b>Complexity</b>: Constant.
502
- //!
503
- //! <b>Throws</b>: Nothing.
504
- const_reverse_iterator crbegin() const
505
- { return const_reverse_iterator(end()); }
344
+ //! @copydoc ::boost::intrusive::bstree::cbegin()const
345
+ const_iterator cbegin() const;
506
346
 
507
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
508
- //! of the reversed tree.
509
- //!
510
- //! <b>Complexity</b>: Constant.
511
- //!
512
- //! <b>Throws</b>: Nothing.
513
- reverse_iterator rend()
514
- { return reverse_iterator(begin()); }
347
+ //! @copydoc ::boost::intrusive::bstree::end()
348
+ iterator end();
515
349
 
516
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
517
- //! of the reversed tree.
518
- //!
519
- //! <b>Complexity</b>: Constant.
520
- //!
521
- //! <b>Throws</b>: Nothing.
522
- const_reverse_iterator rend() const
523
- { return const_reverse_iterator(begin()); }
350
+ //! @copydoc ::boost::intrusive::bstree::end()const
351
+ const_iterator end() const;
524
352
 
525
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
526
- //! of the reversed tree.
527
- //!
528
- //! <b>Complexity</b>: Constant.
529
- //!
530
- //! <b>Throws</b>: Nothing.
531
- const_reverse_iterator crend() const
532
- { return const_reverse_iterator(begin()); }
353
+ //! @copydoc ::boost::intrusive::bstree::cend()const
354
+ const_iterator cend() const;
533
355
 
534
- //! <b>Precondition</b>: end_iterator must be a valid end iterator
535
- //! of sgtree.
536
- //!
537
- //! <b>Effects</b>: Returns a const reference to the sgtree associated to the end iterator
538
- //!
539
- //! <b>Throws</b>: Nothing.
540
- //!
541
- //! <b>Complexity</b>: Constant.
542
- static sgtree_impl &container_from_end_iterator(iterator end_iterator)
543
- { return priv_container_from_end_iterator(end_iterator); }
356
+ //! @copydoc ::boost::intrusive::bstree::rbegin()
357
+ reverse_iterator rbegin();
544
358
 
545
- //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
546
- //! of sgtree.
547
- //!
548
- //! <b>Effects</b>: Returns a const reference to the sgtree associated to the end iterator
549
- //!
550
- //! <b>Throws</b>: Nothing.
551
- //!
552
- //! <b>Complexity</b>: Constant.
553
- static const sgtree_impl &container_from_end_iterator(const_iterator end_iterator)
554
- { return priv_container_from_end_iterator(end_iterator); }
359
+ //! @copydoc ::boost::intrusive::bstree::rbegin()const
360
+ const_reverse_iterator rbegin() const;
555
361
 
556
- //! <b>Precondition</b>: it must be a valid iterator
557
- //! of rbtree.
558
- //!
559
- //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
560
- //!
561
- //! <b>Throws</b>: Nothing.
562
- //!
563
- //! <b>Complexity</b>: Logarithmic.
564
- static sgtree_impl &container_from_iterator(iterator it)
565
- { return priv_container_from_iterator(it); }
362
+ //! @copydoc ::boost::intrusive::bstree::crbegin()const
363
+ const_reverse_iterator crbegin() const;
566
364
 
567
- //! <b>Precondition</b>: it must be a valid end const_iterator
568
- //! of rbtree.
569
- //!
570
- //! <b>Effects</b>: Returns a const reference to the tree associated to the iterator
571
- //!
572
- //! <b>Throws</b>: Nothing.
573
- //!
574
- //! <b>Complexity</b>: Logarithmic.
575
- static const sgtree_impl &container_from_iterator(const_iterator it)
576
- { return priv_container_from_iterator(it); }
365
+ //! @copydoc ::boost::intrusive::bstree::rend()
366
+ reverse_iterator rend();
577
367
 
578
- //! <b>Effects</b>: Returns the value_compare object used by the tree.
579
- //!
580
- //! <b>Complexity</b>: Constant.
581
- //!
582
- //! <b>Throws</b>: If value_compare copy-constructor throws.
583
- value_compare value_comp() const
584
- { return priv_comp(); }
368
+ //! @copydoc ::boost::intrusive::bstree::rend()const
369
+ const_reverse_iterator rend() const;
585
370
 
586
- //! <b>Effects</b>: Returns true if the container is empty.
587
- //!
588
- //! <b>Complexity</b>: Constant.
589
- //!
590
- //! <b>Throws</b>: Nothing.
591
- bool empty() const
592
- { return node_algorithms::unique(this->priv_header_ptr()); }
371
+ //! @copydoc ::boost::intrusive::bstree::crend()const
372
+ const_reverse_iterator crend() const;
593
373
 
594
- //! <b>Effects</b>: Returns the number of elements stored in the tree.
595
- //!
596
- //! <b>Complexity</b>: Linear to elements contained in *this
597
- //! if constant-time size option is disabled. Constant time otherwise.
598
- //!
599
- //! <b>Throws</b>: Nothing.
600
- size_type size() const
601
- {
602
- if(constant_time_size)
603
- return this->priv_size_traits().get_size();
604
- else{
605
- return (size_type)node_algorithms::size(this->priv_header_ptr());
606
- }
607
- }
374
+ //! @copydoc ::boost::intrusive::bstree::container_from_end_iterator(iterator)
375
+ static sgtree_impl &container_from_end_iterator(iterator end_iterator);
608
376
 
609
- //! <b>Effects</b>: Swaps the contents of two sgtrees.
610
- //!
611
- //! <b>Complexity</b>: Constant.
612
- //!
613
- //! <b>Throws</b>: If the comparison functor's swap call throws.
377
+ //! @copydoc ::boost::intrusive::bstree::container_from_end_iterator(const_iterator)
378
+ static const sgtree_impl &container_from_end_iterator(const_iterator end_iterator);
379
+
380
+ //! @copydoc ::boost::intrusive::bstree::container_from_iterator(iterator)
381
+ static sgtree_impl &container_from_iterator(iterator it);
382
+
383
+ //! @copydoc ::boost::intrusive::bstree::container_from_iterator(const_iterator)
384
+ static const sgtree_impl &container_from_iterator(const_iterator it);
385
+
386
+ //! @copydoc ::boost::intrusive::bstree::key_comp()const
387
+ key_compare key_comp() const;
388
+
389
+ //! @copydoc ::boost::intrusive::bstree::value_comp()const
390
+ value_compare value_comp() const;
391
+
392
+ //! @copydoc ::boost::intrusive::bstree::empty()const
393
+ bool empty() const;
394
+
395
+ //! @copydoc ::boost::intrusive::bstree::size()const
396
+ size_type size() const;
397
+
398
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
399
+
400
+ //! @copydoc ::boost::intrusive::bstree::swap
614
401
  void swap(sgtree_impl& other)
615
402
  {
616
403
  //This can throw
617
- using std::swap;
618
- swap(priv_comp(), priv_comp());
619
- swap(priv_alpha_traits(), priv_alpha_traits());
620
- swap(data_.max_tree_size_, other.data_.max_tree_size_);
621
- //These can't throw
622
- node_algorithms::swap_tree(this->priv_header_ptr(), other.priv_header_ptr());
623
- if(constant_time_size){
624
- size_type backup = this->priv_size_traits().get_size();
625
- this->priv_size_traits().set_size(other.priv_size_traits().get_size());
626
- other.priv_size_traits().set_size(backup);
627
- }
404
+ this->tree_type::swap(static_cast<tree_type&>(other));
405
+ ::boost::adl_move_swap(this->get_alpha_traits(), other.get_alpha_traits());
628
406
  }
629
407
 
630
- //! <b>Requires</b>: value must be an lvalue
631
- //!
632
- //! <b>Effects</b>: Inserts value into the tree before the upper bound.
633
- //!
634
- //! <b>Complexity</b>: Average complexity for insert element is at
635
- //! most logarithmic.
636
- //!
637
- //! <b>Throws</b>: If the internal value_compare ordering function throws. Strong guarantee.
638
- //!
639
- //! <b>Note</b>: Does not affect the validity of iterators and references.
640
- //! No copy-constructors are called.
408
+ //! @copydoc ::boost::intrusive::bstree::clone_from(const bstree&,Cloner,Disposer)
409
+ //! Additional notes: it also copies the alpha factor from the source container.
410
+ template <class Cloner, class Disposer>
411
+ void clone_from(const sgtree_impl &src, Cloner cloner, Disposer disposer)
412
+ {
413
+ tree_type::clone_from(src, cloner, disposer);
414
+ this->get_alpha_traits() = src.get_alpha_traits();
415
+ }
416
+
417
+ //! @copydoc ::boost::intrusive::bstree::clone_from(bstree&&,Cloner,Disposer)
418
+ //! Additional notes: it also copies the alpha factor from the source container.
419
+ template <class Cloner, class Disposer>
420
+ void clone_from(BOOST_RV_REF(sgtree_impl) src, Cloner cloner, Disposer disposer)
421
+ {
422
+ tree_type::clone_from(BOOST_MOVE_BASE(tree_type, src), cloner, disposer);
423
+ this->get_alpha_traits() = ::boost::move(src.get_alpha_traits());
424
+ }
425
+
426
+ //! @copydoc ::boost::intrusive::bstree::insert_equal(reference)
641
427
  iterator insert_equal(reference value)
642
428
  {
643
- detail::key_nodeptr_comp<value_compare, sgtree_impl>
644
- key_node_comp(priv_comp(), this);
645
- node_ptr to_insert(get_real_value_traits().to_node_ptr(value));
429
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
646
430
  if(safemode_or_autounlink)
647
431
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
648
- std::size_t max_tree_size = (std::size_t)data_.max_tree_size_;
432
+ std::size_t max_tree_size = (std::size_t)this->max_tree_size_;
649
433
  node_ptr p = node_algorithms::insert_equal_upper_bound
650
- (this->priv_header_ptr(), to_insert, key_node_comp
434
+ (this->tree_type::header_ptr(), to_insert, this->key_node_comp(this->key_comp())
651
435
  , (size_type)this->size(), this->get_h_alpha_func(), max_tree_size);
652
- this->priv_size_traits().increment();
653
- data_.max_tree_size_ = (size_type)max_tree_size;
654
- return iterator(p, this);
436
+ this->tree_type::sz_traits().increment();
437
+ this->max_tree_size_ = (size_type)max_tree_size;
438
+ return iterator(p, this->priv_value_traits_ptr());
655
439
  }
656
440
 
657
- //! <b>Requires</b>: value must be an lvalue, and "hint" must be
658
- //! a valid iterator.
659
- //!
660
- //! <b>Effects</b>: Inserts x into the tree, using "hint" as a hint to
661
- //! where it will be inserted. If "hint" is the upper_bound
662
- //! the insertion takes constant time (two comparisons in the worst case)
663
- //!
664
- //! <b>Complexity</b>: Logarithmic in general, but it is amortized
665
- //! constant time if t is inserted immediately before hint.
666
- //!
667
- //! <b>Throws</b>: Nothing.
668
- //!
669
- //! <b>Note</b>: Does not affect the validity of iterators and references.
670
- //! No copy-constructors are called.
441
+ //! @copydoc ::boost::intrusive::bstree::insert_equal(const_iterator,reference)
671
442
  iterator insert_equal(const_iterator hint, reference value)
672
443
  {
673
- detail::key_nodeptr_comp<value_compare, sgtree_impl>
674
- key_node_comp(priv_comp(), this);
675
- node_ptr to_insert(get_real_value_traits().to_node_ptr(value));
444
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
676
445
  if(safemode_or_autounlink)
677
446
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
678
- std::size_t max_tree_size = (std::size_t)data_.max_tree_size_;
447
+ std::size_t max_tree_size = (std::size_t)this->max_tree_size_;
679
448
  node_ptr p = node_algorithms::insert_equal
680
- (this->priv_header_ptr(), hint.pointed_node(), to_insert, key_node_comp
449
+ ( this->tree_type::header_ptr(), hint.pointed_node(), to_insert, this->key_node_comp(this->key_comp())
681
450
  , (std::size_t)this->size(), this->get_h_alpha_func(), max_tree_size);
682
- this->priv_size_traits().increment();
683
- data_.max_tree_size_ = (size_type)max_tree_size;
684
- return iterator(p, this);
451
+ this->tree_type::sz_traits().increment();
452
+ this->max_tree_size_ = (size_type)max_tree_size;
453
+ return iterator(p, this->priv_value_traits_ptr());
685
454
  }
686
455
 
687
- //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
688
- //! of type value_type.
689
- //!
690
- //! <b>Effects</b>: Inserts a each element of a range into the tree
691
- //! before the upper bound of the key of each element.
692
- //!
693
- //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
694
- //! size of the range. However, it is linear in N if the range is already sorted
695
- //! by value_comp().
696
- //!
697
- //! <b>Throws</b>: Nothing.
698
- //!
699
- //! <b>Note</b>: Does not affect the validity of iterators and references.
700
- //! No copy-constructors are called.
456
+ //! @copydoc ::boost::intrusive::bstree::insert_equal(Iterator,Iterator)
701
457
  template<class Iterator>
702
458
  void insert_equal(Iterator b, Iterator e)
703
459
  {
@@ -706,285 +462,126 @@ class sgtree_impl
706
462
  this->insert_equal(iend, *b);
707
463
  }
708
464
 
709
- //! <b>Requires</b>: value must be an lvalue
710
- //!
711
- //! <b>Effects</b>: Inserts value into the tree if the value
712
- //! is not already present.
713
- //!
714
- //! <b>Complexity</b>: Average complexity for insert element is at
715
- //! most logarithmic.
716
- //!
717
- //! <b>Throws</b>: Nothing.
718
- //!
719
- //! <b>Note</b>: Does not affect the validity of iterators and references.
720
- //! No copy-constructors are called.
465
+ //! @copydoc ::boost::intrusive::bstree::insert_unique(reference)
721
466
  std::pair<iterator, bool> insert_unique(reference value)
722
467
  {
723
468
  insert_commit_data commit_data;
724
- std::pair<iterator, bool> ret = insert_unique_check(value, priv_comp(), commit_data);
469
+ std::pair<iterator, bool> ret = this->insert_unique_check
470
+ (key_of_value()(value), this->key_comp(), commit_data);
725
471
  if(!ret.second)
726
472
  return ret;
727
- return std::pair<iterator, bool> (insert_unique_commit(value, commit_data), true);
473
+ return std::pair<iterator, bool> (this->insert_unique_commit(value, commit_data), true);
728
474
  }
729
475
 
730
- //! <b>Requires</b>: value must be an lvalue, and "hint" must be
731
- //! a valid iterator
732
- //!
733
- //! <b>Effects</b>: Tries to insert x into the tree, using "hint" as a hint
734
- //! to where it will be inserted.
735
- //!
736
- //! <b>Complexity</b>: Logarithmic in general, but it is amortized
737
- //! constant time (two comparisons in the worst case)
738
- //! if t is inserted immediately before hint.
739
- //!
740
- //! <b>Throws</b>: Nothing.
741
- //!
742
- //! <b>Note</b>: Does not affect the validity of iterators and references.
743
- //! No copy-constructors are called.
476
+ //! @copydoc ::boost::intrusive::bstree::insert_unique(const_iterator,reference)
744
477
  iterator insert_unique(const_iterator hint, reference value)
745
478
  {
746
479
  insert_commit_data commit_data;
747
- std::pair<iterator, bool> ret = insert_unique_check(hint, value, priv_comp(), commit_data);
480
+ std::pair<iterator, bool> ret = this->insert_unique_check
481
+ (hint, key_of_value()(value), this->key_comp(), commit_data);
748
482
  if(!ret.second)
749
483
  return ret.first;
750
- return insert_unique_commit(value, commit_data);
751
- }
752
-
753
- //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
754
- //! of type value_type.
755
- //!
756
- //! <b>Effects</b>: Tries to insert each element of a range into the tree.
757
- //!
758
- //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
759
- //! size of the range. However, it is linear in N if the range is already sorted
760
- //! by value_comp().
761
- //!
762
- //! <b>Throws</b>: Nothing.
763
- //!
764
- //! <b>Note</b>: Does not affect the validity of iterators and references.
765
- //! No copy-constructors are called.
766
- template<class Iterator>
767
- void insert_unique(Iterator b, Iterator e)
768
- {
769
- if(this->empty()){
770
- iterator iend(this->end());
771
- for (; b != e; ++b)
772
- this->insert_unique(iend, *b);
773
- }
774
- else{
775
- for (; b != e; ++b)
776
- this->insert_unique(*b);
777
- }
484
+ return this->insert_unique_commit(value, commit_data);
778
485
  }
779
486
 
780
- //! <b>Requires</b>: key_value_comp must be a comparison function that induces
781
- //! the same strict weak ordering as value_compare. The difference is that
782
- //! key_value_comp compares an arbitrary key with the contained values.
783
- //!
784
- //! <b>Effects</b>: Checks if a value can be inserted in the container, using
785
- //! a user provided key instead of the value itself.
786
- //!
787
- //! <b>Returns</b>: If there is an equivalent value
788
- //! returns a pair containing an iterator to the already present value
789
- //! and false. If the value can be inserted returns true in the returned
790
- //! pair boolean and fills "commit_data" that is meant to be used with
791
- //! the "insert_commit" function.
792
- //!
793
- //! <b>Complexity</b>: Average complexity is at most logarithmic.
794
- //!
795
- //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
796
- //!
797
- //! <b>Notes</b>: This function is used to improve performance when constructing
798
- //! a value_type is expensive: if there is an equivalent value
799
- //! the constructed object must be discarded. Many times, the part of the
800
- //! node that is used to impose the order is much cheaper to construct
801
- //! than the value_type and this function offers the possibility to use that
802
- //! part to check if the insertion will be successful.
803
- //!
804
- //! If the check is successful, the user can construct the value_type and use
805
- //! "insert_commit" to insert the object in constant-time. This gives a total
806
- //! logarithmic complexity to the insertion: check(O(log(N)) + commit(O(1)).
807
- //!
808
- //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
809
- //! objects are inserted or erased from the container.
810
- template<class KeyType, class KeyValueCompare>
487
+ //! @copydoc ::boost::intrusive::bstree::insert_unique_check(const KeyType&,KeyTypeKeyCompare,insert_commit_data&)
488
+ template<class KeyType, class KeyTypeKeyCompare>
811
489
  std::pair<iterator, bool> insert_unique_check
812
- (const KeyType &key, KeyValueCompare key_value_comp, insert_commit_data &commit_data)
490
+ (const KeyType &key, KeyTypeKeyCompare comp, insert_commit_data &commit_data)
813
491
  {
814
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
815
- comp(key_value_comp, this);
816
492
  std::pair<node_ptr, bool> ret =
817
- (node_algorithms::insert_unique_check
818
- (this->priv_header_ptr(), key, comp, commit_data));
819
- return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
493
+ node_algorithms::insert_unique_check
494
+ (this->tree_type::header_ptr(), key, this->key_node_comp(comp), commit_data);
495
+ return std::pair<iterator, bool>(iterator(ret.first, this->priv_value_traits_ptr()), ret.second);
820
496
  }
821
497
 
822
- //! <b>Requires</b>: key_value_comp must be a comparison function that induces
823
- //! the same strict weak ordering as value_compare. The difference is that
824
- //! key_value_comp compares an arbitrary key with the contained values.
825
- //!
826
- //! <b>Effects</b>: Checks if a value can be inserted in the container, using
827
- //! a user provided key instead of the value itself, using "hint"
828
- //! as a hint to where it will be inserted.
829
- //!
830
- //! <b>Returns</b>: If there is an equivalent value
831
- //! returns a pair containing an iterator to the already present value
832
- //! and false. If the value can be inserted returns true in the returned
833
- //! pair boolean and fills "commit_data" that is meant to be used with
834
- //! the "insert_commit" function.
835
- //!
836
- //! <b>Complexity</b>: Logarithmic in general, but it's amortized
837
- //! constant time if t is inserted immediately before hint.
838
- //!
839
- //! <b>Throws</b>: If the key_value_comp ordering function throws. Strong guarantee.
840
- //!
841
- //! <b>Notes</b>: This function is used to improve performance when constructing
842
- //! a value_type is expensive: if there is an equivalent value
843
- //! the constructed object must be discarded. Many times, the part of the
844
- //! constructing that is used to impose the order is much cheaper to construct
845
- //! than the value_type and this function offers the possibility to use that key
846
- //! to check if the insertion will be successful.
847
- //!
848
- //! If the check is successful, the user can construct the value_type and use
849
- //! "insert_commit" to insert the object in constant-time. This can give a total
850
- //! constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
851
- //!
852
- //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
853
- //! objects are inserted or erased from the container.
854
- template<class KeyType, class KeyValueCompare>
498
+ //! @copydoc ::boost::intrusive::bstree::insert_unique_check(const_iterator,const KeyType&,KeyTypeKeyCompare,insert_commit_data&)
499
+ template<class KeyType, class KeyTypeKeyCompare>
855
500
  std::pair<iterator, bool> insert_unique_check
856
501
  (const_iterator hint, const KeyType &key
857
- ,KeyValueCompare key_value_comp, insert_commit_data &commit_data)
502
+ ,KeyTypeKeyCompare comp, insert_commit_data &commit_data)
858
503
  {
859
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
860
- comp(key_value_comp, this);
861
504
  std::pair<node_ptr, bool> ret =
862
- (node_algorithms::insert_unique_check
863
- (this->priv_header_ptr(), hint.pointed_node(), key, comp, commit_data));
864
- return std::pair<iterator, bool>(iterator(ret.first, this), ret.second);
505
+ node_algorithms::insert_unique_check
506
+ (this->tree_type::header_ptr(), hint.pointed_node(), key, this->key_node_comp(comp), commit_data);
507
+ return std::pair<iterator, bool>(iterator(ret.first, this->priv_value_traits_ptr()), ret.second);
865
508
  }
866
509
 
867
- //! <b>Requires</b>: value must be an lvalue of type value_type. commit_data
868
- //! must have been obtained from a previous call to "insert_check".
869
- //! No objects should have been inserted or erased from the container between
870
- //! the "insert_check" that filled "commit_data" and the call to "insert_commit".
871
- //!
872
- //! <b>Effects</b>: Inserts the value in the avl_set using the information obtained
873
- //! from the "commit_data" that a previous "insert_check" filled.
874
- //!
875
- //! <b>Returns</b>: An iterator to the newly inserted object.
876
- //!
877
- //! <b>Complexity</b>: Constant time.
878
- //!
879
- //! <b>Throws</b>: Nothing.
880
- //!
881
- //! <b>Notes</b>: This function has only sense if a "insert_check" has been
882
- //! previously executed to fill "commit_data". No value should be inserted or
883
- //! erased between the "insert_check" and "insert_commit" calls.
510
+ //! @copydoc ::boost::intrusive::bstree::insert_unique_commit
884
511
  iterator insert_unique_commit(reference value, const insert_commit_data &commit_data)
885
512
  {
886
- node_ptr to_insert(get_real_value_traits().to_node_ptr(value));
513
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
887
514
  if(safemode_or_autounlink)
888
515
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
889
- std::size_t max_tree_size = (std::size_t)data_.max_tree_size_;
516
+ std::size_t max_tree_size = (std::size_t)this->max_tree_size_;
890
517
  node_algorithms::insert_unique_commit
891
- ( this->priv_header_ptr(), to_insert, commit_data
518
+ ( this->tree_type::header_ptr(), to_insert, commit_data
892
519
  , (std::size_t)this->size(), this->get_h_alpha_func(), max_tree_size);
893
- this->priv_size_traits().increment();
894
- data_.max_tree_size_ = (size_type)max_tree_size;
895
- return iterator(to_insert, this);
520
+ this->tree_type::sz_traits().increment();
521
+ this->max_tree_size_ = (size_type)max_tree_size;
522
+ return iterator(to_insert, this->priv_value_traits_ptr());
896
523
  }
897
524
 
898
- //! <b>Requires</b>: value must be an lvalue, "pos" must be
899
- //! a valid iterator (or end) and must be the succesor of value
900
- //! once inserted according to the predicate
901
- //!
902
- //! <b>Effects</b>: Inserts x into the tree before "pos".
903
- //!
904
- //! <b>Complexity</b>: Constant time.
905
- //!
906
- //! <b>Throws</b>: Nothing.
907
- //!
908
- //! <b>Note</b>: This function does not check preconditions so if "pos" is not
909
- //! the successor of "value" tree ordering invariant will be broken.
910
- //! This is a low-level function to be used only for performance reasons
911
- //! by advanced users.
912
- iterator insert_before(const_iterator pos, reference value)
913
- {
914
- node_ptr to_insert(get_real_value_traits().to_node_ptr(value));
525
+ //! @copydoc ::boost::intrusive::bstree::insert_unique(Iterator,Iterator)
526
+ template<class Iterator>
527
+ void insert_unique(Iterator b, Iterator e)
528
+ {
529
+ if(this->empty()){
530
+ iterator iend(this->end());
531
+ for (; b != e; ++b)
532
+ this->insert_unique(iend, *b);
533
+ }
534
+ else{
535
+ for (; b != e; ++b)
536
+ this->insert_unique(*b);
537
+ }
538
+ }
539
+
540
+ //! @copydoc ::boost::intrusive::bstree::insert_before
541
+ iterator insert_before(const_iterator pos, reference value)
542
+ {
543
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
915
544
  if(safemode_or_autounlink)
916
545
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
917
- std::size_t max_tree_size = (std::size_t)data_.max_tree_size_;
546
+ std::size_t max_tree_size = (std::size_t)this->max_tree_size_;
918
547
  node_ptr p = node_algorithms::insert_before
919
- ( this->priv_header_ptr(), pos.pointed_node(), to_insert
548
+ ( this->tree_type::header_ptr(), pos.pointed_node(), to_insert
920
549
  , (size_type)this->size(), this->get_h_alpha_func(), max_tree_size);
921
- this->priv_size_traits().increment();
922
- data_.max_tree_size_ = (size_type)max_tree_size;
923
- return iterator(p, this);
550
+ this->tree_type::sz_traits().increment();
551
+ this->max_tree_size_ = (size_type)max_tree_size;
552
+ return iterator(p, this->priv_value_traits_ptr());
924
553
  }
925
554
 
926
- //! <b>Requires</b>: value must be an lvalue, and it must be no less
927
- //! than the greatest inserted key
928
- //!
929
- //! <b>Effects</b>: Inserts x into the tree in the last position.
930
- //!
931
- //! <b>Complexity</b>: Constant time.
932
- //!
933
- //! <b>Throws</b>: Nothing.
934
- //!
935
- //! <b>Note</b>: This function does not check preconditions so if value is
936
- //! less than the greatest inserted key tree ordering invariant will be broken.
937
- //! This function is slightly more efficient than using "insert_before".
938
- //! This is a low-level function to be used only for performance reasons
939
- //! by advanced users.
555
+ //! @copydoc ::boost::intrusive::bstree::push_back
940
556
  void push_back(reference value)
941
557
  {
942
- node_ptr to_insert(get_real_value_traits().to_node_ptr(value));
558
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
943
559
  if(safemode_or_autounlink)
944
560
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
945
- std::size_t max_tree_size = (std::size_t)data_.max_tree_size_;
561
+ std::size_t max_tree_size = (std::size_t)this->max_tree_size_;
946
562
  node_algorithms::push_back
947
- ( this->priv_header_ptr(), to_insert
563
+ ( this->tree_type::header_ptr(), to_insert
948
564
  , (size_type)this->size(), this->get_h_alpha_func(), max_tree_size);
949
- this->priv_size_traits().increment();
950
- data_.max_tree_size_ = (size_type)max_tree_size;
565
+ this->tree_type::sz_traits().increment();
566
+ this->max_tree_size_ = (size_type)max_tree_size;
951
567
  }
952
568
 
953
- //! <b>Requires</b>: value must be an lvalue, and it must be no greater
954
- //! than the minimum inserted key
955
- //!
956
- //! <b>Effects</b>: Inserts x into the tree in the first position.
957
- //!
958
- //! <b>Complexity</b>: Constant time.
959
- //!
960
- //! <b>Throws</b>: Nothing.
961
- //!
962
- //! <b>Note</b>: This function does not check preconditions so if value is
963
- //! greater than the minimum inserted key tree ordering invariant will be broken.
964
- //! This function is slightly more efficient than using "insert_before".
965
- //! This is a low-level function to be used only for performance reasons
966
- //! by advanced users.
569
+ //! @copydoc ::boost::intrusive::bstree::push_front
967
570
  void push_front(reference value)
968
571
  {
969
- node_ptr to_insert(get_real_value_traits().to_node_ptr(value));
572
+ node_ptr to_insert(this->get_value_traits().to_node_ptr(value));
970
573
  if(safemode_or_autounlink)
971
574
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(node_algorithms::unique(to_insert));
972
- std::size_t max_tree_size = (std::size_t)data_.max_tree_size_;
575
+ std::size_t max_tree_size = (std::size_t)this->max_tree_size_;
973
576
  node_algorithms::push_front
974
- ( this->priv_header_ptr(), to_insert
577
+ ( this->tree_type::header_ptr(), to_insert
975
578
  , (size_type)this->size(), this->get_h_alpha_func(), max_tree_size);
976
- this->priv_size_traits().increment();
977
- data_.max_tree_size_ = (size_type)max_tree_size;
579
+ this->tree_type::sz_traits().increment();
580
+ this->max_tree_size_ = (size_type)max_tree_size;
978
581
  }
979
582
 
980
- //! <b>Effects</b>: Erases the element pointed to by pos.
981
- //!
982
- //! <b>Complexity</b>: Average complexity for erase element is constant time.
983
- //!
984
- //! <b>Throws</b>: Nothing.
985
- //!
986
- //! <b>Note</b>: Invalidates the iterators (but not the references)
987
- //! to the erased elements. No destructors are called.
583
+
584
+ //! @copydoc ::boost::intrusive::bstree::erase(const_iterator)
988
585
  iterator erase(const_iterator i)
989
586
  {
990
587
  const_iterator ret(i);
@@ -992,59 +589,30 @@ class sgtree_impl
992
589
  node_ptr to_erase(i.pointed_node());
993
590
  if(safemode_or_autounlink)
994
591
  BOOST_INTRUSIVE_SAFE_HOOK_DEFAULT_ASSERT(!node_algorithms::unique(to_erase));
995
- std::size_t max_tree_size = data_.max_tree_size_;
592
+ std::size_t max_tree_size = this->max_tree_size_;
996
593
  node_algorithms::erase
997
- ( this->priv_header_ptr(), to_erase, (std::size_t)this->size()
594
+ ( this->tree_type::header_ptr(), to_erase, (std::size_t)this->size()
998
595
  , max_tree_size, this->get_alpha_by_max_size_func());
999
- data_.max_tree_size_ = (size_type)max_tree_size;
1000
- this->priv_size_traits().decrement();
596
+ this->max_tree_size_ = (size_type)max_tree_size;
597
+ this->tree_type::sz_traits().decrement();
1001
598
  if(safemode_or_autounlink)
1002
599
  node_algorithms::init(to_erase);
1003
600
  return ret.unconst();
1004
601
  }
1005
602
 
1006
- //! <b>Effects</b>: Erases the range pointed to by b end e.
1007
- //!
1008
- //! <b>Complexity</b>: Average complexity for erase range is at most
1009
- //! O(log(size() + N)), where N is the number of elements in the range.
1010
- //!
1011
- //! <b>Throws</b>: Nothing.
1012
- //!
1013
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1014
- //! to the erased elements. No destructors are called.
603
+ //! @copydoc ::boost::intrusive::bstree::erase(const_iterator,const_iterator)
1015
604
  iterator erase(const_iterator b, const_iterator e)
1016
605
  { size_type n; return private_erase(b, e, n); }
1017
606
 
1018
- //! <b>Effects</b>: Erases all the elements with the given value.
1019
- //!
1020
- //! <b>Returns</b>: The number of erased elements.
1021
- //!
1022
- //! <b>Complexity</b>: O(log(size() + N).
1023
- //!
1024
- //! <b>Throws</b>: Nothing.
1025
- //!
1026
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1027
- //! to the erased elements. No destructors are called.
1028
- size_type erase(const_reference value)
1029
- { return this->erase(value, priv_comp()); }
607
+ //! @copydoc ::boost::intrusive::bstree::erase(const key_type &)
608
+ size_type erase(const key_type &key)
609
+ { return this->erase(key, this->key_comp()); }
1030
610
 
1031
- //! <b>Effects</b>: Erases all the elements with the given key.
1032
- //! according to the comparison functor "comp".
1033
- //!
1034
- //! <b>Returns</b>: The number of erased elements.
1035
- //!
1036
- //! <b>Complexity</b>: O(log(size() + N).
1037
- //!
1038
- //! <b>Throws</b>: Nothing.
1039
- //!
1040
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1041
- //! to the erased elements. No destructors are called.
1042
- template<class KeyType, class KeyValueCompare>
1043
- size_type erase(const KeyType& key, KeyValueCompare comp
1044
- /// @cond
1045
- , typename detail::enable_if_c<!detail::is_convertible<KeyValueCompare, const_iterator>::value >::type * = 0
1046
- /// @endcond
1047
- )
611
+ //! @copydoc ::boost::intrusive::bstree::erase(const KeyType&,KeyTypeKeyCompare)
612
+ template<class KeyType, class KeyTypeKeyCompare>
613
+ BOOST_INTRUSIVE_DOC1ST(size_type
614
+ , typename detail::disable_if_convertible<KeyTypeKeyCompare BOOST_INTRUSIVE_I const_iterator BOOST_INTRUSIVE_I size_type>::type)
615
+ erase(const KeyType& key, KeyTypeKeyCompare comp)
1048
616
  {
1049
617
  std::pair<iterator,iterator> p = this->equal_range(key, comp);
1050
618
  size_type n;
@@ -1052,23 +620,13 @@ class sgtree_impl
1052
620
  return n;
1053
621
  }
1054
622
 
1055
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1056
- //!
1057
- //! <b>Effects</b>: Erases the element pointed to by pos.
1058
- //! Disposer::operator()(pointer) is called for the removed element.
1059
- //!
1060
- //! <b>Complexity</b>: Average complexity for erase element is constant time.
1061
- //!
1062
- //! <b>Throws</b>: Nothing.
1063
- //!
1064
- //! <b>Note</b>: Invalidates the iterators
1065
- //! to the erased elements.
623
+ //! @copydoc ::boost::intrusive::bstree::erase_and_dispose(const_iterator,Disposer)
1066
624
  template<class Disposer>
1067
625
  iterator erase_and_dispose(const_iterator i, Disposer disposer)
1068
626
  {
1069
627
  node_ptr to_erase(i.pointed_node());
1070
628
  iterator ret(this->erase(i));
1071
- disposer(get_real_value_traits().to_value_ptr(to_erase));
629
+ disposer(this->get_value_traits().to_value_ptr(to_erase));
1072
630
  return ret;
1073
631
  }
1074
632
 
@@ -1078,64 +636,26 @@ class sgtree_impl
1078
636
  { return this->erase_and_dispose(const_iterator(i), disposer); }
1079
637
  #endif
1080
638
 
1081
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1082
- //!
1083
- //! <b>Effects</b>: Erases the range pointed to by b end e.
1084
- //! Disposer::operator()(pointer) is called for the removed elements.
1085
- //!
1086
- //! <b>Complexity</b>: Average complexity for erase range is at most
1087
- //! O(log(size() + N)), where N is the number of elements in the range.
1088
- //!
1089
- //! <b>Throws</b>: Nothing.
1090
- //!
1091
- //! <b>Note</b>: Invalidates the iterators
1092
- //! to the erased elements.
639
+ //! @copydoc ::boost::intrusive::bstree::erase_and_dispose(const_iterator,const_iterator,Disposer)
1093
640
  template<class Disposer>
1094
641
  iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer)
1095
642
  { size_type n; return private_erase(b, e, n, disposer); }
1096
643
 
1097
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1098
- //!
1099
- //! <b>Effects</b>: Erases all the elements with the given value.
1100
- //! Disposer::operator()(pointer) is called for the removed elements.
1101
- //!
1102
- //! <b>Returns</b>: The number of erased elements.
1103
- //!
1104
- //! <b>Complexity</b>: O(log(size() + N).
1105
- //!
1106
- //! <b>Throws</b>: Nothing.
1107
- //!
1108
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1109
- //! to the erased elements. No destructors are called.
644
+ //! @copydoc ::boost::intrusive::bstree::erase_and_dispose(const key_type &, Disposer)
1110
645
  template<class Disposer>
1111
- size_type erase_and_dispose(const_reference value, Disposer disposer)
646
+ size_type erase_and_dispose(const key_type &key, Disposer disposer)
1112
647
  {
1113
- std::pair<iterator,iterator> p = this->equal_range(value);
648
+ std::pair<iterator,iterator> p = this->equal_range(key);
1114
649
  size_type n;
1115
650
  private_erase(p.first, p.second, n, disposer);
1116
651
  return n;
1117
652
  }
1118
653
 
1119
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1120
- //!
1121
- //! <b>Effects</b>: Erases all the elements with the given key.
1122
- //! according to the comparison functor "comp".
1123
- //! Disposer::operator()(pointer) is called for the removed elements.
1124
- //!
1125
- //! <b>Returns</b>: The number of erased elements.
1126
- //!
1127
- //! <b>Complexity</b>: O(log(size() + N).
1128
- //!
1129
- //! <b>Throws</b>: Nothing.
1130
- //!
1131
- //! <b>Note</b>: Invalidates the iterators
1132
- //! to the erased elements.
1133
- template<class KeyType, class KeyValueCompare, class Disposer>
1134
- size_type erase_and_dispose(const KeyType& key, KeyValueCompare comp, Disposer disposer
1135
- /// @cond
1136
- , typename detail::enable_if_c<!detail::is_convertible<KeyValueCompare, const_iterator>::value >::type * = 0
1137
- /// @endcond
1138
- )
654
+ //! @copydoc ::boost::intrusive::bstree::erase_and_dispose(const KeyType&,KeyTypeKeyCompare,Disposer)
655
+ template<class KeyType, class KeyTypeKeyCompare, class Disposer>
656
+ BOOST_INTRUSIVE_DOC1ST(size_type
657
+ , typename detail::disable_if_convertible<KeyTypeKeyCompare BOOST_INTRUSIVE_I const_iterator BOOST_INTRUSIVE_I size_type>::type)
658
+ erase_and_dispose(const KeyType& key, KeyTypeKeyCompare comp, Disposer disposer)
1139
659
  {
1140
660
  std::pair<iterator,iterator> p = this->equal_range(key, comp);
1141
661
  size_type n;
@@ -1143,535 +663,150 @@ class sgtree_impl
1143
663
  return n;
1144
664
  }
1145
665
 
1146
- //! <b>Effects</b>: Erases all of the elements.
1147
- //!
1148
- //! <b>Complexity</b>: Linear to the number of elements on the container.
1149
- //! if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
1150
- //!
1151
- //! <b>Throws</b>: Nothing.
1152
- //!
1153
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1154
- //! to the erased elements. No destructors are called.
666
+ //! @copydoc ::boost::intrusive::bstree::clear
1155
667
  void clear()
1156
668
  {
1157
- if(safemode_or_autounlink){
1158
- this->clear_and_dispose(detail::null_disposer());
1159
- }
1160
- else{
1161
- node_algorithms::init_header(this->priv_header_ptr());
1162
- this->priv_size_traits().set_size(0);
1163
- }
669
+ tree_type::clear();
670
+ this->max_tree_size_ = 0;
1164
671
  }
1165
672
 
1166
- //! <b>Effects</b>: Erases all of the elements calling disposer(p) for
1167
- //! each node to be erased.
1168
- //! <b>Complexity</b>: Average complexity for is at most O(log(size() + N)),
1169
- //! where N is the number of elements in the container.
1170
- //!
1171
- //! <b>Throws</b>: Nothing.
1172
- //!
1173
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1174
- //! to the erased elements. Calls N times to disposer functor.
673
+ //! @copydoc ::boost::intrusive::bstree::clear_and_dispose
1175
674
  template<class Disposer>
1176
675
  void clear_and_dispose(Disposer disposer)
1177
676
  {
1178
- node_algorithms::clear_and_dispose(this->priv_header_ptr()
1179
- , detail::node_disposer<Disposer, sgtree_impl>(disposer, this));
1180
- this->priv_size_traits().set_size(0);
677
+ tree_type::clear_and_dispose(disposer);
678
+ this->max_tree_size_ = 0;
1181
679
  }
1182
680
 
1183
- //! <b>Effects</b>: Returns the number of contained elements with the given value
1184
- //!
1185
- //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
1186
- //! to number of objects with the given value.
1187
- //!
1188
- //! <b>Throws</b>: Nothing.
1189
- size_type count(const_reference value) const
1190
- { return this->count(value, priv_comp()); }
681
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
682
+ //! @copydoc ::boost::intrusive::bstree::count(const key_type &)const
683
+ size_type count(const key_type &key) const;
1191
684
 
1192
- //! <b>Effects</b>: Returns the number of contained elements with the given key
1193
- //!
1194
- //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
1195
- //! to number of objects with the given key.
1196
- //!
1197
- //! <b>Throws</b>: Nothing.
1198
- template<class KeyType, class KeyValueCompare>
1199
- size_type count(const KeyType &key, KeyValueCompare comp) const
1200
- {
1201
- std::pair<const_iterator, const_iterator> ret = this->equal_range(key, comp);
1202
- return std::distance(ret.first, ret.second);
1203
- }
685
+ //! @copydoc ::boost::intrusive::bstree::count(const KeyType&,KeyTypeKeyCompare)const
686
+ template<class KeyType, class KeyTypeKeyCompare>
687
+ size_type count(const KeyType& key, KeyTypeKeyCompare comp) const;
1204
688
 
1205
- //! <b>Effects</b>: Returns an iterator to the first element whose
1206
- //! key is not less than k or end() if that element does not exist.
1207
- //!
1208
- //! <b>Complexity</b>: Logarithmic.
1209
- //!
1210
- //! <b>Throws</b>: Nothing.
1211
- iterator lower_bound(const_reference value)
1212
- { return this->lower_bound(value, priv_comp()); }
689
+ //! @copydoc ::boost::intrusive::bstree::lower_bound(const key_type &)
690
+ iterator lower_bound(const key_type &key);
1213
691
 
1214
- //! <b>Effects</b>: Returns an iterator to the first element whose
1215
- //! key is not less than k or end() if that element does not exist.
1216
- //!
1217
- //! <b>Complexity</b>: Logarithmic.
1218
- //!
1219
- //! <b>Throws</b>: Nothing.
1220
- const_iterator lower_bound(const_reference value) const
1221
- { return this->lower_bound(value, priv_comp()); }
692
+ //! @copydoc ::boost::intrusive::bstree::lower_bound(const KeyType&,KeyTypeKeyCompare)
693
+ template<class KeyType, class KeyTypeKeyCompare>
694
+ iterator lower_bound(const KeyType& key, KeyTypeKeyCompare comp);
1222
695
 
1223
- //! <b>Effects</b>: Returns an iterator to the first element whose
1224
- //! key is not less than k or end() if that element does not exist.
1225
- //!
1226
- //! <b>Complexity</b>: Logarithmic.
1227
- //!
1228
- //! <b>Throws</b>: Nothing.
1229
- template<class KeyType, class KeyValueCompare>
1230
- iterator lower_bound(const KeyType &key, KeyValueCompare comp)
1231
- {
1232
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1233
- key_node_comp(comp, this);
1234
- return iterator(node_algorithms::lower_bound
1235
- (this->priv_header_ptr(), key, key_node_comp), this);
1236
- }
696
+ //! @copydoc ::boost::intrusive::bstree::lower_bound(const key_type &)const
697
+ const_iterator lower_bound(const key_type &key) const;
1237
698
 
1238
- //! <b>Effects</b>: Returns a const iterator to the first element whose
1239
- //! key is not less than k or end() if that element does not exist.
1240
- //!
1241
- //! <b>Complexity</b>: Logarithmic.
1242
- //!
1243
- //! <b>Throws</b>: Nothing.
1244
- template<class KeyType, class KeyValueCompare>
1245
- const_iterator lower_bound(const KeyType &key, KeyValueCompare comp) const
1246
- {
1247
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1248
- key_node_comp(comp, this);
1249
- return const_iterator(node_algorithms::lower_bound
1250
- (this->priv_header_ptr(), key, key_node_comp), this);
1251
- }
699
+ //! @copydoc ::boost::intrusive::bstree::lower_bound(const KeyType&,KeyTypeKeyCompare)const
700
+ template<class KeyType, class KeyTypeKeyCompare>
701
+ const_iterator lower_bound(const KeyType& key, KeyTypeKeyCompare comp) const;
1252
702
 
1253
- //! <b>Effects</b>: Returns an iterator to the first element whose
1254
- //! key is greater than k or end() if that element does not exist.
1255
- //!
1256
- //! <b>Complexity</b>: Logarithmic.
1257
- //!
1258
- //! <b>Throws</b>: Nothing.
1259
- iterator upper_bound(const_reference value)
1260
- { return this->upper_bound(value, priv_comp()); }
703
+ //! @copydoc ::boost::intrusive::bstree::upper_bound(const key_type &)
704
+ iterator upper_bound(const key_type &key);
1261
705
 
1262
- //! <b>Effects</b>: Returns an iterator to the first element whose
1263
- //! key is greater than k according to comp or end() if that element
1264
- //! does not exist.
1265
- //!
1266
- //! <b>Complexity</b>: Logarithmic.
1267
- //!
1268
- //! <b>Throws</b>: Nothing.
1269
- template<class KeyType, class KeyValueCompare>
1270
- iterator upper_bound(const KeyType &key, KeyValueCompare comp)
1271
- {
1272
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1273
- key_node_comp(comp, this);
1274
- return iterator(node_algorithms::upper_bound
1275
- (this->priv_header_ptr(), key, key_node_comp), this);
1276
- }
706
+ //! @copydoc ::boost::intrusive::bstree::upper_bound(const KeyType&,KeyTypeKeyCompare)
707
+ template<class KeyType, class KeyTypeKeyCompare>
708
+ iterator upper_bound(const KeyType& key, KeyTypeKeyCompare comp);
1277
709
 
1278
- //! <b>Effects</b>: Returns an iterator to the first element whose
1279
- //! key is greater than k or end() if that element does not exist.
1280
- //!
1281
- //! <b>Complexity</b>: Logarithmic.
1282
- //!
1283
- //! <b>Throws</b>: Nothing.
1284
- const_iterator upper_bound(const_reference value) const
1285
- { return this->upper_bound(value, priv_comp()); }
710
+ //! @copydoc ::boost::intrusive::bstree::upper_bound(const key_type &)const
711
+ const_iterator upper_bound(const key_type &key) const;
1286
712
 
1287
- //! <b>Effects</b>: Returns an iterator to the first element whose
1288
- //! key is greater than k according to comp or end() if that element
1289
- //! does not exist.
1290
- //!
1291
- //! <b>Complexity</b>: Logarithmic.
1292
- //!
1293
- //! <b>Throws</b>: Nothing.
1294
- template<class KeyType, class KeyValueCompare>
1295
- const_iterator upper_bound(const KeyType &key, KeyValueCompare comp) const
1296
- {
1297
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1298
- key_node_comp(comp, this);
1299
- return const_iterator(node_algorithms::upper_bound
1300
- (this->priv_header_ptr(), key, key_node_comp), this);
1301
- }
713
+ //! @copydoc ::boost::intrusive::bstree::upper_bound(const KeyType&,KeyTypeKeyCompare)const
714
+ template<class KeyType, class KeyTypeKeyCompare>
715
+ const_iterator upper_bound(const KeyType& key, KeyTypeKeyCompare comp) const;
1302
716
 
1303
- //! <b>Effects</b>: Finds an iterator to the first element whose key is
1304
- //! k or end() if that element does not exist.
1305
- //!
1306
- //! <b>Complexity</b>: Logarithmic.
1307
- //!
1308
- //! <b>Throws</b>: Nothing.
1309
- iterator find(const_reference value)
1310
- { return this->find(value, priv_comp()); }
717
+ //! @copydoc ::boost::intrusive::bstree::find(const key_type &)
718
+ iterator find(const key_type &key);
1311
719
 
1312
- //! <b>Effects</b>: Finds an iterator to the first element whose key is
1313
- //! k or end() if that element does not exist.
1314
- //!
1315
- //! <b>Complexity</b>: Logarithmic.
1316
- //!
1317
- //! <b>Throws</b>: Nothing.
1318
- template<class KeyType, class KeyValueCompare>
1319
- iterator find(const KeyType &key, KeyValueCompare comp)
1320
- {
1321
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1322
- key_node_comp(comp, this);
1323
- return iterator
1324
- (node_algorithms::find(this->priv_header_ptr(), key, key_node_comp), this);
1325
- }
720
+ //! @copydoc ::boost::intrusive::bstree::find(const KeyType&,KeyTypeKeyCompare)
721
+ template<class KeyType, class KeyTypeKeyCompare>
722
+ iterator find(const KeyType& key, KeyTypeKeyCompare comp);
1326
723
 
1327
- //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
1328
- //! k or end() if that element does not exist.
1329
- //!
1330
- //! <b>Complexity</b>: Logarithmic.
1331
- //!
1332
- //! <b>Throws</b>: Nothing.
1333
- const_iterator find(const_reference value) const
1334
- { return this->find(value, priv_comp()); }
724
+ //! @copydoc ::boost::intrusive::bstree::find(const key_type &)const
725
+ const_iterator find(const key_type &key) const;
1335
726
 
1336
- //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
1337
- //! k or end() if that element does not exist.
1338
- //!
1339
- //! <b>Complexity</b>: Logarithmic.
1340
- //!
1341
- //! <b>Throws</b>: Nothing.
1342
- template<class KeyType, class KeyValueCompare>
1343
- const_iterator find(const KeyType &key, KeyValueCompare comp) const
1344
- {
1345
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1346
- key_node_comp(comp, this);
1347
- return const_iterator
1348
- (node_algorithms::find(this->priv_header_ptr(), key, key_node_comp), this);
1349
- }
727
+ //! @copydoc ::boost::intrusive::bstree::find(const KeyType&,KeyTypeKeyCompare)const
728
+ template<class KeyType, class KeyTypeKeyCompare>
729
+ const_iterator find(const KeyType& key, KeyTypeKeyCompare comp) const;
1350
730
 
1351
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
1352
- //! an empty range that indicates the position where those elements would be
1353
- //! if they there is no elements with key k.
1354
- //!
1355
- //! <b>Complexity</b>: Logarithmic.
1356
- //!
1357
- //! <b>Throws</b>: Nothing.
1358
- std::pair<iterator,iterator> equal_range(const_reference value)
1359
- { return this->equal_range(value, priv_comp()); }
731
+ //! @copydoc ::boost::intrusive::bstree::equal_range(const key_type &)
732
+ std::pair<iterator,iterator> equal_range(const key_type &key);
1360
733
 
1361
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
1362
- //! an empty range that indicates the position where those elements would be
1363
- //! if they there is no elements with key k.
1364
- //!
1365
- //! <b>Complexity</b>: Logarithmic.
1366
- //!
1367
- //! <b>Throws</b>: Nothing.
1368
- template<class KeyType, class KeyValueCompare>
1369
- std::pair<iterator,iterator> equal_range(const KeyType &key, KeyValueCompare comp)
1370
- {
1371
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1372
- key_node_comp(comp, this);
1373
- std::pair<node_ptr, node_ptr> ret
1374
- (node_algorithms::equal_range(this->priv_header_ptr(), key, key_node_comp));
1375
- return std::pair<iterator, iterator>(iterator(ret.first, this), iterator(ret.second, this));
1376
- }
734
+ //! @copydoc ::boost::intrusive::bstree::equal_range(const KeyType&,KeyTypeKeyCompare)
735
+ template<class KeyType, class KeyTypeKeyCompare>
736
+ std::pair<iterator,iterator> equal_range(const KeyType& key, KeyTypeKeyCompare comp);
1377
737
 
1378
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
1379
- //! an empty range that indicates the position where those elements would be
1380
- //! if they there is no elements with key k.
1381
- //!
1382
- //! <b>Complexity</b>: Logarithmic.
1383
- //!
1384
- //! <b>Throws</b>: Nothing.
738
+ //! @copydoc ::boost::intrusive::bstree::equal_range(const key_type &)const
1385
739
  std::pair<const_iterator, const_iterator>
1386
- equal_range(const_reference value) const
1387
- { return this->equal_range(value, priv_comp()); }
740
+ equal_range(const key_type &key) const;
1388
741
 
1389
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
1390
- //! an empty range that indicates the position where those elements would be
1391
- //! if they there is no elements with key k.
1392
- //!
1393
- //! <b>Complexity</b>: Logarithmic.
1394
- //!
1395
- //! <b>Throws</b>: Nothing.
1396
- template<class KeyType, class KeyValueCompare>
742
+ //! @copydoc ::boost::intrusive::bstree::equal_range(const KeyType&,KeyTypeKeyCompare)const
743
+ template<class KeyType, class KeyTypeKeyCompare>
1397
744
  std::pair<const_iterator, const_iterator>
1398
- equal_range(const KeyType &key, KeyValueCompare comp) const
1399
- {
1400
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1401
- key_node_comp(comp, this);
1402
- std::pair<node_ptr, node_ptr> ret
1403
- (node_algorithms::equal_range(this->priv_header_ptr(), key, key_node_comp));
1404
- return std::pair<const_iterator, const_iterator>(const_iterator(ret.first, this), const_iterator(ret.second, this));
1405
- }
745
+ equal_range(const KeyType& key, KeyTypeKeyCompare comp) const;
1406
746
 
1407
- //! <b>Requires</b>: 'lower_value' must not be greater than 'upper_value'. If
1408
- //! 'lower_value' == 'upper_value', ('left_closed' || 'right_closed') must be false.
1409
- //!
1410
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1411
- //!
1412
- //! first = lower_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise
1413
- //!
1414
- //! second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) otherwise
1415
- //!
1416
- //! <b>Complexity</b>: Logarithmic.
1417
- //!
1418
- //! <b>Throws</b>: If the predicate throws.
1419
- //!
1420
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1421
- //! and lower_bound for lower_value and upper_value.
747
+ //! @copydoc ::boost::intrusive::bstree::bounded_range(const key_type &,const key_type &,bool,bool)
1422
748
  std::pair<iterator,iterator> bounded_range
1423
- (const_reference lower_value, const_reference upper_value, bool left_closed, bool right_closed)
1424
- { return this->bounded_range(lower_value, upper_value, priv_comp(), left_closed, right_closed); }
1425
-
1426
- //! <b>Requires</b>: KeyValueCompare is a function object that induces a strict weak
1427
- //! ordering compatible with the strict weak ordering used to create the
1428
- //! the tree.
1429
- //! 'lower_key' must not be greater than 'upper_key' according to 'comp'. If
1430
- //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be false.
1431
- //!
1432
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1433
- //!
1434
- //! first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
1435
- //!
1436
- //! second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) otherwise
1437
- //!
1438
- //! <b>Complexity</b>: Logarithmic.
1439
- //!
1440
- //! <b>Throws</b>: If "comp" throws.
1441
- //!
1442
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1443
- //! and lower_bound for lower_key and upper_key.
1444
- template<class KeyType, class KeyValueCompare>
749
+ (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed);
750
+
751
+ //! @copydoc ::boost::intrusive::bstree::bounded_range(const KeyType&,const KeyType&,KeyTypeKeyCompare,bool,bool)
752
+ template<class KeyType, class KeyTypeKeyCompare>
1445
753
  std::pair<iterator,iterator> bounded_range
1446
- (const KeyType &lower_key, const KeyType &upper_key, KeyValueCompare comp, bool left_closed, bool right_closed)
1447
- {
1448
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1449
- key_node_comp(comp, this);
1450
- std::pair<node_ptr, node_ptr> ret
1451
- (node_algorithms::bounded_range
1452
- (this->priv_header_ptr(), lower_key, upper_key, key_node_comp, left_closed, right_closed));
1453
- return std::pair<iterator, iterator>(iterator(ret.first, this), iterator(ret.second, this));
1454
- }
754
+ (const KeyType& lower_key, const KeyType& upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed);
1455
755
 
1456
- //! <b>Requires</b>: 'lower_value' must not be greater than 'upper_value'. If
1457
- //! 'lower_value' == 'upper_value', ('left_closed' || 'right_closed') must be false.
1458
- //!
1459
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1460
- //!
1461
- //! first = lower_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise
1462
- //!
1463
- //! second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) otherwise
1464
- //!
1465
- //! <b>Complexity</b>: Logarithmic.
1466
- //!
1467
- //! <b>Throws</b>: If the predicate throws.
1468
- //!
1469
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1470
- //! and lower_bound for lower_value and upper_value.
1471
- std::pair<const_iterator,const_iterator> bounded_range
1472
- (const_reference lower_value, const_reference upper_value, bool left_closed, bool right_closed) const
1473
- { return this->bounded_range(lower_value, upper_value, priv_comp(), left_closed, right_closed); }
1474
-
1475
- //! <b>Requires</b>: KeyValueCompare is a function object that induces a strict weak
1476
- //! ordering compatible with the strict weak ordering used to create the
1477
- //! the tree.
1478
- //! 'lower_key' must not be greater than 'upper_key' according to 'comp'. If
1479
- //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be false.
1480
- //!
1481
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1482
- //!
1483
- //! first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
1484
- //!
1485
- //! second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) otherwise
1486
- //!
1487
- //! <b>Complexity</b>: Logarithmic.
1488
- //!
1489
- //! <b>Throws</b>: If "comp" throws.
1490
- //!
1491
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1492
- //! and lower_bound for lower_key and upper_key.
1493
- template<class KeyType, class KeyValueCompare>
1494
- std::pair<const_iterator,const_iterator> bounded_range
1495
- (const KeyType &lower_key, const KeyType &upper_key, KeyValueCompare comp, bool left_closed, bool right_closed) const
1496
- {
1497
- detail::key_nodeptr_comp<KeyValueCompare, sgtree_impl>
1498
- key_node_comp(comp, this);
1499
- std::pair<node_ptr, node_ptr> ret
1500
- (node_algorithms::bounded_range
1501
- (this->priv_header_ptr(), lower_key, upper_key, key_node_comp, left_closed, right_closed));
1502
- return std::pair<const_iterator, const_iterator>(const_iterator(ret.first, this), const_iterator(ret.second, this));
1503
- }
756
+ //! @copydoc ::boost::intrusive::bstree::bounded_range(const key_type &,const key_type &,bool,bool)const
757
+ std::pair<const_iterator, const_iterator>
758
+ bounded_range(const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed) const;
1504
759
 
1505
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1506
- //! Cloner should yield to nodes equivalent to the original nodes.
1507
- //!
1508
- //! <b>Effects</b>: Erases all the elements from *this
1509
- //! calling Disposer::operator()(pointer), clones all the
1510
- //! elements from src calling Cloner::operator()(const_reference )
1511
- //! and inserts them on *this. Copies the predicate from the source container.
1512
- //!
1513
- //! If cloner throws, all cloned elements are unlinked and disposed
1514
- //! calling Disposer::operator()(pointer).
1515
- //!
1516
- //! <b>Complexity</b>: Linear to erased plus inserted elements.
1517
- //!
1518
- //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
1519
- template <class Cloner, class Disposer>
1520
- void clone_from(const sgtree_impl &src, Cloner cloner, Disposer disposer)
1521
- {
1522
- this->clear_and_dispose(disposer);
1523
- if(!src.empty()){
1524
- detail::exception_disposer<sgtree_impl, Disposer>
1525
- rollback(*this, disposer);
1526
- node_algorithms::clone
1527
- (src.priv_header_ptr()
1528
- ,this->priv_header_ptr()
1529
- ,detail::node_cloner<Cloner, sgtree_impl>(cloner, this)
1530
- ,detail::node_disposer<Disposer, sgtree_impl>(disposer, this));
1531
- this->priv_size_traits().set_size(src.priv_size_traits().get_size());
1532
- this->priv_comp() = src.priv_comp();
1533
- rollback.release();
1534
- }
1535
- }
760
+ //! @copydoc ::boost::intrusive::bstree::bounded_range(const KeyType&,const KeyType&,KeyTypeKeyCompare,bool,bool)const
761
+ template<class KeyType, class KeyTypeKeyCompare>
762
+ std::pair<const_iterator, const_iterator> bounded_range
763
+ (const KeyType& lower_key, const KeyType& upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed) const;
1536
764
 
1537
- //! <b>Effects</b>: Unlinks the leftmost node from the tree.
1538
- //!
1539
- //! <b>Complexity</b>: Average complexity is constant time.
1540
- //!
1541
- //! <b>Throws</b>: Nothing.
1542
- //!
1543
- //! <b>Notes</b>: This function breaks the tree and the tree can
1544
- //! only be used for more unlink_leftmost_without_rebalance calls.
1545
- //! This function is normally used to achieve a step by step
1546
- //! controlled destruction of the tree.
1547
- pointer unlink_leftmost_without_rebalance()
1548
- {
1549
- node_ptr to_be_disposed(node_algorithms::unlink_leftmost_without_rebalance
1550
- (this->priv_header_ptr()));
1551
- if(!to_be_disposed)
1552
- return 0;
1553
- this->priv_size_traits().decrement();
1554
- if(safemode_or_autounlink)//If this is commented does not work with normal_link
1555
- node_algorithms::init(to_be_disposed);
1556
- return get_real_value_traits().to_value_ptr(to_be_disposed);
1557
- }
765
+ //! @copydoc ::boost::intrusive::bstree::s_iterator_to(reference)
766
+ static iterator s_iterator_to(reference value);
1558
767
 
1559
- //! <b>Requires</b>: replace_this must be a valid iterator of *this
1560
- //! and with_this must not be inserted in any tree.
1561
- //!
1562
- //! <b>Effects</b>: Replaces replace_this in its position in the
1563
- //! tree with with_this. The tree does not need to be rebalanced.
1564
- //!
1565
- //! <b>Complexity</b>: Constant.
1566
- //!
1567
- //! <b>Throws</b>: Nothing.
1568
- //!
1569
- //! <b>Note</b>: This function will break container ordering invariants if
1570
- //! with_this is not equivalent to *replace_this according to the
1571
- //! ordering rules. This function is faster than erasing and inserting
1572
- //! the node, since no rebalancing or comparison is needed.
1573
- void replace_node(iterator replace_this, reference with_this)
1574
- {
1575
- node_algorithms::replace_node( get_real_value_traits().to_node_ptr(*replace_this)
1576
- , this->priv_header_ptr()
1577
- , get_real_value_traits().to_node_ptr(with_this));
1578
- if(safemode_or_autounlink)
1579
- node_algorithms::init(replace_this.pointed_node());
1580
- }
768
+ //! @copydoc ::boost::intrusive::bstree::s_iterator_to(const_reference)
769
+ static const_iterator s_iterator_to(const_reference value);
1581
770
 
1582
- //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1583
- //! appropriate type. Otherwise the behavior is undefined.
1584
- //!
1585
- //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
1586
- //! that points to the value
1587
- //!
1588
- //! <b>Complexity</b>: Constant.
1589
- //!
1590
- //! <b>Throws</b>: Nothing.
1591
- //!
1592
- //! <b>Note</b>: This static function is available only if the <i>value traits</i>
1593
- //! is stateless.
1594
- static iterator s_iterator_to(reference value)
1595
- {
1596
- BOOST_STATIC_ASSERT((!stateful_value_traits));
1597
- return iterator (value_traits::to_node_ptr(value), 0);
1598
- }
771
+ //! @copydoc ::boost::intrusive::bstree::iterator_to(reference)
772
+ iterator iterator_to(reference value);
1599
773
 
1600
- //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1601
- //! appropriate type. Otherwise the behavior is undefined.
1602
- //!
1603
- //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
1604
- //! set that points to the value
1605
- //!
1606
- //! <b>Complexity</b>: Constant.
1607
- //!
1608
- //! <b>Throws</b>: Nothing.
1609
- //!
1610
- //! <b>Note</b>: This static function is available only if the <i>value traits</i>
1611
- //! is stateless.
1612
- static const_iterator s_iterator_to(const_reference value)
1613
- {
1614
- BOOST_STATIC_ASSERT((!stateful_value_traits));
1615
- return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), 0);
1616
- }
774
+ //! @copydoc ::boost::intrusive::bstree::iterator_to(const_reference)const
775
+ const_iterator iterator_to(const_reference value) const;
1617
776
 
1618
- //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1619
- //! appropriate type. Otherwise the behavior is undefined.
1620
- //!
1621
- //! <b>Effects</b>: Returns: a valid iterator i belonging to the set
1622
- //! that points to the value
1623
- //!
1624
- //! <b>Complexity</b>: Constant.
1625
- //!
1626
- //! <b>Throws</b>: Nothing.
1627
- iterator iterator_to(reference value)
1628
- { return iterator (value_traits::to_node_ptr(value), this); }
777
+ //! @copydoc ::boost::intrusive::bstree::init_node(reference)
778
+ static void init_node(reference value);
1629
779
 
1630
- //! <b>Requires</b>: value must be an lvalue and shall be in a set of
1631
- //! appropriate type. Otherwise the behavior is undefined.
1632
- //!
1633
- //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
1634
- //! set that points to the value
1635
- //!
1636
- //! <b>Complexity</b>: Constant.
1637
- //!
1638
- //! <b>Throws</b>: Nothing.
1639
- const_iterator iterator_to(const_reference value) const
1640
- { return const_iterator (value_traits::to_node_ptr(const_cast<reference> (value)), this); }
780
+ //! @copydoc ::boost::intrusive::bstree::unlink_leftmost_without_rebalance
781
+ pointer unlink_leftmost_without_rebalance();
1641
782
 
1642
- //! <b>Requires</b>: value shall not be in a tree.
1643
- //!
1644
- //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
1645
- //! state.
1646
- //!
1647
- //! <b>Throws</b>: Nothing.
1648
- //!
1649
- //! <b>Complexity</b>: Constant time.
1650
- //!
1651
- //! <b>Note</b>: This function puts the hook in the well-known default state
1652
- //! used by auto_unlink and safe hooks.
1653
- static void init_node(reference value)
1654
- { node_algorithms::init(value_traits::to_node_ptr(value)); }
783
+ //! @copydoc ::boost::intrusive::bstree::replace_node
784
+ void replace_node(iterator replace_this, reference with_this);
1655
785
 
1656
- //! <b>Effects</b>: Rebalances the tree.
1657
- //!
1658
- //! <b>Throws</b>: Nothing.
1659
- //!
1660
- //! <b>Complexity</b>: Linear.
1661
- void rebalance()
1662
- { node_algorithms::rebalance(this->priv_header_ptr()); }
786
+ //! @copydoc ::boost::intrusive::bstree::remove_node
787
+ void remove_node(reference value);
1663
788
 
1664
- //! <b>Requires</b>: old_root is a node of a tree.
1665
- //!
1666
- //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
1667
- //!
1668
- //! <b>Returns</b>: The new root of the subtree.
1669
- //!
1670
- //! <b>Throws</b>: Nothing.
1671
- //!
1672
- //! <b>Complexity</b>: Linear to the elements in the subtree.
1673
- iterator rebalance_subtree(iterator root)
1674
- { return iterator(node_algorithms::rebalance_subtree(root.pointed_node()), this); }
789
+ //! @copydoc ::boost::intrusive::bstree::rebalance
790
+ void rebalance();
791
+
792
+ //! @copydoc ::boost::intrusive::bstree::rebalance_subtree
793
+ iterator rebalance_subtree(iterator root);
794
+
795
+ friend bool operator< (const sgtree_impl &x, const sgtree_impl &y);
796
+
797
+ friend bool operator==(const sgtree_impl &x, const sgtree_impl &y);
798
+
799
+ friend bool operator!= (const sgtree_impl &x, const sgtree_impl &y);
800
+
801
+ friend bool operator>(const sgtree_impl &x, const sgtree_impl &y);
802
+
803
+ friend bool operator<=(const sgtree_impl &x, const sgtree_impl &y);
804
+
805
+ friend bool operator>=(const sgtree_impl &x, const sgtree_impl &y);
806
+
807
+ friend void swap(sgtree_impl &x, sgtree_impl &y);
808
+
809
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1675
810
 
1676
811
  //! <b>Returns</b>: The balance factor (alpha) used in this tree
1677
812
  //!
@@ -1679,7 +814,7 @@ class sgtree_impl
1679
814
  //!
1680
815
  //! <b>Complexity</b>: Constant.
1681
816
  float balance_factor() const
1682
- { return this->priv_alpha(); }
817
+ { return this->get_alpha_traits().get_alpha(); }
1683
818
 
1684
819
  //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
1685
820
  //!
@@ -1691,47 +826,19 @@ class sgtree_impl
1691
826
  //! <b>Complexity</b>: Linear to the elements in the subtree.
1692
827
  void balance_factor(float new_alpha)
1693
828
  {
1694
- BOOST_INTRUSIVE_INVARIANT_ASSERT((new_alpha > 0.5f && new_alpha < 1.0f));
1695
- if(new_alpha < 0.5f && new_alpha >= 1.0f) return;
1696
-
1697
829
  //The alpha factor CAN't be changed if the fixed, floating operation-less
1698
830
  //1/sqrt(2) alpha factor option is activated
1699
831
  BOOST_STATIC_ASSERT((floating_point));
1700
- float old_alpha = this->priv_alpha();
1701
- this->priv_alpha(new_alpha);
1702
-
1703
- if(new_alpha < old_alpha){
1704
- data_.max_tree_size_ = this->size();
1705
- this->rebalance();
832
+ BOOST_INTRUSIVE_INVARIANT_ASSERT((new_alpha > 0.5f && new_alpha < 1.0f));
833
+ if(new_alpha >= 0.5f && new_alpha < 1.0f){
834
+ float old_alpha = this->get_alpha_traits().get_alpha();
835
+ this->get_alpha_traits().set_alpha(new_alpha);
836
+ if(new_alpha < old_alpha){
837
+ this->max_tree_size_ = this->size();
838
+ this->rebalance();
839
+ }
1706
840
  }
1707
841
  }
1708
- /*
1709
- //! <b>Effects</b>: removes x from a tree of the appropriate type. It has no effect,
1710
- //! if x is not in such a tree.
1711
- //!
1712
- //! <b>Throws</b>: Nothing.
1713
- //!
1714
- //! <b>Complexity</b>: Constant time.
1715
- //!
1716
- //! <b>Note</b>: This static function is only usable with the "safe mode"
1717
- //! hook and non-constant time size lists. Otherwise, the user must use
1718
- //! the non-static "erase(reference )" member. If the user calls
1719
- //! this function with a non "safe mode" or constant time size list
1720
- //! a compilation error will be issued.
1721
- template<class T>
1722
- static void remove_node(T& value)
1723
- {
1724
- //This function is only usable for safe mode hooks and non-constant
1725
- //time lists.
1726
- //BOOST_STATIC_ASSERT((!(safemode_or_autounlink && constant_time_size)));
1727
- BOOST_STATIC_ASSERT((!constant_time_size));
1728
- BOOST_STATIC_ASSERT((boost::is_convertible<T, value_type>::value));
1729
- node_ptr to_remove(value_traits::to_node_ptr(value));
1730
- node_algorithms::unlink_and_rebalance(to_remove);
1731
- if(safemode_or_autounlink)
1732
- node_algorithms::init(to_remove);
1733
- }
1734
- */
1735
842
 
1736
843
  /// @cond
1737
844
  private:
@@ -1750,257 +857,125 @@ class sgtree_impl
1750
857
  return b.unconst();
1751
858
  }
1752
859
  /// @endcond
1753
-
1754
- private:
1755
- static sgtree_impl &priv_container_from_end_iterator(const const_iterator &end_iterator)
1756
- {
1757
- header_plus_alpha *r = detail::parent_from_member<header_plus_alpha, node>
1758
- ( boost::intrusive::detail::to_raw_pointer(end_iterator.pointed_node()), &header_plus_alpha::header_);
1759
- node_plus_pred_t *n = detail::parent_from_member
1760
- <node_plus_pred_t, header_plus_alpha>(r, &node_plus_pred_t::header_plus_alpha_);
1761
- data_t *d = detail::parent_from_member<data_t, node_plus_pred_t>(n, &data_t::node_plus_pred_);
1762
- sgtree_impl *scapegoat = detail::parent_from_member<sgtree_impl, data_t>(d, &sgtree_impl::data_);
1763
- return *scapegoat;
1764
- }
1765
-
1766
- static sgtree_impl &priv_container_from_iterator(const const_iterator &it)
1767
- { return priv_container_from_end_iterator(it.end_iterator_from_it()); }
1768
860
  };
1769
861
 
1770
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1771
- template<class T, class ...Options>
1772
- #else
1773
- template<class Config>
1774
- #endif
1775
- inline bool operator<
1776
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1777
- (const sgtree_impl<T, Options...> &x, const sgtree_impl<T, Options...> &y)
1778
- #else
1779
- (const sgtree_impl<Config> &x, const sgtree_impl<Config> &y)
1780
- #endif
1781
- { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
1782
-
1783
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1784
- template<class T, class ...Options>
1785
- #else
1786
- template<class Config>
1787
- #endif
1788
- bool operator==
1789
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1790
- (const sgtree_impl<T, Options...> &x, const sgtree_impl<T, Options...> &y)
1791
- #else
1792
- (const sgtree_impl<Config> &x, const sgtree_impl<Config> &y)
1793
- #endif
1794
- {
1795
- typedef sgtree_impl<Config> tree_type;
1796
- typedef typename tree_type::const_iterator const_iterator;
1797
-
1798
- if(tree_type::constant_time_size && x.size() != y.size()){
1799
- return false;
1800
- }
1801
- const_iterator end1 = x.end();
1802
- const_iterator i1 = x.begin();
1803
- const_iterator i2 = y.begin();
1804
- if(tree_type::constant_time_size){
1805
- while (i1 != end1 && *i1 == *i2) {
1806
- ++i1;
1807
- ++i2;
1808
- }
1809
- return i1 == end1;
1810
- }
1811
- else{
1812
- const_iterator end2 = y.end();
1813
- while (i1 != end1 && i2 != end2 && *i1 == *i2) {
1814
- ++i1;
1815
- ++i2;
1816
- }
1817
- return i1 == end1 && i2 == end2;
1818
- }
1819
- }
1820
-
1821
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1822
- template<class T, class ...Options>
1823
- #else
1824
- template<class Config>
1825
- #endif
1826
- inline bool operator!=
1827
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1828
- (const sgtree_impl<T, Options...> &x, const sgtree_impl<T, Options...> &y)
1829
- #else
1830
- (const sgtree_impl<Config> &x, const sgtree_impl<Config> &y)
1831
- #endif
1832
- { return !(x == y); }
1833
862
 
1834
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1835
- template<class T, class ...Options>
1836
- #else
1837
- template<class Config>
1838
- #endif
1839
- inline bool operator>
1840
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1841
- (const sgtree_impl<T, Options...> &x, const sgtree_impl<T, Options...> &y)
1842
- #else
1843
- (const sgtree_impl<Config> &x, const sgtree_impl<Config> &y)
1844
- #endif
1845
- { return y < x; }
1846
-
1847
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1848
- template<class T, class ...Options>
1849
- #else
1850
- template<class Config>
1851
- #endif
1852
- inline bool operator<=
1853
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1854
- (const sgtree_impl<T, Options...> &x, const sgtree_impl<T, Options...> &y)
1855
- #else
1856
- (const sgtree_impl<Config> &x, const sgtree_impl<Config> &y)
1857
- #endif
1858
- { return !(y < x); }
1859
-
1860
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1861
- template<class T, class ...Options>
1862
- #else
1863
- template<class Config>
1864
- #endif
1865
- inline bool operator>=
1866
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1867
- (const sgtree_impl<T, Options...> &x, const sgtree_impl<T, Options...> &y)
1868
- #else
1869
- (const sgtree_impl<Config> &x, const sgtree_impl<Config> &y)
1870
- #endif
1871
- { return !(x < y); }
1872
-
1873
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
863
+ //! Helper metafunction to define a \c sgtree that yields to the same type when the
864
+ //! same options (either explicitly or implicitly) are used.
865
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1874
866
  template<class T, class ...Options>
1875
867
  #else
1876
- template<class Config>
868
+ template<class T, class O1 = void, class O2 = void
869
+ , class O3 = void, class O4 = void
870
+ , class O5 = void, class O6 = void>
1877
871
  #endif
1878
- inline void swap
1879
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1880
- (sgtree_impl<T, Options...> &x, sgtree_impl<T, Options...> &y)
1881
- #else
1882
- (sgtree_impl<Config> &x, sgtree_impl<Config> &y)
1883
- #endif
1884
- { x.swap(y); }
1885
-
1886
- /// @cond
1887
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1888
- template<class T, class O1 = none, class O2 = none
1889
- , class O3 = none, class O4 = none>
1890
- #else
1891
- template<class T, class ...Options>
1892
- #endif
1893
- struct make_sgtree_opt
872
+ struct make_sgtree
1894
873
  {
874
+ /// @cond
1895
875
  typedef typename pack_options
1896
- < sg_set_defaults<T>,
876
+ < sgtree_defaults,
1897
877
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1898
- O1, O2, O3, O4
878
+ O1, O2, O3, O4, O5, O6
1899
879
  #else
1900
880
  Options...
1901
881
  #endif
1902
882
  >::type packed_options;
883
+
1903
884
  typedef typename detail::get_value_traits
1904
- <T, typename packed_options::value_traits>::type value_traits;
885
+ <T, typename packed_options::proto_value_traits>::type value_traits;
1905
886
 
1906
- typedef sg_setopt
887
+ typedef sgtree_impl
1907
888
  < value_traits
889
+ , typename packed_options::key_of_value
1908
890
  , typename packed_options::compare
1909
891
  , typename packed_options::size_type
1910
892
  , packed_options::floating_point
1911
- > type;
1912
- };
1913
- /// @endcond
1914
-
1915
- //! Helper metafunction to define a \c sgtree that yields to the same type when the
1916
- //! same options (either explicitly or implicitly) are used.
1917
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1918
- template<class T, class ...Options>
1919
- #else
1920
- template<class T, class O1 = none, class O2 = none
1921
- , class O3 = none, class O4 = none>
1922
- #endif
1923
- struct make_sgtree
1924
- {
1925
- /// @cond
1926
- typedef sgtree_impl
1927
- < typename make_sgtree_opt<T,
1928
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1929
- O1, O2, O3, O4
1930
- #else
1931
- Options...
1932
- #endif
1933
- >::type
1934
- > implementation_defined;
893
+ , typename packed_options::header_holder_type
894
+ > implementation_defined;
1935
895
  /// @endcond
1936
896
  typedef implementation_defined type;
1937
897
  };
1938
898
 
899
+
1939
900
  #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
901
+
1940
902
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1941
- template<class T, class O1, class O2, class O3, class O4>
903
+ template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
1942
904
  #else
1943
905
  template<class T, class ...Options>
1944
906
  #endif
1945
907
  class sgtree
1946
908
  : public make_sgtree<T,
1947
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1948
- O1, O2, O3, O4
1949
- #else
1950
- Options...
1951
- #endif
909
+ #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
910
+ O1, O2, O3, O4, O5, O6
911
+ #else
912
+ Options...
913
+ #endif
1952
914
  >::type
1953
915
  {
1954
916
  typedef typename make_sgtree
1955
917
  <T,
1956
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1957
- O1, O2, O3, O4
1958
- #else
1959
- Options...
1960
- #endif
918
+ #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
919
+ O1, O2, O3, O4, O5, O6
920
+ #else
921
+ Options...
922
+ #endif
1961
923
  >::type Base;
1962
-
1963
924
  BOOST_MOVABLE_BUT_NOT_COPYABLE(sgtree)
1964
925
 
1965
926
  public:
1966
- typedef typename Base::value_compare value_compare;
927
+ typedef typename Base::key_compare key_compare;
1967
928
  typedef typename Base::value_traits value_traits;
1968
- typedef typename Base::real_value_traits real_value_traits;
1969
929
  typedef typename Base::iterator iterator;
1970
930
  typedef typename Base::const_iterator const_iterator;
931
+ typedef typename Base::reverse_iterator reverse_iterator;
932
+ typedef typename Base::const_reverse_iterator const_reverse_iterator;
1971
933
 
1972
934
  //Assert if passed value traits are compatible with the type
1973
- BOOST_STATIC_ASSERT((detail::is_same<typename real_value_traits::value_type, T>::value));
935
+ BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
1974
936
 
1975
- sgtree( const value_compare &cmp = value_compare()
1976
- , const value_traits &v_traits = value_traits())
937
+ explicit sgtree( const key_compare &cmp = key_compare()
938
+ , const value_traits &v_traits = value_traits())
1977
939
  : Base(cmp, v_traits)
1978
940
  {}
1979
941
 
1980
942
  template<class Iterator>
1981
943
  sgtree( bool unique, Iterator b, Iterator e
1982
- , const value_compare &cmp = value_compare()
944
+ , const key_compare &cmp = key_compare()
1983
945
  , const value_traits &v_traits = value_traits())
1984
946
  : Base(unique, b, e, cmp, v_traits)
1985
947
  {}
1986
948
 
1987
949
  sgtree(BOOST_RV_REF(sgtree) x)
1988
- : Base(::boost::move(static_cast<Base&>(x)))
950
+ : Base(BOOST_MOVE_BASE(Base, x))
1989
951
  {}
1990
952
 
1991
953
  sgtree& operator=(BOOST_RV_REF(sgtree) x)
1992
- { this->Base::operator=(::boost::move(static_cast<Base&>(x))); return *this; }
954
+ { return static_cast<sgtree &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
955
+
956
+ template <class Cloner, class Disposer>
957
+ void clone_from(const sgtree &src, Cloner cloner, Disposer disposer)
958
+ { Base::clone_from(src, cloner, disposer); }
959
+
960
+ template <class Cloner, class Disposer>
961
+ void clone_from(BOOST_RV_REF(sgtree) src, Cloner cloner, Disposer disposer)
962
+ { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
1993
963
 
1994
964
  static sgtree &container_from_end_iterator(iterator end_iterator)
1995
965
  { return static_cast<sgtree &>(Base::container_from_end_iterator(end_iterator)); }
1996
966
 
1997
967
  static const sgtree &container_from_end_iterator(const_iterator end_iterator)
1998
968
  { return static_cast<const sgtree &>(Base::container_from_end_iterator(end_iterator)); }
969
+
970
+ static sgtree &container_from_iterator(iterator it)
971
+ { return static_cast<sgtree &>(Base::container_from_iterator(it)); }
972
+
973
+ static const sgtree &container_from_iterator(const_iterator it)
974
+ { return static_cast<const sgtree &>(Base::container_from_iterator(it)); }
1999
975
  };
2000
976
 
2001
977
  #endif
2002
978
 
2003
-
2004
979
  } //namespace intrusive
2005
980
  } //namespace boost
2006
981