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
@@ -9,15 +9,19 @@
9
9
  // See http://www.boost.org/libs/intrusive for documentation.
10
10
  //
11
11
  /////////////////////////////////////////////////////////////////////////////
12
- #ifndef BOOST_INTRUSIVE_TRIE_SET_HPP
13
- #define BOOST_INTRUSIVE_TRIE_SET_HPP
12
+ #ifndef BOOST_INTRUSIVE_TREAP_SET_HPP
13
+ #define BOOST_INTRUSIVE_TREAP_SET_HPP
14
14
 
15
15
  #include <boost/intrusive/detail/config_begin.hpp>
16
16
  #include <boost/intrusive/intrusive_fwd.hpp>
17
17
  #include <boost/intrusive/treap.hpp>
18
18
  #include <boost/intrusive/detail/mpl.hpp>
19
- #include <boost/move/move.hpp>
20
- #include <iterator>
19
+ #include <boost/move/utility_core.hpp>
20
+ #include <boost/static_assert.hpp>
21
+
22
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
23
+ # pragma once
24
+ #endif
21
25
 
22
26
  namespace boost {
23
27
  namespace intrusive {
@@ -36,14 +40,16 @@ namespace intrusive {
36
40
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
37
41
  template<class T, class ...Options>
38
42
  #else
39
- template<class Config>
43
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, class VoidOrPrioComp, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
40
44
  #endif
41
45
  class treap_set_impl
46
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
47
+ : public treap_impl<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder>
48
+ #endif
42
49
  {
43
50
  /// @cond
44
- typedef treap_impl<Config> tree_type;
45
- //! This class is
46
- //! movable
51
+ public:
52
+ typedef treap_impl<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> tree_type;
47
53
  BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_set_impl)
48
54
 
49
55
  typedef tree_type implementation_defined;
@@ -52,6 +58,8 @@ class treap_set_impl
52
58
  public:
53
59
  typedef typename implementation_defined::value_type value_type;
54
60
  typedef typename implementation_defined::value_traits value_traits;
61
+ typedef typename implementation_defined::key_type key_type;
62
+ typedef typename implementation_defined::key_of_value key_of_value;
55
63
  typedef typename implementation_defined::pointer pointer;
56
64
  typedef typename implementation_defined::const_pointer const_pointer;
57
65
  typedef typename implementation_defined::reference reference;
@@ -59,8 +67,8 @@ class treap_set_impl
59
67
  typedef typename implementation_defined::difference_type difference_type;
60
68
  typedef typename implementation_defined::size_type size_type;
61
69
  typedef typename implementation_defined::value_compare value_compare;
62
- typedef typename implementation_defined::priority_compare priority_compare;
63
70
  typedef typename implementation_defined::key_compare key_compare;
71
+ typedef typename implementation_defined::priority_compare priority_compare;
64
72
  typedef typename implementation_defined::iterator iterator;
65
73
  typedef typename implementation_defined::const_iterator const_iterator;
66
74
  typedef typename implementation_defined::reverse_iterator reverse_iterator;
@@ -72,12 +80,7 @@ class treap_set_impl
72
80
  typedef typename implementation_defined::const_node_ptr const_node_ptr;
73
81
  typedef typename implementation_defined::node_algorithms node_algorithms;
74
82
 
75
- static const bool constant_time_size = Config::constant_time_size;
76
-
77
- /// @cond
78
- private:
79
- tree_type tree_;
80
- /// @endcond
83
+ static const bool constant_time_size = implementation_defined::constant_time_size;
81
84
 
82
85
  public:
83
86
  //! <b>Effects</b>: Constructs an empty treap_set.
@@ -86,11 +89,11 @@ class treap_set_impl
86
89
  //!
87
90
  //! <b>Throws</b>: If value_traits::node_traits::node
88
91
  //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
89
- //! or the copy constructor of the value_compare object throws.
90
- explicit treap_set_impl( const value_compare &cmp = value_compare()
92
+ //! or the copy constructor of the key_compare object throws.
93
+ explicit treap_set_impl( const key_compare &cmp = key_compare()
91
94
  , const priority_compare &pcmp = priority_compare()
92
95
  , const value_traits &v_traits = value_traits())
93
- : tree_(cmp, pcmp, v_traits)
96
+ : tree_type(cmp, pcmp, v_traits)
94
97
  {}
95
98
 
96
99
  //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
@@ -100,1265 +103,371 @@ class treap_set_impl
100
103
  //! [b, e).
101
104
  //!
102
105
  //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
103
- //! comp and otherwise N * log N, where N is std::distance(last, first).
106
+ //! comp and otherwise N * log N, where N is distance(last, first).
104
107
  //!
105
108
  //! <b>Throws</b>: If value_traits::node_traits::node
106
109
  //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
107
- //! or the copy constructor/operator() of the value_compare object throws.
110
+ //! or the copy constructor/operator() of the key_compare object throws.
108
111
  template<class Iterator>
109
112
  treap_set_impl( Iterator b, Iterator e
110
- , const value_compare &cmp = value_compare()
113
+ , const key_compare &cmp = key_compare()
111
114
  , const priority_compare &pcmp = priority_compare()
112
115
  , const value_traits &v_traits = value_traits())
113
- : tree_(true, b, e, cmp, pcmp, v_traits)
116
+ : tree_type(true, b, e, cmp, pcmp, v_traits)
114
117
  {}
115
118
 
116
119
  //! <b>Effects</b>: to-do
117
120
  //!
118
121
  treap_set_impl(BOOST_RV_REF(treap_set_impl) x)
119
- : tree_(::boost::move(x.tree_))
122
+ : tree_type(BOOST_MOVE_BASE(tree_type, x))
120
123
  {}
121
124
 
122
125
  //! <b>Effects</b>: to-do
123
126
  //!
124
127
  treap_set_impl& operator=(BOOST_RV_REF(treap_set_impl) x)
125
- { tree_ = ::boost::move(x.tree_); return *this; }
128
+ { return static_cast<treap_set_impl&>(tree_type::operator=(BOOST_MOVE_BASE(tree_type, x))); }
126
129
 
127
- //! <b>Effects</b>: Detaches all elements from this. The objects in the treap_set
128
- //! are not deleted (i.e. no destructors are called).
129
- //!
130
- //! <b>Complexity</b>: Linear to the number of elements on the container.
131
- //! if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
132
- //!
133
- //! <b>Throws</b>: Nothing.
134
- ~treap_set_impl()
135
- {}
130
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
131
+ //! @copydoc ::boost::intrusive::treap::~treap()
132
+ ~treap_set_impl();
136
133
 
137
- //! <b>Effects</b>: Returns an iterator pointing to the beginning of the treap_set.
138
- //!
139
- //! <b>Complexity</b>: Constant.
140
- //!
141
- //! <b>Throws</b>: Nothing.
142
- iterator begin()
143
- { return tree_.begin(); }
134
+ //! @copydoc ::boost::intrusive::treap::begin()
135
+ iterator begin();
144
136
 
145
- //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_set.
146
- //!
147
- //! <b>Complexity</b>: Constant.
148
- //!
149
- //! <b>Throws</b>: Nothing.
150
- const_iterator begin() const
151
- { return tree_.begin(); }
137
+ //! @copydoc ::boost::intrusive::treap::begin()const
138
+ const_iterator begin() const;
152
139
 
153
- //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_set.
154
- //!
155
- //! <b>Complexity</b>: Constant.
156
- //!
157
- //! <b>Throws</b>: Nothing.
158
- const_iterator cbegin() const
159
- { return tree_.cbegin(); }
140
+ //! @copydoc ::boost::intrusive::treap::cbegin()const
141
+ const_iterator cbegin() const;
160
142
 
161
- //! <b>Effects</b>: Returns an iterator pointing to the end of the treap_set.
162
- //!
163
- //! <b>Complexity</b>: Constant.
164
- //!
165
- //! <b>Throws</b>: Nothing.
166
- iterator end()
167
- { return tree_.end(); }
143
+ //! @copydoc ::boost::intrusive::treap::end()
144
+ iterator end();
168
145
 
169
- //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_set.
170
- //!
171
- //! <b>Complexity</b>: Constant.
172
- //!
173
- //! <b>Throws</b>: Nothing.
174
- const_iterator end() const
175
- { return tree_.end(); }
146
+ //! @copydoc ::boost::intrusive::treap::end()const
147
+ const_iterator end() const;
176
148
 
177
- //! <b>Effects</b>: Returns an iterator pointing to the highest priority object of the tree.
178
- //!
179
- //! <b>Complexity</b>: Constant.
180
- //!
181
- //! <b>Throws</b>: Nothing.
182
- iterator top()
183
- { return tree_.top(); }
149
+ //! @copydoc ::boost::intrusive::treap::cend()const
150
+ const_iterator cend() const;
184
151
 
185
- //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
186
- //!
187
- //! <b>Complexity</b>: Constant.
188
- //!
189
- //! <b>Throws</b>: Nothing.
190
- const_iterator top() const
191
- { return this->ctop(); }
152
+ //! @copydoc ::boost::intrusive::treap::rbegin()
153
+ reverse_iterator rbegin();
192
154
 
193
- //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
194
- //!
195
- //! <b>Complexity</b>: Constant.
196
- //!
197
- //! <b>Throws</b>: Nothing.
198
- const_iterator ctop() const
199
- { return tree_.ctop(); }
155
+ //! @copydoc ::boost::intrusive::treap::rbegin()const
156
+ const_reverse_iterator rbegin() const;
200
157
 
201
- //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_set.
202
- //!
203
- //! <b>Complexity</b>: Constant.
204
- //!
205
- //! <b>Throws</b>: Nothing.
206
- const_iterator cend() const
207
- { return tree_.cend(); }
158
+ //! @copydoc ::boost::intrusive::treap::crbegin()const
159
+ const_reverse_iterator crbegin() const;
208
160
 
209
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
210
- //! reversed treap_set.
211
- //!
212
- //! <b>Complexity</b>: Constant.
213
- //!
214
- //! <b>Throws</b>: Nothing.
215
- reverse_iterator rbegin()
216
- { return tree_.rbegin(); }
161
+ //! @copydoc ::boost::intrusive::treap::rend()
162
+ reverse_iterator rend();
217
163
 
218
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
219
- //! of the reversed treap_set.
220
- //!
221
- //! <b>Complexity</b>: Constant.
222
- //!
223
- //! <b>Throws</b>: Nothing.
224
- const_reverse_iterator rbegin() const
225
- { return tree_.rbegin(); }
164
+ //! @copydoc ::boost::intrusive::treap::rend()const
165
+ const_reverse_iterator rend() const;
226
166
 
227
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
228
- //! of the reversed treap_set.
229
- //!
230
- //! <b>Complexity</b>: Constant.
231
- //!
232
- //! <b>Throws</b>: Nothing.
233
- const_reverse_iterator crbegin() const
234
- { return tree_.crbegin(); }
167
+ //! @copydoc ::boost::intrusive::treap::crend()const
168
+ const_reverse_iterator crend() const;
235
169
 
236
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
237
- //! of the reversed treap_set.
238
- //!
239
- //! <b>Complexity</b>: Constant.
240
- //!
241
- //! <b>Throws</b>: Nothing.
242
- reverse_iterator rend()
243
- { return tree_.rend(); }
170
+ //! @copydoc ::boost::intrusive::treap::container_from_end_iterator(iterator)
171
+ static treap_set_impl &container_from_end_iterator(iterator end_iterator);
244
172
 
245
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
246
- //! of the reversed treap_set.
247
- //!
248
- //! <b>Complexity</b>: Constant.
249
- //!
250
- //! <b>Throws</b>: Nothing.
251
- const_reverse_iterator rend() const
252
- { return tree_.rend(); }
173
+ //! @copydoc ::boost::intrusive::treap::container_from_end_iterator(const_iterator)
174
+ static const treap_set_impl &container_from_end_iterator(const_iterator end_iterator);
253
175
 
254
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
255
- //! of the reversed treap_set.
256
- //!
257
- //! <b>Complexity</b>: Constant.
258
- //!
259
- //! <b>Throws</b>: Nothing.
260
- const_reverse_iterator crend() const
261
- { return tree_.crend(); }
176
+ //! @copydoc ::boost::intrusive::treap::container_from_iterator(iterator)
177
+ static treap_set_impl &container_from_iterator(iterator it);
262
178
 
263
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the highest priority object of the
264
- //! reversed tree.
265
- //!
266
- //! <b>Complexity</b>: Constant.
267
- //!
268
- //! <b>Throws</b>: Nothing.
269
- reverse_iterator rtop()
270
- { return tree_.rtop(); }
179
+ //! @copydoc ::boost::intrusive::treap::container_from_iterator(const_iterator)
180
+ static const treap_set_impl &container_from_iterator(const_iterator it);
271
181
 
272
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority objec
273
- //! of the reversed tree.
274
- //!
275
- //! <b>Complexity</b>: Constant.
276
- //!
277
- //! <b>Throws</b>: Nothing.
278
- const_reverse_iterator rtop() const
279
- { return tree_.crtop(); }
182
+ //! @copydoc ::boost::intrusive::treap::key_comp()const
183
+ key_compare key_comp() const;
280
184
 
281
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority object
282
- //! of the reversed tree.
283
- //!
284
- //! <b>Complexity</b>: Constant.
285
- //!
286
- //! <b>Throws</b>: Nothing.
287
- const_reverse_iterator crtop() const
288
- { return tree_.crtop(); }
185
+ //! @copydoc ::boost::intrusive::treap::value_comp()const
186
+ value_compare value_comp() const;
289
187
 
290
- //! <b>Precondition</b>: end_iterator must be a valid end iterator
291
- //! of treap_set.
292
- //!
293
- //! <b>Effects</b>: Returns a const reference to the treap_set associated to the end iterator
294
- //!
295
- //! <b>Throws</b>: Nothing.
296
- //!
297
- //! <b>Complexity</b>: Constant.
298
- static treap_set_impl &container_from_end_iterator(iterator end_iterator)
299
- {
300
- return *detail::parent_from_member<treap_set_impl, tree_type>
301
- ( &tree_type::container_from_end_iterator(end_iterator)
302
- , &treap_set_impl::tree_);
303
- }
304
-
305
- //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
306
- //! of treap_set.
307
- //!
308
- //! <b>Effects</b>: Returns a const reference to the treap_set associated to the end iterator
309
- //!
310
- //! <b>Throws</b>: Nothing.
311
- //!
312
- //! <b>Complexity</b>: Constant.
313
- static const treap_set_impl &container_from_end_iterator(const_iterator end_iterator)
314
- {
315
- return *detail::parent_from_member<treap_set_impl, tree_type>
316
- ( &tree_type::container_from_end_iterator(end_iterator)
317
- , &treap_set_impl::tree_);
318
- }
319
-
320
- //! <b>Precondition</b>: it must be a valid iterator of set.
321
- //!
322
- //! <b>Effects</b>: Returns a reference to the set associated to the iterator
323
- //!
324
- //! <b>Throws</b>: Nothing.
325
- //!
326
- //! <b>Complexity</b>: Logarithmic.
327
- static treap_set_impl &container_from_iterator(iterator it)
328
- {
329
- return *detail::parent_from_member<treap_set_impl, tree_type>
330
- ( &tree_type::container_from_iterator(it)
331
- , &treap_set_impl::tree_);
332
- }
333
-
334
- //! <b>Precondition</b>: it must be a valid const_iterator of set.
335
- //!
336
- //! <b>Effects</b>: Returns a const reference to the set associated to the iterator
337
- //!
338
- //! <b>Throws</b>: Nothing.
339
- //!
340
- //! <b>Complexity</b>: Logarithmic.
341
- static const treap_set_impl &container_from_iterator(const_iterator it)
342
- {
343
- return *detail::parent_from_member<treap_set_impl, tree_type>
344
- ( &tree_type::container_from_iterator(it)
345
- , &treap_set_impl::tree_);
346
- }
347
-
348
- //! <b>Effects</b>: Returns the key_compare object used by the treap_set.
349
- //!
350
- //! <b>Complexity</b>: Constant.
351
- //!
352
- //! <b>Throws</b>: If key_compare copy-constructor throws.
353
- key_compare key_comp() const
354
- { return tree_.value_comp(); }
188
+ //! @copydoc ::boost::intrusive::treap::empty()const
189
+ bool empty() const;
355
190
 
356
- //! <b>Effects</b>: Returns the value_compare object used by the treap_set.
357
- //!
358
- //! <b>Complexity</b>: Constant.
359
- //!
360
- //! <b>Throws</b>: If value_compare copy-constructor throws.
361
- value_compare value_comp() const
362
- { return tree_.value_comp(); }
191
+ //! @copydoc ::boost::intrusive::treap::size()const
192
+ size_type size() const;
363
193
 
364
- //! <b>Effects</b>: Returns the priority_compare object used by the treap_set.
365
- //!
366
- //! <b>Complexity</b>: Constant.
367
- //!
368
- //! <b>Throws</b>: If priority_compare copy-constructor throws.
369
- priority_compare priority_comp() const
370
- { return tree_.priority_comp(); }
194
+ //! @copydoc ::boost::intrusive::treap::swap
195
+ void swap(treap_set_impl& other);
371
196
 
372
- //! <b>Effects</b>: Returns true if the container is empty.
373
- //!
374
- //! <b>Complexity</b>: Constant.
375
- //!
376
- //! <b>Throws</b>: Nothing.
377
- bool empty() const
378
- { return tree_.empty(); }
197
+ //! @copydoc ::boost::intrusive::treap::clone_from(const treap&,Cloner,Disposer)
198
+ template <class Cloner, class Disposer>
199
+ void clone_from(const treap_set_impl &src, Cloner cloner, Disposer disposer);
379
200
 
380
- //! <b>Effects</b>: Returns the number of elements stored in the treap_set.
381
- //!
382
- //! <b>Complexity</b>: Linear to elements contained in *this if,
383
- //! constant-time size option is enabled. Constant-time otherwise.
384
- //!
385
- //! <b>Throws</b>: Nothing.
386
- size_type size() const
387
- { return tree_.size(); }
201
+ #else
388
202
 
389
- //! <b>Effects</b>: Swaps the contents of two sets.
390
- //!
391
- //! <b>Complexity</b>: Constant.
392
- //!
393
- //! <b>Throws</b>: If the swap() call for the comparison functor
394
- //! found using ADL throws. Strong guarantee.
395
- void swap(treap_set_impl& other)
396
- { tree_.swap(other.tree_); }
203
+ using tree_type::clone_from;
397
204
 
398
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
399
- //! Cloner should yield to nodes equivalent to the original nodes.
400
- //!
401
- //! <b>Effects</b>: Erases all the elements from *this
402
- //! calling Disposer::operator()(pointer), clones all the
403
- //! elements from src calling Cloner::operator()(const_reference )
404
- //! and inserts them on *this. Copies the predicate from the source container.
405
- //!
406
- //! If cloner throws, all cloned elements are unlinked and disposed
407
- //! calling Disposer::operator()(pointer).
408
- //!
409
- //! <b>Complexity</b>: Linear to erased plus inserted elements.
410
- //!
411
- //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
205
+ #endif
206
+
207
+ //! @copydoc ::boost::intrusive::treap::clone_from(treap&&,Cloner,Disposer)
412
208
  template <class Cloner, class Disposer>
413
- void clone_from(const treap_set_impl &src, Cloner cloner, Disposer disposer)
414
- { tree_.clone_from(src.tree_, cloner, disposer); }
209
+ void clone_from(BOOST_RV_REF(treap_set_impl) src, Cloner cloner, Disposer disposer)
210
+ { tree_type::clone_from(BOOST_MOVE_BASE(tree_type, src), cloner, disposer); }
415
211
 
416
- //! <b>Requires</b>: value must be an lvalue
417
- //!
418
- //! <b>Effects</b>: Tries to inserts value into the treap_set.
419
- //!
420
- //! <b>Returns</b>: If the value
421
- //! is not already present inserts it and returns a pair containing the
422
- //! iterator to the new value and true. If there is an equivalent value
423
- //! returns a pair containing an iterator to the already present value
424
- //! and false.
425
- //!
426
- //! <b>Complexity</b>: Average complexity for insert element is at
427
- //! most logarithmic.
428
- //!
429
- //! <b>Throws</b>: If the internal value_compare or priority_compare ordering function throw.
430
- //! Strong guarantee.
431
- //!
432
- //! <b>Note</b>: Does not affect the validity of iterators and references.
433
- //! No copy-constructors are called.
212
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
213
+
214
+ //! @copydoc ::boost::intrusive::treap::top()
215
+ iterator top();
216
+
217
+ //! @copydoc ::boost::intrusive::treap::top()const
218
+ const_iterator top() const;
219
+
220
+ //! @copydoc ::boost::intrusive::treap::ctop()const
221
+ const_iterator ctop() const;
222
+
223
+ //! @copydoc ::boost::intrusive::treap::rtop()
224
+ reverse_iterator rtop();
225
+
226
+ //! @copydoc ::boost::intrusive::treap::rtop()const
227
+ const_reverse_iterator rtop() const;
228
+
229
+ //! @copydoc ::boost::intrusive::treap::crtop()const
230
+ const_reverse_iterator crtop() const;
231
+
232
+ //! @copydoc ::boost::intrusive::treap::crtop() const
233
+ priority_compare priority_comp() const;
234
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
235
+
236
+ //! @copydoc ::boost::intrusive::treap::insert_unique(reference)
434
237
  std::pair<iterator, bool> insert(reference value)
435
- { return tree_.insert_unique(value); }
238
+ { return tree_type::insert_unique(value); }
436
239
 
437
- //! <b>Requires</b>: value must be an lvalue
438
- //!
439
- //! <b>Effects</b>: Tries to to insert x into the treap_set, using "hint"
440
- //! as a hint to where it will be inserted.
441
- //!
442
- //! <b>Returns</b>: An iterator that points to the position where the
443
- //! new element was inserted into the treap_set.
444
- //!
445
- //! <b>Complexity</b>: Logarithmic in general, but it's amortized
446
- //! constant time if t is inserted immediately before hint.
447
- //!
448
- //! <b>Throws</b>: If the internal value_compare or priority_compare ordering
449
- //! functions throw. Strong guarantee.
450
- //!
451
- //! <b>Note</b>: Does not affect the validity of iterators and references.
452
- //! No copy-constructors are called.
240
+ //! @copydoc ::boost::intrusive::treap::insert_unique(const_iterator,reference)
453
241
  iterator insert(const_iterator hint, reference value)
454
- { return tree_.insert_unique(hint, value); }
242
+ { return tree_type::insert_unique(hint, value); }
455
243
 
456
- //! <b>Requires</b>: key_value_comp must be a comparison function that induces
457
- //! the same strict weak ordering as value_compare.
458
- //! key_value_pcomp must be a comparison function that induces
459
- //! the same strict weak ordering as priority_compare. The difference is that
460
- //! key_value_pcomp and key_value_comp compare an arbitrary key with the contained values.
461
- //!
462
- //! <b>Effects</b>: Checks if a value can be inserted in the treap_set, using
463
- //! a user provided key instead of the value itself.
464
- //!
465
- //! <b>Returns</b>: If there is an equivalent value
466
- //! returns a pair containing an iterator to the already present value
467
- //! and false. If the value can be inserted returns true in the returned
468
- //! pair boolean and fills "commit_data" that is meant to be used with
469
- //! the "insert_commit" function.
470
- //!
471
- //! <b>Complexity</b>: Average complexity is at most logarithmic.
472
- //!
473
- //! <b>Throws</b>: If key_value_comp or key_value_pcomp ordering function throw.
474
- //! Strong guarantee.
475
- //!
476
- //! <b>Notes</b>: This function is used to improve performance when constructing
477
- //! a value_type is expensive: if there is an equivalent value
478
- //! the constructed object must be discarded. Many times, the part of the
479
- //! node that is used to impose the order is much cheaper to construct
480
- //! than the value_type and this function offers the possibility to use that
481
- //! part to check if the insertion will be successful.
482
- //!
483
- //! If the check is successful, the user can construct the value_type and use
484
- //! "insert_commit" to insert the object in constant-time. This gives a total
485
- //! logarithmic complexity to the insertion: check(O(log(N)) + commit(O(1)).
486
- //!
487
- //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
488
- //! objects are inserted or erased from the treap_set.
489
- template<class KeyType, class KeyValueCompare, class KeyValuePriorityCompare>
244
+ //! @copydoc ::boost::intrusive::treap::insert_unique_check(const KeyType&,KeyTypeKeyCompare,KeyValuePrioCompare,insert_commit_data&)
245
+ template<class KeyType, class KeyTypeKeyCompare, class KeyValuePrioCompare>
490
246
  std::pair<iterator, bool> insert_check
491
- ( const KeyType &key, KeyValueCompare key_value_comp, KeyValuePriorityCompare key_value_pcomp
247
+ ( const KeyType &key, KeyTypeKeyCompare comp, KeyValuePrioCompare key_value_pcomp
492
248
  , insert_commit_data &commit_data)
493
- { return tree_.insert_unique_check(key, key_value_comp, key_value_pcomp, commit_data); }
249
+ { return tree_type::insert_unique_check(key, comp, key_value_pcomp, commit_data); }
494
250
 
495
- //! <b>Requires</b>: key_value_comp must be a comparison function that induces
496
- //! the same strict weak ordering as value_compare.
497
- //! key_value_pcomp must be a comparison function that induces
498
- //! the same strict weak ordering as priority_compare. The difference is that
499
- //! key_value_pcomp and key_value_comp compare an arbitrary key with the contained values.
500
- //!
501
- //! <b>Effects</b>: Checks if a value can be inserted in the treap_set, using
502
- //! a user provided key instead of the value itself, using "hint"
503
- //! as a hint to where it will be inserted.
504
- //!
505
- //! <b>Returns</b>: If there is an equivalent value
506
- //! returns a pair containing an iterator to the already present value
507
- //! and false. If the value can be inserted returns true in the returned
508
- //! pair boolean and fills "commit_data" that is meant to be used with
509
- //! the "insert_commit" function.
510
- //!
511
- //! <b>Complexity</b>: Logarithmic in general, but it's amortized
512
- //! constant time if t is inserted immediately before hint.
513
- //!
514
- //! <b>Throws</b>: If key_value_comp or key_value_pcomp ordering function throw.
515
- //! Strong guarantee.
516
- //!
517
- //! <b>Notes</b>: This function is used to improve performance when constructing
518
- //! a value_type is expensive: if there is an equivalent value
519
- //! the constructed object must be discarded. Many times, the part of the
520
- //! constructing that is used to impose the order is much cheaper to construct
521
- //! than the value_type and this function offers the possibility to use that key
522
- //! to check if the insertion will be successful.
523
- //!
524
- //! If the check is successful, the user can construct the value_type and use
525
- //! "insert_commit" to insert the object in constant-time. This can give a total
526
- //! constant-time complexity to the insertion: check(O(1)) + commit(O(1)).
527
- //!
528
- //! "commit_data" remains valid for a subsequent "insert_commit" only if no more
529
- //! objects are inserted or erased from the treap_set.
530
- template<class KeyType, class KeyValueCompare, class KeyValuePriorityCompare>
251
+ //! @copydoc ::boost::intrusive::treap::insert_unique_check(const_iterator,const KeyType&,KeyTypeKeyCompare,KeyValuePrioCompare,insert_commit_data&)
252
+ template<class KeyType, class KeyTypeKeyCompare, class KeyValuePrioCompare>
531
253
  std::pair<iterator, bool> insert_check
532
254
  ( const_iterator hint, const KeyType &key
533
- , KeyValueCompare key_value_comp, KeyValuePriorityCompare key_value_pcomp
255
+ , KeyTypeKeyCompare comp, KeyValuePrioCompare key_value_pcomp
534
256
  , insert_commit_data &commit_data)
535
- { return tree_.insert_unique_check(hint, key, key_value_comp, key_value_pcomp, commit_data); }
536
-
537
- //! <b>Requires</b>: value must be an lvalue of type value_type. commit_data
538
- //! must have been obtained from a previous call to "insert_check".
539
- //! No objects should have been inserted or erased from the treap_set between
540
- //! the "insert_check" that filled "commit_data" and the call to "insert_commit".
541
- //!
542
- //! <b>Effects</b>: Inserts the value in the treap_set using the information obtained
543
- //! from the "commit_data" that a previous "insert_check" filled.
544
- //!
545
- //! <b>Returns</b>: An iterator to the newly inserted object.
546
- //!
547
- //! <b>Complexity</b>: Constant time.
548
- //!
549
- //! <b>Throws</b>: Nothing.
550
- //!
551
- //! <b>Notes</b>: This function has only sense if a "insert_check" has been
552
- //! previously executed to fill "commit_data". No value should be inserted or
553
- //! erased between the "insert_check" and "insert_commit" calls.
554
- iterator insert_commit(reference value, const insert_commit_data &commit_data)
555
- { return tree_.insert_unique_commit(value, commit_data); }
257
+ { return tree_type::insert_unique_check(hint, key, comp, key_value_pcomp, commit_data); }
556
258
 
557
- //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
558
- //! of type value_type.
559
- //!
560
- //! <b>Effects</b>: Inserts a range into the treap_set.
561
- //!
562
- //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
563
- //! size of the range. However, it is linear in N if the range is already sorted
564
- //! by value_comp().
565
- //!
566
- //! <b>Throws</b>: If the internal value_compare or priority_compare ordering function
567
- //! throw. Basic guarantee.
568
- //!
569
- //! <b>Note</b>: Does not affect the validity of iterators and references.
570
- //! No copy-constructors are called.
259
+ //! @copydoc ::boost::intrusive::treap::insert_unique(Iterator,Iterator)
571
260
  template<class Iterator>
572
261
  void insert(Iterator b, Iterator e)
573
- { tree_.insert_unique(b, e); }
262
+ { tree_type::insert_unique(b, e); }
574
263
 
575
- //! <b>Requires</b>: value must be an lvalue, "pos" must be
576
- //! a valid iterator (or end) and must be the succesor of value
577
- //! once inserted according to the predicate. "value" must not be equal to any
578
- //! inserted key according to the predicate.
579
- //!
580
- //! <b>Effects</b>: Inserts x into the treap before "pos".
581
- //!
582
- //! <b>Complexity</b>: Constant time.
583
- //!
584
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
585
- //!
586
- //! <b>Note</b>: This function does not check preconditions so if "pos" is not
587
- //! the successor of "value" treap ordering invariant will be broken.
588
- //! This is a low-level function to be used only for performance reasons
589
- //! by advanced users.
590
- iterator insert_before(const_iterator pos, reference value)
591
- { return tree_.insert_before(pos, value); }
592
-
593
- //! <b>Requires</b>: value must be an lvalue, and it must be greater than
594
- //! any inserted key according to the predicate.
595
- //!
596
- //! <b>Effects</b>: Inserts x into the treap in the last position.
597
- //!
598
- //! <b>Complexity</b>: Constant time.
599
- //!
600
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
601
- //!
602
- //! <b>Note</b>: This function does not check preconditions so if value is
603
- //! less than the greatest inserted key treap ordering invariant will be broken.
604
- //! This function is slightly more efficient than using "insert_before".
605
- //! This is a low-level function to be used only for performance reasons
606
- //! by advanced users.
607
- void push_back(reference value)
608
- { tree_.push_back(value); }
609
-
610
- //! <b>Requires</b>: value must be an lvalue, and it must be less
611
- //! than any inserted key according to the predicate.
612
- //!
613
- //! <b>Effects</b>: Inserts x into the treap in the first position.
614
- //!
615
- //! <b>Complexity</b>: Constant time.
616
- //!
617
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
618
- //!
619
- //! <b>Note</b>: This function does not check preconditions so if value is
620
- //! greater than the minimum inserted key treap ordering invariant will be broken.
621
- //! This function is slightly more efficient than using "insert_before".
622
- //! This is a low-level function to be used only for performance reasons
623
- //! by advanced users.
624
- void push_front(reference value)
625
- { tree_.push_front(value); }
626
-
627
- //! <b>Effects</b>: Erases the element pointed to by pos.
628
- //!
629
- //! <b>Complexity</b>: Average complexity is constant time.
630
- //!
631
- //! <b>Returns</b>: An iterator to the element after the erased element.
632
- //!
633
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
634
- //!
635
- //! <b>Note</b>: Invalidates the iterators (but not the references)
636
- //! to the erased elements. No destructors are called.
637
- iterator erase(const_iterator i)
638
- { return tree_.erase(i); }
264
+ //! @copydoc ::boost::intrusive::treap::insert_unique_commit
265
+ iterator insert_commit(reference value, const insert_commit_data &commit_data)
266
+ { return tree_type::insert_unique_commit(value, commit_data); }
639
267
 
640
- //! <b>Effects</b>: Erases the range pointed to by b end e.
641
- //!
642
- //! <b>Complexity</b>: Average complexity for erase range is at most
643
- //! O(log(size() + N)), where N is the number of elements in the range.
644
- //!
645
- //! <b>Returns</b>: An iterator to the element after the erased elements.
646
- //!
647
- //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
648
- //!
649
- //! <b>Note</b>: Invalidates the iterators (but not the references)
650
- //! to the erased elements. No destructors are called.
651
- iterator erase(const_iterator b, const_iterator e)
652
- { return tree_.erase(b, e); }
268
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
269
+ //! @copydoc ::boost::intrusive::treap::insert_before
270
+ iterator insert_before(const_iterator pos, reference value);
653
271
 
654
- //! <b>Effects</b>: Erases all the elements with the given value.
655
- //!
656
- //! <b>Returns</b>: The number of erased elements.
657
- //!
658
- //! <b>Complexity</b>: O(log(size()) + this->count(value)).
659
- //!
660
- //! <b>Throws</b>: If internal value_compare or priority_compare
661
- //! ordering functions throw. Basic guarantee.
662
- //!
663
- //! <b>Note</b>: Invalidates the iterators (but not the references)
664
- //! to the erased elements. No destructors are called.
665
- size_type erase(const_reference value)
666
- { return tree_.erase(value); }
272
+ //! @copydoc ::boost::intrusive::treap::push_back
273
+ void push_back(reference value);
667
274
 
668
- //! <b>Effects</b>: Erases all the elements that compare equal with
669
- //! the given key and the given comparison functor.
670
- //!
671
- //! <b>Returns</b>: The number of erased elements.
672
- //!
673
- //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
674
- //!
675
- //! <b>Throws</b>: If comp or internal priority_compare
676
- //! ordering functions throw. Basic guarantee.
677
- //!
678
- //! <b>Note</b>: Invalidates the iterators (but not the references)
679
- //! to the erased elements. No destructors are called.
680
- template<class KeyType, class KeyValueCompare>
681
- size_type erase(const KeyType& key, KeyValueCompare comp
682
- /// @cond
683
- , typename detail::enable_if_c<!detail::is_convertible<KeyValueCompare, const_iterator>::value >::type * = 0
684
- /// @endcond
685
- )
686
- { return tree_.erase(key, comp); }
687
-
688
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
689
- //!
690
- //! <b>Effects</b>: Erases the element pointed to by pos.
691
- //! Disposer::operator()(pointer) is called for the removed element.
692
- //!
693
- //! <b>Complexity</b>: Average complexity for erase element is constant time.
694
- //!
695
- //! <b>Returns</b>: An iterator to the element after the erased element.
696
- //!
697
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
698
- //!
699
- //! <b>Note</b>: Invalidates the iterators
700
- //! to the erased elements.
701
- template<class Disposer>
702
- iterator erase_and_dispose(const_iterator i, Disposer disposer)
703
- { return tree_.erase_and_dispose(i, disposer); }
275
+ //! @copydoc ::boost::intrusive::treap::push_front
276
+ void push_front(reference value);
277
+
278
+ //! @copydoc ::boost::intrusive::treap::erase(const_iterator)
279
+ iterator erase(const_iterator i);
704
280
 
705
- #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
281
+ //! @copydoc ::boost::intrusive::treap::erase(const_iterator,const_iterator)
282
+ iterator erase(const_iterator b, const_iterator e);
283
+
284
+ //! @copydoc ::boost::intrusive::treap::erase(const key_type &)
285
+ size_type erase(const key_type &key);
286
+
287
+ //! @copydoc ::boost::intrusive::treap::erase(const KeyType&,KeyTypeKeyCompare)
288
+ template<class KeyType, class KeyTypeKeyCompare>
289
+ size_type erase(const KeyType& key, KeyTypeKeyCompare comp);
290
+
291
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const_iterator,Disposer)
706
292
  template<class Disposer>
707
- iterator erase_and_dispose(iterator i, Disposer disposer)
708
- { return this->erase_and_dispose(const_iterator(i), disposer); }
709
- #endif
293
+ iterator erase_and_dispose(const_iterator i, Disposer disposer);
710
294
 
711
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
712
- //!
713
- //! <b>Effects</b>: Erases the range pointed to by b end e.
714
- //! Disposer::operator()(pointer) is called for the removed elements.
715
- //!
716
- //! <b>Complexity</b>: Average complexity for erase range is at most
717
- //! O(log(size() + N)), where N is the number of elements in the range.
718
- //!
719
- //! <b>Returns</b>: An iterator to the element after the erased elements.
720
- //!
721
- //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
722
- //!
723
- //! <b>Note</b>: Invalidates the iterators
724
- //! to the erased elements.
295
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const_iterator,const_iterator,Disposer)
725
296
  template<class Disposer>
726
- iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer)
727
- { return tree_.erase_and_dispose(b, e, disposer); }
297
+ iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer);
728
298
 
729
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
730
- //!
731
- //! <b>Effects</b>: Erases all the elements with the given value.
732
- //! Disposer::operator()(pointer) is called for the removed elements.
733
- //!
734
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
735
- //!
736
- //! <b>Complexity</b>: O(log(size() + this->count(value)). Basic guarantee.
737
- //!
738
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
739
- //!
740
- //! <b>Note</b>: Invalidates the iterators (but not the references)
741
- //! to the erased elements. No destructors are called.
299
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const key_type &, Disposer)
742
300
  template<class Disposer>
743
- size_type erase_and_dispose(const_reference value, Disposer disposer)
744
- { return tree_.erase_and_dispose(value, disposer); }
301
+ size_type erase_and_dispose(const key_type &key, Disposer disposer);
745
302
 
746
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
747
- //!
748
- //! <b>Effects</b>: Erases all the elements with the given key.
749
- //! according to the comparison functor "comp".
750
- //! Disposer::operator()(pointer) is called for the removed elements.
751
- //!
752
- //! <b>Returns</b>: The number of erased elements.
753
- //!
754
- //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
755
- //!
756
- //! <b>Throws</b>: If comp or internal priority_compare ordering functions throw.
757
- //! Basic guarantee.
758
- //!
759
- //! <b>Note</b>: Invalidates the iterators
760
- //! to the erased elements.
761
- template<class KeyType, class KeyValueCompare, class Disposer>
762
- size_type erase_and_dispose(const KeyType& key, KeyValueCompare comp, Disposer disposer
763
- /// @cond
764
- , typename detail::enable_if_c<!detail::is_convertible<KeyValueCompare, const_iterator>::value >::type * = 0
765
- /// @endcond
766
- )
767
- { return tree_.erase_and_dispose(key, comp, disposer); }
768
-
769
- //! <b>Effects</b>: Erases all the elements of the container.
770
- //!
771
- //! <b>Complexity</b>: Linear to the number of elements on the container.
772
- //! if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
773
- //!
774
- //! <b>Throws</b>: Nothing.
775
- //!
776
- //! <b>Note</b>: Invalidates the iterators (but not the references)
777
- //! to the erased elements. No destructors are called.
778
- void clear()
779
- { return tree_.clear(); }
303
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const KeyType&,KeyTypeKeyCompare,Disposer)
304
+ template<class KeyType, class KeyTypeKeyCompare, class Disposer>
305
+ size_type erase_and_dispose(const KeyType& key, KeyTypeKeyCompare comp, Disposer disposer);
780
306
 
781
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
782
- //!
783
- //! <b>Effects</b>: Erases all the elements of the container.
784
- //!
785
- //! <b>Complexity</b>: Linear to the number of elements on the container.
786
- //! Disposer::operator()(pointer) is called for the removed elements.
787
- //!
788
- //! <b>Throws</b>: Nothing.
789
- //!
790
- //! <b>Note</b>: Invalidates the iterators (but not the references)
791
- //! to the erased elements. No destructors are called.
307
+ //! @copydoc ::boost::intrusive::treap::clear
308
+ void clear();
309
+
310
+ //! @copydoc ::boost::intrusive::treap::clear_and_dispose
792
311
  template<class Disposer>
793
- void clear_and_dispose(Disposer disposer)
794
- { return tree_.clear_and_dispose(disposer); }
312
+ void clear_and_dispose(Disposer disposer);
795
313
 
796
- //! <b>Effects</b>: Returns the number of contained elements with the given key
797
- //!
798
- //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
799
- //! to number of objects with the given key.
800
- //!
801
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
802
- size_type count(const_reference value) const
803
- { return tree_.find(value) != end(); }
314
+ #endif // #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
804
315
 
805
- //! <b>Effects</b>: Returns the number of contained elements with the same key
806
- //! compared with the given comparison functor.
807
- //!
808
- //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
809
- //! to number of objects with the given key.
810
- //!
811
- //! <b>Throws</b>: If comp ordering function throws.
812
- template<class KeyType, class KeyValueCompare>
813
- size_type count(const KeyType& key, KeyValueCompare comp) const
814
- { return tree_.find(key, comp) != end(); }
316
+ //! @copydoc ::boost::intrusive::treap::count(const key_type &)const
317
+ size_type count(const key_type &key) const
318
+ { return static_cast<size_type>(this->tree_type::find(key) != this->tree_type::cend()); }
815
319
 
816
- //! <b>Effects</b>: Returns an iterator to the first element whose
817
- //! key is not less than k or end() if that element does not exist.
818
- //!
819
- //! <b>Complexity</b>: Logarithmic.
820
- //!
821
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
822
- iterator lower_bound(const_reference value)
823
- { return tree_.lower_bound(value); }
320
+ //! @copydoc ::boost::intrusive::treap::count(const KeyType&,KeyTypeKeyCompare)const
321
+ template<class KeyType, class KeyTypeKeyCompare>
322
+ size_type count(const KeyType& key, KeyTypeKeyCompare comp) const
323
+ { return static_cast<size_type>(this->tree_type::find(key, comp) != this->tree_type::cend()); }
824
324
 
825
- //! <b>Requires</b>: comp must imply the same element order as
826
- //! value_compare. Usually key is the part of the value_type
827
- //! that is used in the ordering functor.
828
- //!
829
- //! <b>Effects</b>: Returns an iterator to the first element whose
830
- //! key according to the comparison functor is not less than k or
831
- //! end() if that element does not exist.
832
- //!
833
- //! <b>Complexity</b>: Logarithmic.
834
- //!
835
- //! <b>Throws</b>: If comp ordering function throws.
836
- //!
837
- //! <b>Note</b>: This function is used when constructing a value_type
838
- //! is expensive and the value_type can be compared with a cheaper
839
- //! key type. Usually this key is part of the value_type.
840
- template<class KeyType, class KeyValueCompare>
841
- iterator lower_bound(const KeyType& key, KeyValueCompare comp)
842
- { return tree_.lower_bound(key, comp); }
843
-
844
- //! <b>Effects</b>: Returns a const iterator to the first element whose
845
- //! key is not less than k or end() if that element does not exist.
846
- //!
847
- //! <b>Complexity</b>: Logarithmic.
848
- //!
849
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
850
- const_iterator lower_bound(const_reference value) const
851
- { return tree_.lower_bound(value); }
325
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
852
326
 
853
- //! <b>Requires</b>: comp must imply the same element order as
854
- //! value_compare. Usually key is the part of the value_type
855
- //! that is used in the ordering functor.
856
- //!
857
- //! <b>Effects</b>: Returns a const_iterator to the first element whose
858
- //! key according to the comparison functor is not less than k or
859
- //! end() if that element does not exist.
860
- //!
861
- //! <b>Complexity</b>: Logarithmic.
862
- //!
863
- //! <b>Throws</b>: If comp ordering function throws.
864
- //!
865
- //! <b>Note</b>: This function is used when constructing a value_type
866
- //! is expensive and the value_type can be compared with a cheaper
867
- //! key type. Usually this key is part of the value_type.
868
- template<class KeyType, class KeyValueCompare>
869
- const_iterator lower_bound(const KeyType& key, KeyValueCompare comp) const
870
- { return tree_.lower_bound(key, comp); }
871
-
872
- //! <b>Effects</b>: Returns an iterator to the first element whose
873
- //! key is greater than k or end() if that element does not exist.
874
- //!
875
- //! <b>Complexity</b>: Logarithmic.
876
- //!
877
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
878
- iterator upper_bound(const_reference value)
879
- { return tree_.upper_bound(value); }
327
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const key_type &)
328
+ iterator lower_bound(const key_type &key);
880
329
 
881
- //! <b>Requires</b>: comp must imply the same element order as
882
- //! value_compare. Usually key is the part of the value_type
883
- //! that is used in the ordering functor.
884
- //!
885
- //! <b>Effects</b>: Returns an iterator to the first element whose
886
- //! key according to the comparison functor is greater than key or
887
- //! end() if that element does not exist.
888
- //!
889
- //! <b>Complexity</b>: Logarithmic.
890
- //!
891
- //! <b>Throws</b>: If comp ordering function throws.
892
- //!
893
- //! <b>Note</b>: This function is used when constructing a value_type
894
- //! is expensive and the value_type can be compared with a cheaper
895
- //! key type. Usually this key is part of the value_type.
896
- template<class KeyType, class KeyValueCompare>
897
- iterator upper_bound(const KeyType& key, KeyValueCompare comp)
898
- { return tree_.upper_bound(key, comp); }
899
-
900
- //! <b>Effects</b>: Returns an iterator to the first element whose
901
- //! key is greater than k or end() if that element does not exist.
902
- //!
903
- //! <b>Complexity</b>: Logarithmic.
904
- //!
905
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
906
- const_iterator upper_bound(const_reference value) const
907
- { return tree_.upper_bound(value); }
330
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const KeyType&,KeyTypeKeyCompare)
331
+ template<class KeyType, class KeyTypeKeyCompare>
332
+ iterator lower_bound(const KeyType& key, KeyTypeKeyCompare comp);
908
333
 
909
- //! <b>Requires</b>: comp must imply the same element order as
910
- //! value_compare. Usually key is the part of the value_type
911
- //! that is used in the ordering functor.
912
- //!
913
- //! <b>Effects</b>: Returns a const_iterator to the first element whose
914
- //! key according to the comparison functor is greater than key or
915
- //! end() if that element does not exist.
916
- //!
917
- //! <b>Complexity</b>: Logarithmic.
918
- //!
919
- //! <b>Throws</b>: If comp ordering function throws.
920
- //!
921
- //! <b>Note</b>: This function is used when constructing a value_type
922
- //! is expensive and the value_type can be compared with a cheaper
923
- //! key type. Usually this key is part of the value_type.
924
- template<class KeyType, class KeyValueCompare>
925
- const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
926
- { return tree_.upper_bound(key, comp); }
927
-
928
- //! <b>Effects</b>: Finds an iterator to the first element whose value is
929
- //! "value" or end() if that element does not exist.
930
- //!
931
- //! <b>Complexity</b>: Logarithmic.
932
- //!
933
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
934
- iterator find(const_reference value)
935
- { return tree_.find(value); }
334
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const key_type &)const
335
+ const_iterator lower_bound(const key_type &key) const;
936
336
 
937
- //! <b>Requires</b>: comp must imply the same element order as
938
- //! value_compare. Usually key is the part of the value_type
939
- //! that is used in the ordering functor.
940
- //!
941
- //! <b>Effects</b>: Finds an iterator to the first element whose key is
942
- //! "key" according to the comparison functor or end() if that element
943
- //! does not exist.
944
- //!
945
- //! <b>Complexity</b>: Logarithmic.
946
- //!
947
- //! <b>Throws</b>: If comp ordering function throws.
948
- //!
949
- //! <b>Note</b>: This function is used when constructing a value_type
950
- //! is expensive and the value_type can be compared with a cheaper
951
- //! key type. Usually this key is part of the value_type.
952
- template<class KeyType, class KeyValueCompare>
953
- iterator find(const KeyType& key, KeyValueCompare comp)
954
- { return tree_.find(key, comp); }
955
-
956
- //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
957
- //! "value" or end() if that element does not exist.
958
- //!
959
- //! <b>Complexity</b>: Logarithmic.
960
- //!
961
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
962
- const_iterator find(const_reference value) const
963
- { return tree_.find(value); }
337
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const KeyType&,KeyTypeKeyCompare)const
338
+ template<class KeyType, class KeyTypeKeyCompare>
339
+ const_iterator lower_bound(const KeyType& key, KeyTypeKeyCompare comp) const;
964
340
 
965
- //! <b>Requires</b>: comp must imply the same element order as
966
- //! value_compare. Usually key is the part of the value_type
967
- //! that is used in the ordering functor.
968
- //!
969
- //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
970
- //! "key" according to the comparison functor or end() if that element
971
- //! does not exist.
972
- //!
973
- //! <b>Complexity</b>: Logarithmic.
974
- //!
975
- //! <b>Throws</b>: If comp ordering function throws.
976
- //!
977
- //! <b>Note</b>: This function is used when constructing a value_type
978
- //! is expensive and the value_type can be compared with a cheaper
979
- //! key type. Usually this key is part of the value_type.
980
- template<class KeyType, class KeyValueCompare>
981
- const_iterator find(const KeyType& key, KeyValueCompare comp) const
982
- { return tree_.find(key, comp); }
983
-
984
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
985
- //! an empty range that indicates the position where those elements would be
986
- //! if they there is no elements with key k.
987
- //!
988
- //! <b>Complexity</b>: Logarithmic.
989
- //!
990
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
991
- std::pair<iterator,iterator> equal_range(const_reference value)
992
- { return tree_.equal_range(value); }
341
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const key_type &)
342
+ iterator upper_bound(const key_type &key);
993
343
 
994
- //! <b>Requires</b>: comp must imply the same element order as
995
- //! value_compare. Usually key is the part of the value_type
996
- //! that is used in the ordering functor.
997
- //!
998
- //! <b>Effects</b>: Finds a range containing all elements whose key is k
999
- //! according to the comparison functor or an empty range
1000
- //! that indicates the position where those elements would be
1001
- //! if they there is no elements with key k.
1002
- //!
1003
- //! <b>Complexity</b>: Logarithmic.
1004
- //!
1005
- //! <b>Throws</b>: If comp ordering function throws.
1006
- //!
1007
- //! <b>Note</b>: This function is used when constructing a value_type
1008
- //! is expensive and the value_type can be compared with a cheaper
1009
- //! key type. Usually this key is part of the value_type.
1010
- template<class KeyType, class KeyValueCompare>
1011
- std::pair<iterator,iterator> equal_range(const KeyType& key, KeyValueCompare comp)
1012
- { return tree_.equal_range(key, comp); }
1013
-
1014
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
1015
- //! an empty range that indicates the position where those elements would be
1016
- //! if they there is no elements with key k.
1017
- //!
1018
- //! <b>Complexity</b>: Logarithmic.
1019
- //!
1020
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
1021
- std::pair<const_iterator, const_iterator>
1022
- equal_range(const_reference value) const
1023
- { return tree_.equal_range(value); }
344
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const KeyType&,KeyTypeKeyCompare)
345
+ template<class KeyType, class KeyTypeKeyCompare>
346
+ iterator upper_bound(const KeyType& key, KeyTypeKeyCompare comp);
1024
347
 
1025
- //! <b>Requires</b>: comp must imply the same element order as
1026
- //! value_compare. Usually key is the part of the value_type
1027
- //! that is used in the ordering functor.
1028
- //!
1029
- //! <b>Effects</b>: Finds a range containing all elements whose key is k
1030
- //! according to the comparison functor or an empty range
1031
- //! that indicates the position where those elements would be
1032
- //! if they there is no elements with key k.
1033
- //!
1034
- //! <b>Complexity</b>: Logarithmic.
1035
- //!
1036
- //! <b>Throws</b>: If comp ordering function throws.
1037
- //!
1038
- //! <b>Note</b>: This function is used when constructing a value_type
1039
- //! is expensive and the value_type can be compared with a cheaper
1040
- //! key type. Usually this key is part of the value_type.
1041
- template<class KeyType, class KeyValueCompare>
1042
- std::pair<const_iterator, const_iterator>
1043
- equal_range(const KeyType& key, KeyValueCompare comp) const
1044
- { return tree_.equal_range(key, comp); }
348
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const key_type &)const
349
+ const_iterator upper_bound(const key_type &key) const;
1045
350
 
1046
- //! <b>Requires</b>: 'lower_value' must not be greater than 'upper_value'. If
1047
- //! 'lower_value' == 'upper_value', ('left_closed' || 'right_closed') must be false.
1048
- //!
1049
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1050
- //!
1051
- //! first = lower_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise
1052
- //!
1053
- //! second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) otherwise
1054
- //!
1055
- //! <b>Complexity</b>: Logarithmic.
1056
- //!
1057
- //! <b>Throws</b>: If the predicate throws.
1058
- //!
1059
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1060
- //! and lower_bound for lower_value and upper_value.
1061
- std::pair<iterator,iterator> bounded_range
1062
- (const_reference lower_value, const_reference upper_value, bool left_closed, bool right_closed)
1063
- { return tree_.bounded_range(lower_value, upper_value, left_closed, right_closed); }
1064
-
1065
- //! <b>Requires</b>: KeyValueCompare is a function object that induces a strict weak
1066
- //! ordering compatible with the strict weak ordering used to create the
1067
- //! the tree.
1068
- //! 'lower_key' must not be greater than 'upper_key' according to 'comp'. If
1069
- //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be false.
1070
- //!
1071
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1072
- //!
1073
- //! first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
1074
- //!
1075
- //! second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) otherwise
1076
- //!
1077
- //! <b>Complexity</b>: Logarithmic.
1078
- //!
1079
- //! <b>Throws</b>: If "comp" throws.
1080
- //!
1081
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1082
- //! and lower_bound for lower_key and upper_key.
1083
- template<class KeyType, class KeyValueCompare>
1084
- std::pair<iterator,iterator> bounded_range
1085
- (const KeyType& lower_key, const KeyType& upper_key, KeyValueCompare comp, bool left_closed, bool right_closed)
1086
- { return tree_.bounded_range(lower_key, upper_key, comp, left_closed, right_closed); }
351
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const KeyType&,KeyTypeKeyCompare)const
352
+ template<class KeyType, class KeyTypeKeyCompare>
353
+ const_iterator upper_bound(const KeyType& key, KeyTypeKeyCompare comp) const;
1087
354
 
1088
- //! <b>Requires</b>: 'lower_value' must not be greater than 'upper_value'. If
1089
- //! 'lower_value' == 'upper_value', ('left_closed' || 'right_closed') must be false.
1090
- //!
1091
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1092
- //!
1093
- //! first = lower_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise
1094
- //!
1095
- //! second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) otherwise
1096
- //!
1097
- //! <b>Complexity</b>: Logarithmic.
1098
- //!
1099
- //! <b>Throws</b>: If the predicate throws.
1100
- //!
1101
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1102
- //! and lower_bound for lower_value and upper_value.
1103
- std::pair<const_iterator, const_iterator>
1104
- bounded_range(const_reference lower_value, const_reference upper_value, bool left_closed, bool right_closed) const
1105
- { return tree_.bounded_range(lower_value, upper_value, left_closed, right_closed); }
1106
-
1107
- //! <b>Requires</b>: KeyValueCompare is a function object that induces a strict weak
1108
- //! ordering compatible with the strict weak ordering used to create the
1109
- //! the tree.
1110
- //! 'lower_key' must not be greater than 'upper_key' according to 'comp'. If
1111
- //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be false.
1112
- //!
1113
- //! <b>Effects</b>: Returns an a pair with the following criteria:
1114
- //!
1115
- //! first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
1116
- //!
1117
- //! second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) otherwise
1118
- //!
1119
- //! <b>Complexity</b>: Logarithmic.
1120
- //!
1121
- //! <b>Throws</b>: If "comp" throws.
1122
- //!
1123
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
1124
- //! and lower_bound for lower_key and upper_key.
1125
- template<class KeyType, class KeyValueCompare>
355
+ //! @copydoc ::boost::intrusive::treap::find(const key_type &)
356
+ iterator find(const key_type &key);
357
+
358
+ //! @copydoc ::boost::intrusive::treap::find(const KeyType&,KeyTypeKeyCompare)
359
+ template<class KeyType, class KeyTypeKeyCompare>
360
+ iterator find(const KeyType& key, KeyTypeKeyCompare comp);
361
+
362
+ //! @copydoc ::boost::intrusive::treap::find(const key_type &)const
363
+ const_iterator find(const key_type &key) const;
364
+
365
+ //! @copydoc ::boost::intrusive::treap::find(const KeyType&,KeyTypeKeyCompare)const
366
+ template<class KeyType, class KeyTypeKeyCompare>
367
+ const_iterator find(const KeyType& key, KeyTypeKeyCompare comp) const;
368
+
369
+ #endif // #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
370
+
371
+ //! @copydoc ::boost::intrusive::rbtree::equal_range(const key_type &)
372
+ std::pair<iterator,iterator> equal_range(const key_type &key)
373
+ { return this->tree_type::lower_bound_range(key); }
374
+
375
+ //! @copydoc ::boost::intrusive::rbtree::equal_range(const KeyType&,KeyTypeKeyCompare)
376
+ template<class KeyType, class KeyTypeKeyCompare>
377
+ std::pair<iterator,iterator> equal_range(const KeyType& key, KeyTypeKeyCompare comp)
378
+ { return this->tree_type::equal_range(key, comp); }
379
+
380
+ //! @copydoc ::boost::intrusive::rbtree::equal_range(const key_type &)const
1126
381
  std::pair<const_iterator, const_iterator>
1127
- bounded_range
1128
- (const KeyType& lower_key, const KeyType& upper_key, KeyValueCompare comp, bool left_closed, bool right_closed) const
1129
- { return tree_.bounded_range(lower_key, upper_key, comp, left_closed, right_closed); }
382
+ equal_range(const key_type &key) const
383
+ { return this->tree_type::lower_bound_range(key); }
1130
384
 
1131
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
1132
- //! appropriate type. Otherwise the behavior is undefined.
1133
- //!
1134
- //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_set
1135
- //! that points to the value
1136
- //!
1137
- //! <b>Complexity</b>: Constant.
1138
- //!
1139
- //! <b>Throws</b>: Nothing.
1140
- //!
1141
- //! <b>Note</b>: This static function is available only if the <i>value traits</i>
1142
- //! is stateless.
1143
- static iterator s_iterator_to(reference value)
1144
- { return tree_type::s_iterator_to(value); }
385
+ //! @copydoc ::boost::intrusive::rbtree::equal_range(const KeyType&,KeyTypeKeyCompare)const
386
+ template<class KeyType, class KeyTypeKeyCompare>
387
+ std::pair<const_iterator, const_iterator>
388
+ equal_range(const KeyType& key, KeyTypeKeyCompare comp) const
389
+ { return this->tree_type::equal_range(key, comp); }
1145
390
 
1146
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
1147
- //! appropriate type. Otherwise the behavior is undefined.
1148
- //!
1149
- //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
1150
- //! treap_set that points to the value
1151
- //!
1152
- //! <b>Complexity</b>: Constant.
1153
- //!
1154
- //! <b>Throws</b>: Nothing.
1155
- //!
1156
- //! <b>Note</b>: This static function is available only if the <i>value traits</i>
1157
- //! is stateless.
1158
- static const_iterator s_iterator_to(const_reference value)
1159
- { return tree_type::s_iterator_to(value); }
391
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1160
392
 
1161
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
1162
- //! appropriate type. Otherwise the behavior is undefined.
1163
- //!
1164
- //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_set
1165
- //! that points to the value
1166
- //!
1167
- //! <b>Complexity</b>: Constant.
1168
- //!
1169
- //! <b>Throws</b>: Nothing.
1170
- iterator iterator_to(reference value)
1171
- { return tree_.iterator_to(value); }
393
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const key_type &,const key_type &,bool,bool)
394
+ std::pair<iterator,iterator> bounded_range
395
+ (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed);
1172
396
 
1173
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_set of
1174
- //! appropriate type. Otherwise the behavior is undefined.
1175
- //!
1176
- //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
1177
- //! treap_set that points to the value
1178
- //!
1179
- //! <b>Complexity</b>: Constant.
1180
- //!
1181
- //! <b>Throws</b>: Nothing.
1182
- const_iterator iterator_to(const_reference value) const
1183
- { return tree_.iterator_to(value); }
397
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const KeyType&,const KeyType&,KeyTypeKeyCompare,bool,bool)
398
+ template<class KeyType, class KeyTypeKeyCompare>
399
+ std::pair<iterator,iterator> bounded_range
400
+ (const KeyType& lower_key, const KeyType& upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed);
1184
401
 
1185
- //! <b>Requires</b>: value shall not be in a treap_set/treap_multiset.
1186
- //!
1187
- //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
1188
- //! state.
1189
- //!
1190
- //! <b>Throws</b>: Nothing.
1191
- //!
1192
- //! <b>Complexity</b>: Constant time.
1193
- //!
1194
- //! <b>Note</b>: This function puts the hook in the well-known default state
1195
- //! used by auto_unlink and safe hooks.
1196
- static void init_node(reference value)
1197
- { tree_type::init_node(value); }
402
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const key_type &,const key_type &,bool,bool)const
403
+ std::pair<const_iterator, const_iterator>
404
+ bounded_range(const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed) const;
1198
405
 
1199
- //! <b>Effects</b>: Unlinks the leftmost node from the tree.
1200
- //!
1201
- //! <b>Complexity</b>: Average complexity is constant time.
1202
- //!
1203
- //! <b>Throws</b>: Nothing.
1204
- //!
1205
- //! <b>Notes</b>: This function breaks the tree and the tree can
1206
- //! only be used for more unlink_leftmost_without_rebalance calls.
1207
- //! This function is normally used to achieve a step by step
1208
- //! controlled destruction of the tree.
1209
- pointer unlink_leftmost_without_rebalance()
1210
- { return tree_.unlink_leftmost_without_rebalance(); }
1211
-
1212
- //! <b>Requires</b>: replace_this must be a valid iterator of *this
1213
- //! and with_this must not be inserted in any tree.
1214
- //!
1215
- //! <b>Effects</b>: Replaces replace_this in its position in the
1216
- //! tree with with_this. The tree does not need to be rebalanced.
1217
- //!
1218
- //! <b>Complexity</b>: Constant.
1219
- //!
1220
- //! <b>Throws</b>: Nothing.
1221
- //!
1222
- //! <b>Note</b>: This function will break container ordering invariants if
1223
- //! with_this is not equivalent to *replace_this according to the
1224
- //! ordering rules. This function is faster than erasing and inserting
1225
- //! the node, since no rebalancing or comparison is needed.
1226
- void replace_node(iterator replace_this, reference with_this)
1227
- { tree_.replace_node(replace_this, with_this); }
1228
-
1229
- //! <b>Effects</b>: Rebalances the tree.
1230
- //!
1231
- //! <b>Throws</b>: Nothing.
1232
- //!
1233
- //! <b>Complexity</b>: Linear.
1234
- void rebalance()
1235
- { tree_.rebalance(); }
406
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const KeyType&,const KeyType&,KeyTypeKeyCompare,bool,bool)const
407
+ template<class KeyType, class KeyTypeKeyCompare>
408
+ std::pair<const_iterator, const_iterator> bounded_range
409
+ (const KeyType& lower_key, const KeyType& upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed) const;
1236
410
 
1237
- //! <b>Requires</b>: old_root is a node of a tree.
1238
- //!
1239
- //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
1240
- //!
1241
- //! <b>Returns</b>: The new root of the subtree.
1242
- //!
1243
- //! <b>Throws</b>: Nothing.
1244
- //!
1245
- //! <b>Complexity</b>: Linear to the elements in the subtree.
1246
- iterator rebalance_subtree(iterator root)
1247
- { return tree_.rebalance_subtree(root); }
411
+ //! @copydoc ::boost::intrusive::treap::s_iterator_to(reference)
412
+ static iterator s_iterator_to(reference value);
1248
413
 
1249
- //! <b>Returns</b>: The balance factor (alpha) used in this tree
1250
- //!
1251
- //! <b>Throws</b>: Nothing.
1252
- //!
1253
- //! <b>Complexity</b>: Constant.
1254
- float balance_factor() const
1255
- { return tree_.balance_factor(); }
414
+ //! @copydoc ::boost::intrusive::treap::s_iterator_to(const_reference)
415
+ static const_iterator s_iterator_to(const_reference value);
1256
416
 
1257
- //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
1258
- //!
1259
- //! <b>Effects</b>: Establishes a new balance factor (alpha) and rebalances
1260
- //! the tree if the new balance factor is stricter (less) than the old factor.
1261
- //!
1262
- //! <b>Throws</b>: Nothing.
1263
- //!
1264
- //! <b>Complexity</b>: Linear to the elements in the subtree.
1265
- void balance_factor(float new_alpha)
1266
- { tree_.balance_factor(new_alpha); }
417
+ //! @copydoc ::boost::intrusive::treap::iterator_to(reference)
418
+ iterator iterator_to(reference value);
1267
419
 
1268
- /// @cond
1269
- friend bool operator==(const treap_set_impl &x, const treap_set_impl &y)
1270
- { return x.tree_ == y.tree_; }
420
+ //! @copydoc ::boost::intrusive::treap::iterator_to(const_reference)const
421
+ const_iterator iterator_to(const_reference value) const;
1271
422
 
1272
- friend bool operator<(const treap_set_impl &x, const treap_set_impl &y)
1273
- { return x.tree_ < y.tree_; }
1274
- /// @endcond
1275
- };
423
+ //! @copydoc ::boost::intrusive::treap::init_node(reference)
424
+ static void init_node(reference value);
1276
425
 
1277
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1278
- template<class T, class ...Options>
1279
- #else
1280
- template<class Config>
1281
- #endif
1282
- inline bool operator!=
1283
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1284
- (const treap_set_impl<T, Options...> &x, const treap_set_impl<T, Options...> &y)
1285
- #else
1286
- (const treap_set_impl<Config> &x, const treap_set_impl<Config> &y)
1287
- #endif
1288
- { return !(x == y); }
426
+ //! @copydoc ::boost::intrusive::treap::unlink_leftmost_without_rebalance
427
+ pointer unlink_leftmost_without_rebalance();
1289
428
 
1290
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1291
- template<class T, class ...Options>
1292
- #else
1293
- template<class Config>
1294
- #endif
1295
- inline bool operator>
1296
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1297
- (const treap_set_impl<T, Options...> &x, const treap_set_impl<T, Options...> &y)
1298
- #else
1299
- (const treap_set_impl<Config> &x, const treap_set_impl<Config> &y)
1300
- #endif
1301
- { return y < x; }
429
+ //! @copydoc ::boost::intrusive::treap::replace_node
430
+ void replace_node(iterator replace_this, reference with_this);
1302
431
 
1303
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1304
- template<class T, class ...Options>
1305
- #else
1306
- template<class Config>
1307
- #endif
1308
- inline bool operator<=
1309
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1310
- (const treap_set_impl<T, Options...> &x, const treap_set_impl<T, Options...> &y)
1311
- #else
1312
- (const treap_set_impl<Config> &x, const treap_set_impl<Config> &y)
1313
- #endif
1314
- { return !(y < x); }
432
+ //! @copydoc ::boost::intrusive::treap::remove_node
433
+ void remove_node(reference value);
1315
434
 
1316
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1317
- template<class T, class ...Options>
1318
- #else
1319
- template<class Config>
1320
- #endif
1321
- inline bool operator>=
1322
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1323
- (const treap_set_impl<T, Options...> &x, const treap_set_impl<T, Options...> &y)
1324
- #else
1325
- (const treap_set_impl<Config> &x, const treap_set_impl<Config> &y)
1326
- #endif
1327
- { return !(x < y); }
435
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
436
+ };
1328
437
 
1329
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1330
- template<class T, class ...Options>
1331
- #else
1332
- template<class Config>
1333
- #endif
1334
- inline void swap
1335
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1336
- (treap_set_impl<T, Options...> &x, treap_set_impl<T, Options...> &y)
1337
- #else
1338
- (treap_set_impl<Config> &x, treap_set_impl<Config> &y)
1339
- #endif
1340
- { x.swap(y); }
1341
438
 
1342
439
  //! Helper metafunction to define a \c treap_set that yields to the same type when the
1343
440
  //! same options (either explicitly or implicitly) are used.
1344
441
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1345
442
  template<class T, class ...Options>
1346
443
  #else
1347
- template<class T, class O1 = none, class O2 = none
1348
- , class O3 = none, class O4 = none>
444
+ template<class T, class O1 = void, class O2 = void
445
+ , class O3 = void, class O4 = void
446
+ , class O5 = void, class O6 = void>
1349
447
  #endif
1350
448
  struct make_treap_set
1351
449
  {
1352
- /// @cond
1353
- typedef treap_set_impl
1354
- < typename make_treap_opt<T,
450
+ typedef typename pack_options
451
+ < treap_defaults,
1355
452
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1356
- O1, O2, O3, O4
453
+ O1, O2, O3, O4, O5, O6
1357
454
  #else
1358
455
  Options...
1359
456
  #endif
1360
- >::type
1361
- > implementation_defined;
457
+ >::type packed_options;
458
+
459
+ typedef typename detail::get_value_traits
460
+ <T, typename packed_options::proto_value_traits>::type value_traits;
461
+
462
+ typedef treap_set_impl
463
+ < value_traits
464
+ , typename packed_options::key_of_value
465
+ , typename packed_options::compare
466
+ , typename packed_options::priority
467
+ , typename packed_options::size_type
468
+ , packed_options::constant_time_size
469
+ , typename packed_options::header_holder_type
470
+ > implementation_defined;
1362
471
  /// @endcond
1363
472
  typedef implementation_defined type;
1364
473
  };
@@ -1366,14 +475,14 @@ struct make_treap_set
1366
475
  #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
1367
476
 
1368
477
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1369
- template<class T, class O1, class O2, class O3, class O4>
478
+ template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
1370
479
  #else
1371
480
  template<class T, class ...Options>
1372
481
  #endif
1373
482
  class treap_set
1374
483
  : public make_treap_set<T,
1375
484
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1376
- O1, O2, O3, O4
485
+ O1, O2, O3, O4, O5, O6
1377
486
  #else
1378
487
  Options...
1379
488
  #endif
@@ -1382,7 +491,7 @@ class treap_set
1382
491
  typedef typename make_treap_set
1383
492
  <T,
1384
493
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
1385
- O1, O2, O3, O4
494
+ O1, O2, O3, O4, O5, O6
1386
495
  #else
1387
496
  Options...
1388
497
  #endif
@@ -1390,7 +499,7 @@ class treap_set
1390
499
  BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_set)
1391
500
 
1392
501
  public:
1393
- typedef typename Base::value_compare value_compare;
502
+ typedef typename Base::key_compare key_compare;
1394
503
  typedef typename Base::priority_compare priority_compare;
1395
504
  typedef typename Base::value_traits value_traits;
1396
505
  typedef typename Base::iterator iterator;
@@ -1399,26 +508,34 @@ class treap_set
1399
508
  //Assert if passed value traits are compatible with the type
1400
509
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
1401
510
 
1402
- treap_set( const value_compare &cmp = value_compare()
1403
- , const priority_compare &pcmp = priority_compare()
1404
- , const value_traits &v_traits = value_traits())
511
+ explicit treap_set( const key_compare &cmp = key_compare()
512
+ , const priority_compare &pcmp = priority_compare()
513
+ , const value_traits &v_traits = value_traits())
1405
514
  : Base(cmp, pcmp, v_traits)
1406
515
  {}
1407
516
 
1408
517
  template<class Iterator>
1409
518
  treap_set( Iterator b, Iterator e
1410
- , const value_compare &cmp = value_compare()
519
+ , const key_compare &cmp = key_compare()
1411
520
  , const priority_compare &pcmp = priority_compare()
1412
521
  , const value_traits &v_traits = value_traits())
1413
522
  : Base(b, e, cmp, pcmp, v_traits)
1414
523
  {}
1415
524
 
1416
525
  treap_set(BOOST_RV_REF(treap_set) x)
1417
- : Base(::boost::move(static_cast<Base&>(x)))
526
+ : Base(BOOST_MOVE_BASE(Base, x))
1418
527
  {}
1419
528
 
1420
529
  treap_set& operator=(BOOST_RV_REF(treap_set) x)
1421
- { this->Base::operator=(::boost::move(static_cast<Base&>(x))); return *this; }
530
+ { return static_cast<treap_set &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
531
+
532
+ template <class Cloner, class Disposer>
533
+ void clone_from(const treap_set &src, Cloner cloner, Disposer disposer)
534
+ { Base::clone_from(src, cloner, disposer); }
535
+
536
+ template <class Cloner, class Disposer>
537
+ void clone_from(BOOST_RV_REF(treap_set) src, Cloner cloner, Disposer disposer)
538
+ { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
1422
539
 
1423
540
  static treap_set &container_from_end_iterator(iterator end_iterator)
1424
541
  { return static_cast<treap_set &>(Base::container_from_end_iterator(end_iterator)); }
@@ -1449,20 +566,25 @@ class treap_set
1449
566
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1450
567
  template<class T, class ...Options>
1451
568
  #else
1452
- template<class Config>
569
+ template<class ValueTraits, class VoidOrKeyOfValue, class VoidOrKeyComp, class VoidOrPrioComp, class SizeType, bool ConstantTimeSize, typename HeaderHolder>
1453
570
  #endif
1454
571
  class treap_multiset_impl
572
+ #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
573
+ : public treap_impl<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder>
574
+ #endif
1455
575
  {
1456
576
  /// @cond
1457
- typedef treap_impl<Config> tree_type;
1458
-
577
+ typedef treap_impl<ValueTraits, VoidOrKeyOfValue, VoidOrKeyComp, VoidOrPrioComp, SizeType, ConstantTimeSize, HeaderHolder> tree_type;
1459
578
  BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_multiset_impl)
579
+
1460
580
  typedef tree_type implementation_defined;
1461
581
  /// @endcond
1462
582
 
1463
583
  public:
1464
584
  typedef typename implementation_defined::value_type value_type;
1465
585
  typedef typename implementation_defined::value_traits value_traits;
586
+ typedef typename implementation_defined::key_type key_type;
587
+ typedef typename implementation_defined::key_of_value key_of_value;
1466
588
  typedef typename implementation_defined::pointer pointer;
1467
589
  typedef typename implementation_defined::const_pointer const_pointer;
1468
590
  typedef typename implementation_defined::reference reference;
@@ -1470,8 +592,8 @@ class treap_multiset_impl
1470
592
  typedef typename implementation_defined::difference_type difference_type;
1471
593
  typedef typename implementation_defined::size_type size_type;
1472
594
  typedef typename implementation_defined::value_compare value_compare;
1473
- typedef typename implementation_defined::priority_compare priority_compare;
1474
595
  typedef typename implementation_defined::key_compare key_compare;
596
+ typedef typename implementation_defined::priority_compare priority_compare;
1475
597
  typedef typename implementation_defined::iterator iterator;
1476
598
  typedef typename implementation_defined::const_iterator const_iterator;
1477
599
  typedef typename implementation_defined::reverse_iterator reverse_iterator;
@@ -1483,12 +605,7 @@ class treap_multiset_impl
1483
605
  typedef typename implementation_defined::const_node_ptr const_node_ptr;
1484
606
  typedef typename implementation_defined::node_algorithms node_algorithms;
1485
607
 
1486
- static const bool constant_time_size = Config::constant_time_size;
1487
-
1488
- /// @cond
1489
- private:
1490
- tree_type tree_;
1491
- /// @endcond
608
+ static const bool constant_time_size = implementation_defined::constant_time_size;
1492
609
 
1493
610
  public:
1494
611
  //! <b>Effects</b>: Constructs an empty treap_multiset.
@@ -1497,11 +614,11 @@ class treap_multiset_impl
1497
614
  //!
1498
615
  //! <b>Throws</b>: If value_traits::node_traits::node
1499
616
  //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
1500
- //! or the copy constructor of the value_compare/priority_compare objects throw.
1501
- explicit treap_multiset_impl( const value_compare &cmp = value_compare()
1502
- , const priority_compare &pcmp = priority_compare()
1503
- , const value_traits &v_traits = value_traits())
1504
- : tree_(cmp, pcmp, v_traits)
617
+ //! or the copy constructor of the key_compare object throws.
618
+ explicit treap_multiset_impl( const key_compare &cmp = key_compare()
619
+ , const priority_compare &pcmp = priority_compare()
620
+ , const value_traits &v_traits = value_traits())
621
+ : tree_type(cmp, pcmp, v_traits)
1505
622
  {}
1506
623
 
1507
624
  //! <b>Requires</b>: Dereferencing iterator must yield an lvalue of type value_type.
@@ -1511,1161 +628,338 @@ class treap_multiset_impl
1511
628
  //! [b, e).
1512
629
  //!
1513
630
  //! <b>Complexity</b>: Linear in N if [b, e) is already sorted using
1514
- //! comp and otherwise N * log N, where N is the distance between first and last
631
+ //! comp and otherwise N * log N, where N is distance(last, first).
1515
632
  //!
1516
633
  //! <b>Throws</b>: If value_traits::node_traits::node
1517
634
  //! constructor throws (this does not happen with predefined Boost.Intrusive hooks)
1518
- //! or the copy constructor/operator() of the value_compare/priority_compare objects throw.
635
+ //! or the copy constructor/operator() of the key_compare object throws.
1519
636
  template<class Iterator>
1520
637
  treap_multiset_impl( Iterator b, Iterator e
1521
- , const value_compare &cmp = value_compare()
1522
- , const priority_compare &pcmp = priority_compare()
1523
- , const value_traits &v_traits = value_traits())
1524
- : tree_(false, b, e, cmp, pcmp, v_traits)
638
+ , const key_compare &cmp = key_compare()
639
+ , const priority_compare &pcmp = priority_compare()
640
+ , const value_traits &v_traits = value_traits())
641
+ : tree_type(false, b, e, cmp, pcmp, v_traits)
1525
642
  {}
1526
643
 
1527
644
  //! <b>Effects</b>: to-do
1528
645
  //!
1529
646
  treap_multiset_impl(BOOST_RV_REF(treap_multiset_impl) x)
1530
- : tree_(::boost::move(x.tree_))
647
+ : tree_type(BOOST_MOVE_BASE(tree_type, x))
1531
648
  {}
1532
649
 
1533
650
  //! <b>Effects</b>: to-do
1534
651
  //!
1535
652
  treap_multiset_impl& operator=(BOOST_RV_REF(treap_multiset_impl) x)
1536
- { tree_ = ::boost::move(x.tree_); return *this; }
653
+ { return static_cast<treap_multiset_impl&>(tree_type::operator=(BOOST_MOVE_BASE(tree_type, x))); }
1537
654
 
1538
- //! <b>Effects</b>: Detaches all elements from this. The objects in the treap_multiset
1539
- //! are not deleted (i.e. no destructors are called).
1540
- //!
1541
- //! <b>Complexity</b>: Linear to the number of elements on the container.
1542
- //! if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
1543
- //!
1544
- //! <b>Throws</b>: Nothing.
1545
- ~treap_multiset_impl()
1546
- {}
655
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
656
+ //! @copydoc ::boost::intrusive::treap::~treap()
657
+ ~treap_multiset_impl();
1547
658
 
1548
- //! <b>Effects</b>: Returns an iterator pointing to the beginning of the treap_multiset.
1549
- //!
1550
- //! <b>Complexity</b>: Constant.
1551
- //!
1552
- //! <b>Throws</b>: Nothing.
1553
- iterator begin()
1554
- { return tree_.begin(); }
659
+ //! @copydoc ::boost::intrusive::treap::begin()
660
+ iterator begin();
1555
661
 
1556
- //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_multiset.
1557
- //!
1558
- //! <b>Complexity</b>: Constant.
1559
- //!
1560
- //! <b>Throws</b>: Nothing.
1561
- const_iterator begin() const
1562
- { return tree_.begin(); }
662
+ //! @copydoc ::boost::intrusive::treap::begin()const
663
+ const_iterator begin() const;
1563
664
 
1564
- //! <b>Effects</b>: Returns a const_iterator pointing to the beginning of the treap_multiset.
1565
- //!
1566
- //! <b>Complexity</b>: Constant.
1567
- //!
1568
- //! <b>Throws</b>: Nothing.
1569
- const_iterator cbegin() const
1570
- { return tree_.cbegin(); }
665
+ //! @copydoc ::boost::intrusive::treap::cbegin()const
666
+ const_iterator cbegin() const;
1571
667
 
1572
- //! <b>Effects</b>: Returns an iterator pointing to the end of the treap_multiset.
1573
- //!
1574
- //! <b>Complexity</b>: Constant.
1575
- //!
1576
- //! <b>Throws</b>: Nothing.
1577
- iterator end()
1578
- { return tree_.end(); }
668
+ //! @copydoc ::boost::intrusive::treap::end()
669
+ iterator end();
1579
670
 
1580
- //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_multiset.
1581
- //!
1582
- //! <b>Complexity</b>: Constant.
1583
- //!
1584
- //! <b>Throws</b>: Nothing.
1585
- const_iterator end() const
1586
- { return tree_.end(); }
671
+ //! @copydoc ::boost::intrusive::treap::end()const
672
+ const_iterator end() const;
1587
673
 
1588
- //! <b>Effects</b>: Returns a const_iterator pointing to the end of the treap_multiset.
1589
- //!
1590
- //! <b>Complexity</b>: Constant.
1591
- //!
1592
- //! <b>Throws</b>: Nothing.
1593
- const_iterator cend() const
1594
- { return tree_.cend(); }
674
+ //! @copydoc ::boost::intrusive::treap::cend()const
675
+ const_iterator cend() const;
1595
676
 
1596
- //! <b>Effects</b>: Returns an iterator pointing to the highest priority object of the tree.
1597
- //!
1598
- //! <b>Complexity</b>: Constant.
1599
- //!
1600
- //! <b>Throws</b>: Nothing.
1601
- iterator top()
1602
- { return tree_.top(); }
677
+ //! @copydoc ::boost::intrusive::treap::rbegin()
678
+ reverse_iterator rbegin();
1603
679
 
1604
- //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
1605
- //!
1606
- //! <b>Complexity</b>: Constant.
1607
- //!
1608
- //! <b>Throws</b>: Nothing.
1609
- const_iterator top() const
1610
- { return this->ctop(); }
680
+ //! @copydoc ::boost::intrusive::treap::rbegin()const
681
+ const_reverse_iterator rbegin() const;
1611
682
 
1612
- //! <b>Effects</b>: Returns a const_iterator pointing to the highest priority object of the tree..
1613
- //!
1614
- //! <b>Complexity</b>: Constant.
1615
- //!
1616
- //! <b>Throws</b>: Nothing.
1617
- const_iterator ctop() const
1618
- { return tree_.ctop(); }
683
+ //! @copydoc ::boost::intrusive::treap::crbegin()const
684
+ const_reverse_iterator crbegin() const;
1619
685
 
1620
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning of the
1621
- //! reversed treap_multiset.
1622
- //!
1623
- //! <b>Complexity</b>: Constant.
1624
- //!
1625
- //! <b>Throws</b>: Nothing.
1626
- reverse_iterator rbegin()
1627
- { return tree_.rbegin(); }
686
+ //! @copydoc ::boost::intrusive::treap::rend()
687
+ reverse_iterator rend();
1628
688
 
1629
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
1630
- //! of the reversed treap_multiset.
1631
- //!
1632
- //! <b>Complexity</b>: Constant.
1633
- //!
1634
- //! <b>Throws</b>: Nothing.
1635
- const_reverse_iterator rbegin() const
1636
- { return tree_.rbegin(); }
689
+ //! @copydoc ::boost::intrusive::treap::rend()const
690
+ const_reverse_iterator rend() const;
1637
691
 
1638
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
1639
- //! of the reversed treap_multiset.
1640
- //!
1641
- //! <b>Complexity</b>: Constant.
1642
- //!
1643
- //! <b>Throws</b>: Nothing.
1644
- const_reverse_iterator crbegin() const
1645
- { return tree_.crbegin(); }
692
+ //! @copydoc ::boost::intrusive::treap::crend()const
693
+ const_reverse_iterator crend() const;
1646
694
 
1647
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
1648
- //! of the reversed treap_multiset.
1649
- //!
1650
- //! <b>Complexity</b>: Constant.
1651
- //!
1652
- //! <b>Throws</b>: Nothing.
1653
- reverse_iterator rend()
1654
- { return tree_.rend(); }
695
+ //! @copydoc ::boost::intrusive::treap::container_from_end_iterator(iterator)
696
+ static treap_multiset_impl &container_from_end_iterator(iterator end_iterator);
1655
697
 
1656
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
1657
- //! of the reversed treap_multiset.
1658
- //!
1659
- //! <b>Complexity</b>: Constant.
1660
- //!
1661
- //! <b>Throws</b>: Nothing.
1662
- const_reverse_iterator rend() const
1663
- { return tree_.rend(); }
698
+ //! @copydoc ::boost::intrusive::treap::container_from_end_iterator(const_iterator)
699
+ static const treap_multiset_impl &container_from_end_iterator(const_iterator end_iterator);
1664
700
 
1665
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
1666
- //! of the reversed treap_multiset.
1667
- //!
1668
- //! <b>Complexity</b>: Constant.
1669
- //!
1670
- //! <b>Throws</b>: Nothing.
1671
- const_reverse_iterator crend() const
1672
- { return tree_.crend(); }
701
+ //! @copydoc ::boost::intrusive::treap::container_from_iterator(iterator)
702
+ static treap_multiset_impl &container_from_iterator(iterator it);
1673
703
 
1674
- //! <b>Effects</b>: Returns a reverse_iterator pointing to the highest priority object of the
1675
- //! reversed tree.
1676
- //!
1677
- //! <b>Complexity</b>: Constant.
1678
- //!
1679
- //! <b>Throws</b>: Nothing.
1680
- reverse_iterator rtop()
1681
- { return tree_.rtop(); }
704
+ //! @copydoc ::boost::intrusive::treap::container_from_iterator(const_iterator)
705
+ static const treap_multiset_impl &container_from_iterator(const_iterator it);
1682
706
 
1683
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority objec
1684
- //! of the reversed tree.
1685
- //!
1686
- //! <b>Complexity</b>: Constant.
1687
- //!
1688
- //! <b>Throws</b>: Nothing.
1689
- const_reverse_iterator rtop() const
1690
- { return tree_.crtop(); }
707
+ //! @copydoc ::boost::intrusive::treap::key_comp()const
708
+ key_compare key_comp() const;
1691
709
 
1692
- //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the highest priority object
1693
- //! of the reversed tree.
1694
- //!
1695
- //! <b>Complexity</b>: Constant.
1696
- //!
1697
- //! <b>Throws</b>: Nothing.
1698
- const_reverse_iterator crtop() const
1699
- { return tree_.crtop(); }
710
+ //! @copydoc ::boost::intrusive::treap::value_comp()const
711
+ value_compare value_comp() const;
1700
712
 
1701
- //! <b>Precondition</b>: end_iterator must be a valid end iterator
1702
- //! of treap_multiset.
1703
- //!
1704
- //! <b>Effects</b>: Returns a const reference to the treap_multiset associated to the end iterator
1705
- //!
1706
- //! <b>Throws</b>: Nothing.
1707
- //!
1708
- //! <b>Complexity</b>: Constant.
1709
- static treap_multiset_impl &container_from_end_iterator(iterator end_iterator)
1710
- {
1711
- return *detail::parent_from_member<treap_multiset_impl, tree_type>
1712
- ( &tree_type::container_from_end_iterator(end_iterator)
1713
- , &treap_multiset_impl::tree_);
1714
- }
1715
-
1716
- //! <b>Precondition</b>: end_iterator must be a valid end const_iterator
1717
- //! of treap_multiset.
1718
- //!
1719
- //! <b>Effects</b>: Returns a const reference to the treap_multiset associated to the end iterator
1720
- //!
1721
- //! <b>Throws</b>: Nothing.
1722
- //!
1723
- //! <b>Complexity</b>: Constant.
1724
- static const treap_multiset_impl &container_from_end_iterator(const_iterator end_iterator)
1725
- {
1726
- return *detail::parent_from_member<treap_multiset_impl, tree_type>
1727
- ( &tree_type::container_from_end_iterator(end_iterator)
1728
- , &treap_multiset_impl::tree_);
1729
- }
1730
-
1731
- //! <b>Precondition</b>: it must be a valid iterator of multiset.
1732
- //!
1733
- //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
1734
- //!
1735
- //! <b>Throws</b>: Nothing.
1736
- //!
1737
- //! <b>Complexity</b>: Constant.
1738
- static treap_multiset_impl &container_from_iterator(iterator it)
1739
- {
1740
- return *detail::parent_from_member<treap_multiset_impl, tree_type>
1741
- ( &tree_type::container_from_iterator(it)
1742
- , &treap_multiset_impl::tree_);
1743
- }
1744
-
1745
- //! <b>Precondition</b>: it must be a valid const_iterator of multiset.
1746
- //!
1747
- //! <b>Effects</b>: Returns a const reference to the multiset associated to the iterator
1748
- //!
1749
- //! <b>Throws</b>: Nothing.
1750
- //!
1751
- //! <b>Complexity</b>: Constant.
1752
- static const treap_multiset_impl &container_from_iterator(const_iterator it)
1753
- {
1754
- return *detail::parent_from_member<treap_multiset_impl, tree_type>
1755
- ( &tree_type::container_from_iterator(it)
1756
- , &treap_multiset_impl::tree_);
1757
- }
1758
-
1759
- //! <b>Effects</b>: Returns the key_compare object used by the treap_multiset.
1760
- //!
1761
- //! <b>Complexity</b>: Constant.
1762
- //!
1763
- //! <b>Throws</b>: If key_compare copy-constructor throws.
1764
- key_compare key_comp() const
1765
- { return tree_.value_comp(); }
713
+ //! @copydoc ::boost::intrusive::treap::empty()const
714
+ bool empty() const;
1766
715
 
1767
- //! <b>Effects</b>: Returns the value_compare object used by the treap_multiset.
1768
- //!
1769
- //! <b>Complexity</b>: Constant.
1770
- //!
1771
- //! <b>Throws</b>: If value_compare copy-constructor throws.
1772
- value_compare value_comp() const
1773
- { return tree_.value_comp(); }
716
+ //! @copydoc ::boost::intrusive::treap::size()const
717
+ size_type size() const;
1774
718
 
1775
- //! <b>Effects</b>: Returns the priority_compare object used by the treap_multiset.
1776
- //!
1777
- //! <b>Complexity</b>: Constant.
1778
- //!
1779
- //! <b>Throws</b>: If priority_compare copy-constructor throws.
1780
- priority_compare priority_comp() const
1781
- { return tree_.priority_comp(); }
719
+ //! @copydoc ::boost::intrusive::treap::swap
720
+ void swap(treap_multiset_impl& other);
1782
721
 
1783
- //! <b>Effects</b>: Returns true if the container is empty.
1784
- //!
1785
- //! <b>Complexity</b>: Constant.
1786
- //!
1787
- //! <b>Throws</b>: Nothing.
1788
- bool empty() const
1789
- { return tree_.empty(); }
722
+ //! @copydoc ::boost::intrusive::treap::clone_from(const treap&,Cloner,Disposer)
723
+ template <class Cloner, class Disposer>
724
+ void clone_from(const treap_multiset_impl &src, Cloner cloner, Disposer disposer);
1790
725
 
1791
- //! <b>Effects</b>: Returns the number of elements stored in the treap_multiset.
1792
- //!
1793
- //! <b>Complexity</b>: Linear to elements contained in *this if,
1794
- //! constant-time size option is enabled. Constant-time otherwise.
1795
- //!
1796
- //! <b>Throws</b>: Nothing.
1797
- size_type size() const
1798
- { return tree_.size(); }
726
+ #else
1799
727
 
1800
- //! <b>Effects</b>: Swaps the contents of two treap_multisets.
1801
- //!
1802
- //! <b>Complexity</b>: Constant.
1803
- //!
1804
- //! <b>Throws</b>: If the swap() call for the comparison functor
1805
- //! found using ADL throws. Strong guarantee.
1806
- void swap(treap_multiset_impl& other)
1807
- { tree_.swap(other.tree_); }
728
+ using tree_type::clone_from;
1808
729
 
1809
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1810
- //! Cloner should yield to nodes equivalent to the original nodes.
1811
- //!
1812
- //! <b>Effects</b>: Erases all the elements from *this
1813
- //! calling Disposer::operator()(pointer), clones all the
1814
- //! elements from src calling Cloner::operator()(const_reference )
1815
- //! and inserts them on *this. Copies the predicate from the source container.
1816
- //!
1817
- //! If cloner throws, all cloned elements are unlinked and disposed
1818
- //! calling Disposer::operator()(pointer).
1819
- //!
1820
- //! <b>Complexity</b>: Linear to erased plus inserted elements.
1821
- //!
1822
- //! <b>Throws</b>: If cloner throws or predicate copy assignment throws. Basic guarantee.
730
+ #endif
731
+
732
+ //! @copydoc ::boost::intrusive::treap::clone_from(treap&&,Cloner,Disposer)
1823
733
  template <class Cloner, class Disposer>
1824
- void clone_from(const treap_multiset_impl &src, Cloner cloner, Disposer disposer)
1825
- { tree_.clone_from(src.tree_, cloner, disposer); }
734
+ void clone_from(BOOST_RV_REF(treap_multiset_impl) src, Cloner cloner, Disposer disposer)
735
+ { tree_type::clone_from(BOOST_MOVE_BASE(tree_type, src), cloner, disposer); }
1826
736
 
1827
- //! <b>Requires</b>: value must be an lvalue
1828
- //!
1829
- //! <b>Effects</b>: Inserts value into the treap_multiset.
1830
- //!
1831
- //! <b>Returns</b>: An iterator that points to the position where the new
1832
- //! element was inserted.
1833
- //!
1834
- //! <b>Complexity</b>: Average complexity for insert element is at
1835
- //! most logarithmic.
1836
- //!
1837
- //! <b>Throws</b>: If the internal value_compare or priority_compare ordering
1838
- //! function throws. Strong guarantee.
1839
- //!
1840
- //! <b>Note</b>: Does not affect the validity of iterators and references.
1841
- //! No copy-constructors are called.
1842
- iterator insert(reference value)
1843
- { return tree_.insert_equal(value); }
737
+ #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
1844
738
 
1845
- //! <b>Requires</b>: value must be an lvalue
1846
- //!
1847
- //! <b>Effects</b>: Inserts x into the treap_multiset, using pos as a hint to
1848
- //! where it will be inserted.
1849
- //!
1850
- //! <b>Returns</b>: An iterator that points to the position where the new
1851
- //! element was inserted.
1852
- //!
1853
- //! <b>Complexity</b>: Logarithmic in general, but it is amortized
1854
- //! constant time if t is inserted immediately before hint.
1855
- //!
1856
- //! <b>Throws</b>: If internal value_compare or priority_compare ordering functions throw.
1857
- //! Strong guarantee.
1858
- //!
1859
- //! <b>Note</b>: Does not affect the validity of iterators and references.
1860
- //! No copy-constructors are called.
739
+ //! @copydoc ::boost::intrusive::treap::top()
740
+ iterator top();
741
+
742
+ //! @copydoc ::boost::intrusive::treap::top()const
743
+ const_iterator top() const;
744
+
745
+ //! @copydoc ::boost::intrusive::treap::ctop()const
746
+ const_iterator ctop() const;
747
+
748
+ //! @copydoc ::boost::intrusive::treap::rtop()
749
+ reverse_iterator rtop();
750
+
751
+ //! @copydoc ::boost::intrusive::treap::rtop()const
752
+ const_reverse_iterator rtop() const;
753
+
754
+ //! @copydoc ::boost::intrusive::treap::crtop()const
755
+ const_reverse_iterator crtop() const;
756
+
757
+ //! @copydoc ::boost::intrusive::treap::crtop() const
758
+ priority_compare priority_comp() const;
759
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
760
+
761
+ //! @copydoc ::boost::intrusive::treap::insert_equal(reference)
762
+ iterator insert(reference value)
763
+ { return tree_type::insert_equal(value); }
764
+
765
+ //! @copydoc ::boost::intrusive::treap::insert_equal(const_iterator,reference)
1861
766
  iterator insert(const_iterator hint, reference value)
1862
- { return tree_.insert_equal(hint, value); }
767
+ { return tree_type::insert_equal(hint, value); }
1863
768
 
1864
- //! <b>Requires</b>: Dereferencing iterator must yield an lvalue
1865
- //! of type value_type.
1866
- //!
1867
- //! <b>Effects</b>: Inserts a range into the treap_multiset.
1868
- //!
1869
- //! <b>Returns</b>: An iterator that points to the position where the new
1870
- //! element was inserted.
1871
- //!
1872
- //! <b>Complexity</b>: Insert range is in general O(N * log(N)), where N is the
1873
- //! size of the range. However, it is linear in N if the range is already sorted
1874
- //! by value_comp().
1875
- //!
1876
- //! <b>Throws</b>: If internal value_compare or priority_compare ordering functions throw.
1877
- //! Basic guarantee.
1878
- //!
1879
- //! <b>Note</b>: Does not affect the validity of iterators and references.
1880
- //! No copy-constructors are called.
769
+ //! @copydoc ::boost::intrusive::treap::insert_equal(Iterator,Iterator)
1881
770
  template<class Iterator>
1882
771
  void insert(Iterator b, Iterator e)
1883
- { tree_.insert_equal(b, e); }
772
+ { tree_type::insert_equal(b, e); }
1884
773
 
1885
- //! <b>Requires</b>: value must be an lvalue, "pos" must be
1886
- //! a valid iterator (or end) and must be the succesor of value
1887
- //! once inserted according to the predicate
1888
- //!
1889
- //! <b>Effects</b>: Inserts x into the treap before "pos".
1890
- //!
1891
- //! <b>Complexity</b>: Constant time.
1892
- //!
1893
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
1894
- //!
1895
- //! <b>Note</b>: This function does not check preconditions so if "pos" is not
1896
- //! the successor of "value" treap ordering invariant will be broken.
1897
- //! This is a low-level function to be used only for performance reasons
1898
- //! by advanced users.
1899
- iterator insert_before(const_iterator pos, reference value)
1900
- { return tree_.insert_before(pos, value); }
1901
-
1902
- //! <b>Requires</b>: value must be an lvalue, and it must be no less
1903
- //! than the greatest inserted key.
1904
- //!
1905
- //! <b>Effects</b>: Inserts x into the treap in the last position.
1906
- //!
1907
- //! <b>Complexity</b>: Constant time.
1908
- //!
1909
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
1910
- //!
1911
- //! <b>Note</b>: This function does not check preconditions so if value is
1912
- //! less than the greatest inserted key treap ordering invariant will be broken.
1913
- //! This function is slightly more efficient than using "insert_before".
1914
- //! This is a low-level function to be used only for performance reasons
1915
- //! by advanced users.
1916
- void push_back(reference value)
1917
- { tree_.push_back(value); }
1918
-
1919
- //! <b>Requires</b>: value must be an lvalue, and it must be no greater
1920
- //! than the minimum inserted key
1921
- //!
1922
- //! <b>Effects</b>: Inserts x into the treap in the first position.
1923
- //!
1924
- //! <b>Complexity</b>: Constant time.
1925
- //!
1926
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
1927
- //!
1928
- //! <b>Note</b>: This function does not check preconditions so if value is
1929
- //! greater than the minimum inserted key treap ordering invariant will be broken.
1930
- //! This function is slightly more efficient than using "insert_before".
1931
- //! This is a low-level function to be used only for performance reasons
1932
- //! by advanced users.
1933
- void push_front(reference value)
1934
- { tree_.push_front(value); }
1935
-
1936
- //! <b>Effects</b>: Erases the element pointed to by pos.
1937
- //!
1938
- //! <b>Complexity</b>: Average complexity is constant time.
1939
- //!
1940
- //! <b>Returns</b>: An iterator to the element after the erased element.
1941
- //!
1942
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
1943
- //!
1944
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1945
- //! to the erased elements. No destructors are called.
1946
- iterator erase(const_iterator i)
1947
- { return tree_.erase(i); }
774
+ #ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
775
+ //! @copydoc ::boost::intrusive::treap::insert_before
776
+ iterator insert_before(const_iterator pos, reference value);
1948
777
 
1949
- //! <b>Effects</b>: Erases the range pointed to by b end e.
1950
- //!
1951
- //! <b>Returns</b>: An iterator to the element after the erased elements.
1952
- //!
1953
- //! <b>Complexity</b>: Average complexity for erase range is at most
1954
- //! O(log(size() + N)), where N is the number of elements in the range.
1955
- //!
1956
- //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
1957
- //!
1958
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1959
- //! to the erased elements. No destructors are called.
1960
- iterator erase(const_iterator b, const_iterator e)
1961
- { return tree_.erase(b, e); }
778
+ //! @copydoc ::boost::intrusive::treap::push_back
779
+ void push_back(reference value);
1962
780
 
1963
- //! <b>Effects</b>: Erases all the elements with the given value.
1964
- //!
1965
- //! <b>Returns</b>: The number of erased elements.
1966
- //!
1967
- //! <b>Complexity</b>: O(log(size() + this->count(value)).
1968
- //!
1969
- //! <b>Throws</b>: If the internal value_compare or priority_compare ordering
1970
- //! functiona throw. Basic guarantee.
1971
- //!
1972
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1973
- //! to the erased elements. No destructors are called.
1974
- size_type erase(const_reference value)
1975
- { return tree_.erase(value); }
781
+ //! @copydoc ::boost::intrusive::treap::push_front
782
+ void push_front(reference value);
1976
783
 
1977
- //! <b>Effects</b>: Erases all the elements that compare equal with
1978
- //! the given key and the given comparison functor.
1979
- //!
1980
- //! <b>Returns</b>: The number of erased elements.
1981
- //!
1982
- //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
1983
- //!
1984
- //! <b>Throws</b>: If comp or internal priority_compare ordering functions throw. Basic guarantee.
1985
- //!
1986
- //! <b>Note</b>: Invalidates the iterators (but not the references)
1987
- //! to the erased elements. No destructors are called.
1988
- template<class KeyType, class KeyValueCompare>
1989
- size_type erase(const KeyType& key, KeyValueCompare comp
1990
- /// @cond
1991
- , typename detail::enable_if_c<!detail::is_convertible<KeyValueCompare, const_iterator>::value >::type * = 0
1992
- /// @endcond
1993
- )
1994
- { return tree_.erase(key, comp); }
1995
-
1996
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
1997
- //!
1998
- //! <b>Returns</b>: An iterator to the element after the erased element.
1999
- //!
2000
- //! <b>Effects</b>: Erases the element pointed to by pos.
2001
- //! Disposer::operator()(pointer) is called for the removed element.
2002
- //!
2003
- //! <b>Complexity</b>: Average complexity for erase element is constant time.
2004
- //!
2005
- //! <b>Throws</b>: If the internal priority_compare function throws. Strong guarantee.
2006
- //!
2007
- //! <b>Note</b>: Invalidates the iterators
2008
- //! to the erased elements.
2009
- template<class Disposer>
2010
- iterator erase_and_dispose(const_iterator i, Disposer disposer)
2011
- { return tree_.erase_and_dispose(i, disposer); }
784
+ //! @copydoc ::boost::intrusive::treap::erase(const_iterator)
785
+ iterator erase(const_iterator i);
786
+
787
+ //! @copydoc ::boost::intrusive::treap::erase(const_iterator,const_iterator)
788
+ iterator erase(const_iterator b, const_iterator e);
789
+
790
+ //! @copydoc ::boost::intrusive::treap::erase(const key_type &)
791
+ size_type erase(const key_type &key);
2012
792
 
2013
- #if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
793
+ //! @copydoc ::boost::intrusive::treap::erase(const KeyType&,KeyTypeKeyCompare)
794
+ template<class KeyType, class KeyTypeKeyCompare>
795
+ size_type erase(const KeyType& key, KeyTypeKeyCompare comp);
796
+
797
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const_iterator,Disposer)
2014
798
  template<class Disposer>
2015
- iterator erase_and_dispose(iterator i, Disposer disposer)
2016
- { return this->erase_and_dispose(const_iterator(i), disposer); }
2017
- #endif
799
+ iterator erase_and_dispose(const_iterator i, Disposer disposer);
2018
800
 
2019
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
2020
- //!
2021
- //! <b>Returns</b>: An iterator to the element after the erased elements.
2022
- //!
2023
- //! <b>Effects</b>: Erases the range pointed to by b end e.
2024
- //! Disposer::operator()(pointer) is called for the removed elements.
2025
- //!
2026
- //! <b>Complexity</b>: Average complexity for erase range is at most
2027
- //! O(log(size() + N)), where N is the number of elements in the range.
2028
- //!
2029
- //! <b>Throws</b>: If the internal priority_compare function throws. Basic guarantee.
2030
- //!
2031
- //! <b>Note</b>: Invalidates the iterators
2032
- //! to the erased elements.
801
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const_iterator,const_iterator,Disposer)
2033
802
  template<class Disposer>
2034
- iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer)
2035
- { return tree_.erase_and_dispose(b, e, disposer); }
803
+ iterator erase_and_dispose(const_iterator b, const_iterator e, Disposer disposer);
2036
804
 
2037
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
2038
- //!
2039
- //! <b>Effects</b>: Erases all the elements with the given value.
2040
- //! Disposer::operator()(pointer) is called for the removed elements.
2041
- //!
2042
- //! <b>Returns</b>: The number of erased elements.
2043
- //!
2044
- //! <b>Complexity</b>: O(log(size() + this->count(value)).
2045
- //!
2046
- //! <b>Throws</b>: If the internal value_compare ordering function throws. Basic guarantee.
2047
- //!
2048
- //! <b>Note</b>: Invalidates the iterators (but not the references)
2049
- //! to the erased elements. No destructors are called.
805
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const key_type &, Disposer)
2050
806
  template<class Disposer>
2051
- size_type erase_and_dispose(const_reference value, Disposer disposer)
2052
- { return tree_.erase_and_dispose(value, disposer); }
807
+ size_type erase_and_dispose(const key_type &key, Disposer disposer);
2053
808
 
2054
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
2055
- //!
2056
- //! <b>Effects</b>: Erases all the elements with the given key.
2057
- //! according to the comparison functor "comp".
2058
- //! Disposer::operator()(pointer) is called for the removed elements.
2059
- //!
2060
- //! <b>Returns</b>: The number of erased elements.
2061
- //!
2062
- //! <b>Complexity</b>: O(log(size() + this->count(key, comp)).
2063
- //!
2064
- //! <b>Throws</b>: If comp or internal priority_compare ordering functions throw. Basic guarantee.
2065
- //!
2066
- //! <b>Note</b>: Invalidates the iterators
2067
- //! to the erased elements.
2068
- template<class KeyType, class KeyValueCompare, class Disposer>
2069
- size_type erase_and_dispose(const KeyType& key, KeyValueCompare comp, Disposer disposer
2070
- /// @cond
2071
- , typename detail::enable_if_c<!detail::is_convertible<KeyValueCompare, const_iterator>::value >::type * = 0
2072
- /// @endcond
2073
- )
2074
- { return tree_.erase_and_dispose(key, comp, disposer); }
2075
-
2076
- //! <b>Effects</b>: Erases all the elements of the container.
2077
- //!
2078
- //! <b>Complexity</b>: Linear to the number of elements on the container.
2079
- //! if it's a safe-mode or auto-unlink value_type. Constant time otherwise.
2080
- //!
2081
- //! <b>Throws</b>: Nothing.
2082
- //!
2083
- //! <b>Note</b>: Invalidates the iterators (but not the references)
2084
- //! to the erased elements. No destructors are called.
2085
- void clear()
2086
- { return tree_.clear(); }
809
+ //! @copydoc ::boost::intrusive::treap::erase_and_dispose(const KeyType&,KeyTypeKeyCompare,Disposer)
810
+ template<class KeyType, class KeyTypeKeyCompare, class Disposer>
811
+ size_type erase_and_dispose(const KeyType& key, KeyTypeKeyCompare comp, Disposer disposer);
2087
812
 
2088
- //! <b>Requires</b>: Disposer::operator()(pointer) shouldn't throw.
2089
- //!
2090
- //! <b>Effects</b>: Erases all the elements of the container.
2091
- //!
2092
- //! <b>Complexity</b>: Linear to the number of elements on the container.
2093
- //! Disposer::operator()(pointer) is called for the removed elements.
2094
- //!
2095
- //! <b>Throws</b>: Nothing.
2096
- //!
2097
- //! <b>Note</b>: Invalidates the iterators (but not the references)
2098
- //! to the erased elements. No destructors are called.
813
+ //! @copydoc ::boost::intrusive::treap::clear
814
+ void clear();
815
+
816
+ //! @copydoc ::boost::intrusive::treap::clear_and_dispose
2099
817
  template<class Disposer>
2100
- void clear_and_dispose(Disposer disposer)
2101
- { return tree_.clear_and_dispose(disposer); }
818
+ void clear_and_dispose(Disposer disposer);
2102
819
 
2103
- //! <b>Effects</b>: Returns the number of contained elements with the given key
2104
- //!
2105
- //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
2106
- //! to number of objects with the given key.
2107
- //!
2108
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2109
- size_type count(const_reference value) const
2110
- { return tree_.count(value); }
820
+ //! @copydoc ::boost::intrusive::treap::count(const key_type &)const
821
+ size_type count(const key_type &key) const;
2111
822
 
2112
- //! <b>Effects</b>: Returns the number of contained elements with the same key
2113
- //! compared with the given comparison functor.
2114
- //!
2115
- //! <b>Complexity</b>: Logarithmic to the number of elements contained plus lineal
2116
- //! to number of objects with the given key.
2117
- //!
2118
- //! <b>Throws</b>: If comp ordering function throws.
2119
- template<class KeyType, class KeyValueCompare>
2120
- size_type count(const KeyType& key, KeyValueCompare comp) const
2121
- { return tree_.count(key, comp); }
823
+ //! @copydoc ::boost::intrusive::treap::count(const KeyType&,KeyTypeKeyCompare)const
824
+ template<class KeyType, class KeyTypeKeyCompare>
825
+ size_type count(const KeyType& key, KeyTypeKeyCompare comp) const;
2122
826
 
2123
- //! <b>Effects</b>: Returns an iterator to the first element whose
2124
- //! key is not less than k or end() if that element does not exist.
2125
- //!
2126
- //! <b>Complexity</b>: Logarithmic.
2127
- //!
2128
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2129
- iterator lower_bound(const_reference value)
2130
- { return tree_.lower_bound(value); }
827
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const key_type &)
828
+ iterator lower_bound(const key_type &key);
2131
829
 
2132
- //! <b>Requires</b>: comp must imply the same element order as
2133
- //! value_compare. Usually key is the part of the value_type
2134
- //! that is used in the ordering functor.
2135
- //!
2136
- //! <b>Effects</b>: Returns an iterator to the first element whose
2137
- //! key according to the comparison functor is not less than k or
2138
- //! end() if that element does not exist.
2139
- //!
2140
- //! <b>Complexity</b>: Logarithmic.
2141
- //!
2142
- //! <b>Throws</b>: If comp ordering function throws.
2143
- //!
2144
- //! <b>Note</b>: This function is used when constructing a value_type
2145
- //! is expensive and the value_type can be compared with a cheaper
2146
- //! key type. Usually this key is part of the value_type.
2147
- template<class KeyType, class KeyValueCompare>
2148
- iterator lower_bound(const KeyType& key, KeyValueCompare comp)
2149
- { return tree_.lower_bound(key, comp); }
2150
-
2151
- //! <b>Effects</b>: Returns a const iterator to the first element whose
2152
- //! key is not less than k or end() if that element does not exist.
2153
- //!
2154
- //! <b>Complexity</b>: Logarithmic.
2155
- //!
2156
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2157
- const_iterator lower_bound(const_reference value) const
2158
- { return tree_.lower_bound(value); }
830
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const KeyType&,KeyTypeKeyCompare)
831
+ template<class KeyType, class KeyTypeKeyCompare>
832
+ iterator lower_bound(const KeyType& key, KeyTypeKeyCompare comp);
2159
833
 
2160
- //! <b>Requires</b>: comp must imply the same element order as
2161
- //! value_compare. Usually key is the part of the value_type
2162
- //! that is used in the ordering functor.
2163
- //!
2164
- //! <b>Effects</b>: Returns a const_iterator to the first element whose
2165
- //! key according to the comparison functor is not less than k or
2166
- //! end() if that element does not exist.
2167
- //!
2168
- //! <b>Complexity</b>: Logarithmic.
2169
- //!
2170
- //! <b>Throws</b>: If comp ordering function throws.
2171
- //!
2172
- //! <b>Note</b>: This function is used when constructing a value_type
2173
- //! is expensive and the value_type can be compared with a cheaper
2174
- //! key type. Usually this key is part of the value_type.
2175
- template<class KeyType, class KeyValueCompare>
2176
- const_iterator lower_bound(const KeyType& key, KeyValueCompare comp) const
2177
- { return tree_.lower_bound(key, comp); }
2178
-
2179
- //! <b>Effects</b>: Returns an iterator to the first element whose
2180
- //! key is greater than k or end() if that element does not exist.
2181
- //!
2182
- //! <b>Complexity</b>: Logarithmic.
2183
- //!
2184
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2185
- iterator upper_bound(const_reference value)
2186
- { return tree_.upper_bound(value); }
834
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const key_type &)const
835
+ const_iterator lower_bound(const key_type &key) const;
2187
836
 
2188
- //! <b>Requires</b>: comp must imply the same element order as
2189
- //! value_compare. Usually key is the part of the value_type
2190
- //! that is used in the ordering functor.
2191
- //!
2192
- //! <b>Effects</b>: Returns an iterator to the first element whose
2193
- //! key according to the comparison functor is greater than key or
2194
- //! end() if that element does not exist.
2195
- //!
2196
- //! <b>Complexity</b>: Logarithmic.
2197
- //!
2198
- //! <b>Throws</b>: If comp ordering function throws.
2199
- //!
2200
- //! <b>Note</b>: This function is used when constructing a value_type
2201
- //! is expensive and the value_type can be compared with a cheaper
2202
- //! key type. Usually this key is part of the value_type.
2203
- template<class KeyType, class KeyValueCompare>
2204
- iterator upper_bound(const KeyType& key, KeyValueCompare comp)
2205
- { return tree_.upper_bound(key, comp); }
2206
-
2207
- //! <b>Effects</b>: Returns an iterator to the first element whose
2208
- //! key is greater than k or end() if that element does not exist.
2209
- //!
2210
- //! <b>Complexity</b>: Logarithmic.
2211
- //!
2212
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2213
- const_iterator upper_bound(const_reference value) const
2214
- { return tree_.upper_bound(value); }
837
+ //! @copydoc ::boost::intrusive::treap::lower_bound(const KeyType&,KeyTypeKeyCompare)const
838
+ template<class KeyType, class KeyTypeKeyCompare>
839
+ const_iterator lower_bound(const KeyType& key, KeyTypeKeyCompare comp) const;
2215
840
 
2216
- //! <b>Requires</b>: comp must imply the same element order as
2217
- //! value_compare. Usually key is the part of the value_type
2218
- //! that is used in the ordering functor.
2219
- //!
2220
- //! <b>Effects</b>: Returns a const_iterator to the first element whose
2221
- //! key according to the comparison functor is greater than key or
2222
- //! end() if that element does not exist.
2223
- //!
2224
- //! <b>Complexity</b>: Logarithmic.
2225
- //!
2226
- //! <b>Throws</b>: If comp ordering function throws.
2227
- //!
2228
- //! <b>Note</b>: This function is used when constructing a value_type
2229
- //! is expensive and the value_type can be compared with a cheaper
2230
- //! key type. Usually this key is part of the value_type.
2231
- template<class KeyType, class KeyValueCompare>
2232
- const_iterator upper_bound(const KeyType& key, KeyValueCompare comp) const
2233
- { return tree_.upper_bound(key, comp); }
2234
-
2235
- //! <b>Effects</b>: Finds an iterator to the first element whose value is
2236
- //! "value" or end() if that element does not exist.
2237
- //!
2238
- //! <b>Complexity</b>: Logarithmic.
2239
- //!
2240
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2241
- iterator find(const_reference value)
2242
- { return tree_.find(value); }
841
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const key_type &)
842
+ iterator upper_bound(const key_type &key);
2243
843
 
2244
- //! <b>Requires</b>: comp must imply the same element order as
2245
- //! value_compare. Usually key is the part of the value_type
2246
- //! that is used in the ordering functor.
2247
- //!
2248
- //! <b>Effects</b>: Finds an iterator to the first element whose key is
2249
- //! "key" according to the comparison functor or end() if that element
2250
- //! does not exist.
2251
- //!
2252
- //! <b>Complexity</b>: Logarithmic.
2253
- //!
2254
- //! <b>Throws</b>: If comp ordering function throws.
2255
- //!
2256
- //! <b>Note</b>: This function is used when constructing a value_type
2257
- //! is expensive and the value_type can be compared with a cheaper
2258
- //! key type. Usually this key is part of the value_type.
2259
- template<class KeyType, class KeyValueCompare>
2260
- iterator find(const KeyType& key, KeyValueCompare comp)
2261
- { return tree_.find(key, comp); }
2262
-
2263
- //! <b>Effects</b>: Finds a const_iterator to the first element whose value is
2264
- //! "value" or end() if that element does not exist.
2265
- //!
2266
- //! <b>Complexity</b>: Logarithmic.
2267
- //!
2268
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2269
- const_iterator find(const_reference value) const
2270
- { return tree_.find(value); }
844
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const KeyType&,KeyTypeKeyCompare)
845
+ template<class KeyType, class KeyTypeKeyCompare>
846
+ iterator upper_bound(const KeyType& key, KeyTypeKeyCompare comp);
2271
847
 
2272
- //! <b>Requires</b>: comp must imply the same element order as
2273
- //! value_compare. Usually key is the part of the value_type
2274
- //! that is used in the ordering functor.
2275
- //!
2276
- //! <b>Effects</b>: Finds a const_iterator to the first element whose key is
2277
- //! "key" according to the comparison functor or end() if that element
2278
- //! does not exist.
2279
- //!
2280
- //! <b>Complexity</b>: Logarithmic.
2281
- //!
2282
- //! <b>Throws</b>: If comp ordering function throws.
2283
- //!
2284
- //! <b>Note</b>: This function is used when constructing a value_type
2285
- //! is expensive and the value_type can be compared with a cheaper
2286
- //! key type. Usually this key is part of the value_type.
2287
- template<class KeyType, class KeyValueCompare>
2288
- const_iterator find(const KeyType& key, KeyValueCompare comp) const
2289
- { return tree_.find(key, comp); }
2290
-
2291
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
2292
- //! an empty range that indicates the position where those elements would be
2293
- //! if they there is no elements with key k.
2294
- //!
2295
- //! <b>Complexity</b>: Logarithmic.
2296
- //!
2297
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
2298
- std::pair<iterator,iterator> equal_range(const_reference value)
2299
- { return tree_.equal_range(value); }
848
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const key_type &)const
849
+ const_iterator upper_bound(const key_type &key) const;
2300
850
 
2301
- //! <b>Requires</b>: comp must imply the same element order as
2302
- //! value_compare. Usually key is the part of the value_type
2303
- //! that is used in the ordering functor.
2304
- //!
2305
- //! <b>Effects</b>: Finds a range containing all elements whose key is k
2306
- //! according to the comparison functor or an empty range
2307
- //! that indicates the position where those elements would be
2308
- //! if they there is no elements with key k.
2309
- //!
2310
- //! <b>Complexity</b>: Logarithmic.
2311
- //!
2312
- //! <b>Throws</b>: If comp ordering function throws.
2313
- //!
2314
- //! <b>Note</b>: This function is used when constructing a value_type
2315
- //! is expensive and the value_type can be compared with a cheaper
2316
- //! key type. Usually this key is part of the value_type.
2317
- template<class KeyType, class KeyValueCompare>
2318
- std::pair<iterator,iterator> equal_range(const KeyType& key, KeyValueCompare comp)
2319
- { return tree_.equal_range(key, comp); }
2320
-
2321
- //! <b>Effects</b>: Finds a range containing all elements whose key is k or
2322
- //! an empty range that indicates the position where those elements would be
2323
- //! if they there is no elements with key k.
2324
- //!
2325
- //! <b>Complexity</b>: Logarithmic.
2326
- //!
2327
- //! <b>Throws</b>: If the internal value_compare ordering function throws.
851
+ //! @copydoc ::boost::intrusive::treap::upper_bound(const KeyType&,KeyTypeKeyCompare)const
852
+ template<class KeyType, class KeyTypeKeyCompare>
853
+ const_iterator upper_bound(const KeyType& key, KeyTypeKeyCompare comp) const;
854
+
855
+ //! @copydoc ::boost::intrusive::treap::find(const key_type &)
856
+ iterator find(const key_type &key);
857
+
858
+ //! @copydoc ::boost::intrusive::treap::find(const KeyType&,KeyTypeKeyCompare)
859
+ template<class KeyType, class KeyTypeKeyCompare>
860
+ iterator find(const KeyType& key, KeyTypeKeyCompare comp);
861
+
862
+ //! @copydoc ::boost::intrusive::treap::find(const key_type &)const
863
+ const_iterator find(const key_type &key) const;
864
+
865
+ //! @copydoc ::boost::intrusive::treap::find(const KeyType&,KeyTypeKeyCompare)const
866
+ template<class KeyType, class KeyTypeKeyCompare>
867
+ const_iterator find(const KeyType& key, KeyTypeKeyCompare comp) const;
868
+
869
+ //! @copydoc ::boost::intrusive::treap::equal_range(const key_type &)
870
+ std::pair<iterator,iterator> equal_range(const key_type &key);
871
+
872
+ //! @copydoc ::boost::intrusive::treap::equal_range(const KeyType&,KeyTypeKeyCompare)
873
+ template<class KeyType, class KeyTypeKeyCompare>
874
+ std::pair<iterator,iterator> equal_range(const KeyType& key, KeyTypeKeyCompare comp);
875
+
876
+ //! @copydoc ::boost::intrusive::treap::equal_range(const key_type &)const
2328
877
  std::pair<const_iterator, const_iterator>
2329
- equal_range(const_reference value) const
2330
- { return tree_.equal_range(value); }
878
+ equal_range(const key_type &key) const;
2331
879
 
2332
- //! <b>Requires</b>: comp must imply the same element order as
2333
- //! value_compare. Usually key is the part of the value_type
2334
- //! that is used in the ordering functor.
2335
- //!
2336
- //! <b>Effects</b>: Finds a range containing all elements whose key is k
2337
- //! according to the comparison functor or an empty range
2338
- //! that indicates the position where those elements would be
2339
- //! if they there is no elements with key k.
2340
- //!
2341
- //! <b>Complexity</b>: Logarithmic.
2342
- //!
2343
- //! <b>Throws</b>: If comp ordering function throws.
2344
- //!
2345
- //! <b>Note</b>: This function is used when constructing a value_type
2346
- //! is expensive and the value_type can be compared with a cheaper
2347
- //! key type. Usually this key is part of the value_type.
2348
- template<class KeyType, class KeyValueCompare>
880
+ //! @copydoc ::boost::intrusive::treap::equal_range(const KeyType&,KeyTypeKeyCompare)const
881
+ template<class KeyType, class KeyTypeKeyCompare>
2349
882
  std::pair<const_iterator, const_iterator>
2350
- equal_range(const KeyType& key, KeyValueCompare comp) const
2351
- { return tree_.equal_range(key, comp); }
883
+ equal_range(const KeyType& key, KeyTypeKeyCompare comp) const;
2352
884
 
2353
- //! <b>Requires</b>: 'lower_value' must not be greater than 'upper_value'. If
2354
- //! 'lower_value' == 'upper_value', ('left_closed' || 'right_closed') must be false.
2355
- //!
2356
- //! <b>Effects</b>: Returns an a pair with the following criteria:
2357
- //!
2358
- //! first = lower_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise
2359
- //!
2360
- //! second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) otherwise
2361
- //!
2362
- //! <b>Complexity</b>: Logarithmic.
2363
- //!
2364
- //! <b>Throws</b>: If the predicate throws.
2365
- //!
2366
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
2367
- //! and lower_bound for lower_value and upper_value.
885
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const key_type &,const key_type &,bool,bool)
2368
886
  std::pair<iterator,iterator> bounded_range
2369
- (const_reference lower_value, const_reference upper_value, bool left_closed, bool right_closed)
2370
- { return tree_.bounded_range(lower_value, upper_value, left_closed, right_closed); }
2371
-
2372
- //! <b>Requires</b>: KeyValueCompare is a function object that induces a strict weak
2373
- //! ordering compatible with the strict weak ordering used to create the
2374
- //! the tree.
2375
- //! 'lower_key' must not be greater than 'upper_key' according to 'comp'. If
2376
- //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be false.
2377
- //!
2378
- //! <b>Effects</b>: Returns an a pair with the following criteria:
2379
- //!
2380
- //! first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
2381
- //!
2382
- //! second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) otherwise
2383
- //!
2384
- //! <b>Complexity</b>: Logarithmic.
2385
- //!
2386
- //! <b>Throws</b>: If "comp" throws.
2387
- //!
2388
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
2389
- //! and lower_bound for lower_key and upper_key.
2390
- template<class KeyType, class KeyValueCompare>
887
+ (const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed);
888
+
889
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const KeyType&,const KeyType&,KeyTypeKeyCompare,bool,bool)
890
+ template<class KeyType, class KeyTypeKeyCompare>
2391
891
  std::pair<iterator,iterator> bounded_range
2392
- (const KeyType& lower_key, const KeyType& upper_key, KeyValueCompare comp, bool left_closed, bool right_closed)
2393
- { return tree_.bounded_range(lower_key, upper_key, comp, left_closed, right_closed); }
892
+ (const KeyType& lower_key, const KeyType& upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed);
2394
893
 
2395
- //! <b>Requires</b>: 'lower_value' must not be greater than 'upper_value'. If
2396
- //! 'lower_value' == 'upper_value', ('left_closed' || 'right_closed') must be false.
2397
- //!
2398
- //! <b>Effects</b>: Returns an a pair with the following criteria:
2399
- //!
2400
- //! first = lower_bound(lower_key) if left_closed, upper_bound(lower_key) otherwise
2401
- //!
2402
- //! second = upper_bound(upper_key) if right_closed, lower_bound(upper_key) otherwise
2403
- //!
2404
- //! <b>Complexity</b>: Logarithmic.
2405
- //!
2406
- //! <b>Throws</b>: If the predicate throws.
2407
- //!
2408
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
2409
- //! and lower_bound for lower_value and upper_value.
2410
- std::pair<const_iterator, const_iterator>
2411
- bounded_range(const_reference lower_value, const_reference upper_value, bool left_closed, bool right_closed) const
2412
- { return tree_.bounded_range(lower_value, upper_value, left_closed, right_closed); }
2413
-
2414
- //! <b>Requires</b>: KeyValueCompare is a function object that induces a strict weak
2415
- //! ordering compatible with the strict weak ordering used to create the
2416
- //! the tree.
2417
- //! 'lower_key' must not be greater than 'upper_key' according to 'comp'. If
2418
- //! 'lower_key' == 'upper_key', ('left_closed' || 'right_closed') must be false.
2419
- //!
2420
- //! <b>Effects</b>: Returns an a pair with the following criteria:
2421
- //!
2422
- //! first = lower_bound(lower_key, comp) if left_closed, upper_bound(lower_key, comp) otherwise
2423
- //!
2424
- //! second = upper_bound(upper_key, comp) if right_closed, lower_bound(upper_key, comp) otherwise
2425
- //!
2426
- //! <b>Complexity</b>: Logarithmic.
2427
- //!
2428
- //! <b>Throws</b>: If "comp" throws.
2429
- //!
2430
- //! <b>Note</b>: This function can be more efficient than calling upper_bound
2431
- //! and lower_bound for lower_key and upper_key.
2432
- template<class KeyType, class KeyValueCompare>
894
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const key_type &,const key_type &,bool,bool)const
2433
895
  std::pair<const_iterator, const_iterator>
2434
- bounded_range
2435
- (const KeyType& lower_key, const KeyType& upper_key, KeyValueCompare comp, bool left_closed, bool right_closed) const
2436
- { return tree_.bounded_range(lower_key, upper_key, comp, left_closed, right_closed); }
896
+ bounded_range(const key_type &lower_key, const key_type &upper_key, bool left_closed, bool right_closed) const;
2437
897
 
2438
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
2439
- //! appropriate type. Otherwise the behavior is undefined.
2440
- //!
2441
- //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_multiset
2442
- //! that points to the value
2443
- //!
2444
- //! <b>Complexity</b>: Constant.
2445
- //!
2446
- //! <b>Throws</b>: Nothing.
2447
- //!
2448
- //! <b>Note</b>: This static function is available only if the <i>value traits</i>
2449
- //! is stateless.
2450
- static iterator s_iterator_to(reference value)
2451
- { return tree_type::s_iterator_to(value); }
898
+ //! @copydoc ::boost::intrusive::treap::bounded_range(const KeyType&,const KeyType&,KeyTypeKeyCompare,bool,bool)const
899
+ template<class KeyType, class KeyTypeKeyCompare>
900
+ std::pair<const_iterator, const_iterator> bounded_range
901
+ (const KeyType& lower_key, const KeyType& upper_key, KeyTypeKeyCompare comp, bool left_closed, bool right_closed) const;
2452
902
 
2453
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
2454
- //! appropriate type. Otherwise the behavior is undefined.
2455
- //!
2456
- //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
2457
- //! treap_multiset that points to the value
2458
- //!
2459
- //! <b>Complexity</b>: Constant.
2460
- //!
2461
- //! <b>Throws</b>: Nothing.
2462
- //!
2463
- //! <b>Note</b>: This static function is available only if the <i>value traits</i>
2464
- //! is stateless.
2465
- static const_iterator s_iterator_to(const_reference value)
2466
- { return tree_type::s_iterator_to(value); }
903
+ //! @copydoc ::boost::intrusive::treap::s_iterator_to(reference)
904
+ static iterator s_iterator_to(reference value);
2467
905
 
2468
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
2469
- //! appropriate type. Otherwise the behavior is undefined.
2470
- //!
2471
- //! <b>Effects</b>: Returns: a valid iterator i belonging to the treap_multiset
2472
- //! that points to the value
2473
- //!
2474
- //! <b>Complexity</b>: Constant.
2475
- //!
2476
- //! <b>Throws</b>: Nothing.
2477
- iterator iterator_to(reference value)
2478
- { return tree_.iterator_to(value); }
906
+ //! @copydoc ::boost::intrusive::treap::s_iterator_to(const_reference)
907
+ static const_iterator s_iterator_to(const_reference value);
2479
908
 
2480
- //! <b>Requires</b>: value must be an lvalue and shall be in a treap_multiset of
2481
- //! appropriate type. Otherwise the behavior is undefined.
2482
- //!
2483
- //! <b>Effects</b>: Returns: a valid const_iterator i belonging to the
2484
- //! treap_multiset that points to the value
2485
- //!
2486
- //! <b>Complexity</b>: Constant.
2487
- //!
2488
- //! <b>Throws</b>: Nothing.
2489
- const_iterator iterator_to(const_reference value) const
2490
- { return tree_.iterator_to(value); }
909
+ //! @copydoc ::boost::intrusive::treap::iterator_to(reference)
910
+ iterator iterator_to(reference value);
2491
911
 
2492
- //! <b>Requires</b>: value shall not be in a treap_multiset/treap_multiset.
2493
- //!
2494
- //! <b>Effects</b>: init_node puts the hook of a value in a well-known default
2495
- //! state.
2496
- //!
2497
- //! <b>Throws</b>: Nothing.
2498
- //!
2499
- //! <b>Complexity</b>: Constant time.
2500
- //!
2501
- //! <b>Note</b>: This function puts the hook in the well-known default state
2502
- //! used by auto_unlink and safe hooks.
2503
- static void init_node(reference value)
2504
- { tree_type::init_node(value); }
912
+ //! @copydoc ::boost::intrusive::treap::iterator_to(const_reference)const
913
+ const_iterator iterator_to(const_reference value) const;
2505
914
 
2506
- //! <b>Effects</b>: Unlinks the leftmost node from the tree.
2507
- //!
2508
- //! <b>Complexity</b>: Average complexity is constant time.
2509
- //!
2510
- //! <b>Throws</b>: Nothing.
2511
- //!
2512
- //! <b>Notes</b>: This function breaks the tree and the tree can
2513
- //! only be used for more unlink_leftmost_without_rebalance calls.
2514
- //! This function is normally used to achieve a step by step
2515
- //! controlled destruction of the tree.
2516
- pointer unlink_leftmost_without_rebalance()
2517
- { return tree_.unlink_leftmost_without_rebalance(); }
2518
-
2519
- //! <b>Requires</b>: replace_this must be a valid iterator of *this
2520
- //! and with_this must not be inserted in any tree.
2521
- //!
2522
- //! <b>Effects</b>: Replaces replace_this in its position in the
2523
- //! tree with with_this. The tree does not need to be rebalanced.
2524
- //!
2525
- //! <b>Complexity</b>: Constant.
2526
- //!
2527
- //! <b>Throws</b>: Nothing.
2528
- //!
2529
- //! <b>Note</b>: This function will break container ordering invariants if
2530
- //! with_this is not equivalent to *replace_this according to the
2531
- //! ordering rules. This function is faster than erasing and inserting
2532
- //! the node, since no rebalancing or comparison is needed.
2533
- void replace_node(iterator replace_this, reference with_this)
2534
- { tree_.replace_node(replace_this, with_this); }
2535
-
2536
- //! <b>Effects</b>: Rebalances the tree.
2537
- //!
2538
- //! <b>Throws</b>: Nothing.
2539
- //!
2540
- //! <b>Complexity</b>: Linear.
2541
- void rebalance()
2542
- { tree_.rebalance(); }
915
+ //! @copydoc ::boost::intrusive::treap::init_node(reference)
916
+ static void init_node(reference value);
2543
917
 
2544
- //! <b>Requires</b>: old_root is a node of a tree.
2545
- //!
2546
- //! <b>Effects</b>: Rebalances the subtree rooted at old_root.
2547
- //!
2548
- //! <b>Returns</b>: The new root of the subtree.
2549
- //!
2550
- //! <b>Throws</b>: Nothing.
2551
- //!
2552
- //! <b>Complexity</b>: Linear to the elements in the subtree.
2553
- iterator rebalance_subtree(iterator root)
2554
- { return tree_.rebalance_subtree(root); }
918
+ //! @copydoc ::boost::intrusive::treap::unlink_leftmost_without_rebalance
919
+ pointer unlink_leftmost_without_rebalance();
2555
920
 
2556
- //! <b>Returns</b>: The balance factor (alpha) used in this tree
2557
- //!
2558
- //! <b>Throws</b>: Nothing.
2559
- //!
2560
- //! <b>Complexity</b>: Constant.
2561
- float balance_factor() const
2562
- { return tree_.balance_factor(); }
921
+ //! @copydoc ::boost::intrusive::treap::replace_node
922
+ void replace_node(iterator replace_this, reference with_this);
2563
923
 
2564
- //! <b>Requires</b>: new_alpha must be a value between 0.5 and 1.0
2565
- //!
2566
- //! <b>Effects</b>: Establishes a new balance factor (alpha) and rebalances
2567
- //! the tree if the new balance factor is stricter (less) than the old factor.
2568
- //!
2569
- //! <b>Throws</b>: Nothing.
2570
- //!
2571
- //! <b>Complexity</b>: Linear to the elements in the subtree.
2572
- void balance_factor(float new_alpha)
2573
- { tree_.balance_factor(new_alpha); }
924
+ //! @copydoc ::boost::intrusive::treap::remove_node
925
+ void remove_node(reference value);
2574
926
 
2575
- /// @cond
2576
- friend bool operator==(const treap_multiset_impl &x, const treap_multiset_impl &y)
2577
- { return x.tree_ == y.tree_; }
2578
-
2579
- friend bool operator<(const treap_multiset_impl &x, const treap_multiset_impl &y)
2580
- { return x.tree_ < y.tree_; }
2581
- /// @endcond
927
+ #endif //#ifdef BOOST_INTRUSIVE_DOXYGEN_INVOKED
2582
928
  };
2583
929
 
2584
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2585
- template<class T, class ...Options>
2586
- #else
2587
- template<class Config>
2588
- #endif
2589
- inline bool operator!=
2590
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2591
- (const treap_multiset_impl<T, Options...> &x, const treap_multiset_impl<T, Options...> &y)
2592
- #else
2593
- (const treap_multiset_impl<Config> &x, const treap_multiset_impl<Config> &y)
2594
- #endif
2595
- { return !(x == y); }
2596
-
2597
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2598
- template<class T, class ...Options>
2599
- #else
2600
- template<class Config>
2601
- #endif
2602
- inline bool operator>
2603
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2604
- (const treap_multiset_impl<T, Options...> &x, const treap_multiset_impl<T, Options...> &y)
2605
- #else
2606
- (const treap_multiset_impl<Config> &x, const treap_multiset_impl<Config> &y)
2607
- #endif
2608
- { return y < x; }
2609
-
2610
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2611
- template<class T, class ...Options>
2612
- #else
2613
- template<class Config>
2614
- #endif
2615
- inline bool operator<=
2616
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2617
- (const treap_multiset_impl<T, Options...> &x, const treap_multiset_impl<T, Options...> &y)
2618
- #else
2619
- (const treap_multiset_impl<Config> &x, const treap_multiset_impl<Config> &y)
2620
- #endif
2621
- { return !(y < x); }
2622
-
2623
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2624
- template<class T, class ...Options>
2625
- #else
2626
- template<class Config>
2627
- #endif
2628
- inline bool operator>=
2629
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2630
- (const treap_multiset_impl<T, Options...> &x, const treap_multiset_impl<T, Options...> &y)
2631
- #else
2632
- (const treap_multiset_impl<Config> &x, const treap_multiset_impl<Config> &y)
2633
- #endif
2634
- { return !(x < y); }
2635
-
2636
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2637
- template<class T, class ...Options>
2638
- #else
2639
- template<class Config>
2640
- #endif
2641
- inline void swap
2642
- #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED)
2643
- (treap_multiset_impl<T, Options...> &x, treap_multiset_impl<T, Options...> &y)
2644
- #else
2645
- (treap_multiset_impl<Config> &x, treap_multiset_impl<Config> &y)
2646
- #endif
2647
- { x.swap(y); }
2648
930
 
2649
931
  //! Helper metafunction to define a \c treap_multiset that yields to the same type when the
2650
932
  //! same options (either explicitly or implicitly) are used.
2651
933
  #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) || defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2652
934
  template<class T, class ...Options>
2653
935
  #else
2654
- template<class T, class O1 = none, class O2 = none
2655
- , class O3 = none, class O4 = none>
936
+ template<class T, class O1 = void, class O2 = void
937
+ , class O3 = void, class O4 = void
938
+ , class O5 = void, class O6 = void>
2656
939
  #endif
2657
940
  struct make_treap_multiset
2658
941
  {
2659
- /// @cond
942
+ typedef typename pack_options
943
+ < treap_defaults,
944
+ #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
945
+ O1, O2, O3, O4, O5, O6
946
+ #else
947
+ Options...
948
+ #endif
949
+ >::type packed_options;
950
+
951
+ typedef typename detail::get_value_traits
952
+ <T, typename packed_options::proto_value_traits>::type value_traits;
953
+
2660
954
  typedef treap_multiset_impl
2661
- < typename make_treap_opt<T,
2662
- #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2663
- O1, O2, O3, O4
2664
- #else
2665
- Options...
2666
- #endif
2667
- >::type
2668
- > implementation_defined;
955
+ < value_traits
956
+ , typename packed_options::key_of_value
957
+ , typename packed_options::compare
958
+ , typename packed_options::priority
959
+ , typename packed_options::size_type
960
+ , packed_options::constant_time_size
961
+ , typename packed_options::header_holder_type
962
+ > implementation_defined;
2669
963
  /// @endcond
2670
964
  typedef implementation_defined type;
2671
965
  };
@@ -2673,14 +967,14 @@ struct make_treap_multiset
2673
967
  #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
2674
968
 
2675
969
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2676
- template<class T, class O1, class O2, class O3, class O4>
970
+ template<class T, class O1, class O2, class O3, class O4, class O5, class O6>
2677
971
  #else
2678
972
  template<class T, class ...Options>
2679
973
  #endif
2680
974
  class treap_multiset
2681
975
  : public make_treap_multiset<T,
2682
976
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2683
- O1, O2, O3, O4
977
+ O1, O2, O3, O4, O5, O6
2684
978
  #else
2685
979
  Options...
2686
980
  #endif
@@ -2689,16 +983,15 @@ class treap_multiset
2689
983
  typedef typename make_treap_multiset
2690
984
  <T,
2691
985
  #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES)
2692
- O1, O2, O3, O4
986
+ O1, O2, O3, O4, O5, O6
2693
987
  #else
2694
988
  Options...
2695
989
  #endif
2696
990
  >::type Base;
2697
- //Movable
2698
991
  BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_multiset)
2699
992
 
2700
993
  public:
2701
- typedef typename Base::value_compare value_compare;
994
+ typedef typename Base::key_compare key_compare;
2702
995
  typedef typename Base::priority_compare priority_compare;
2703
996
  typedef typename Base::value_traits value_traits;
2704
997
  typedef typename Base::iterator iterator;
@@ -2707,26 +1000,34 @@ class treap_multiset
2707
1000
  //Assert if passed value traits are compatible with the type
2708
1001
  BOOST_STATIC_ASSERT((detail::is_same<typename value_traits::value_type, T>::value));
2709
1002
 
2710
- treap_multiset( const value_compare &cmp = value_compare()
2711
- , const priority_compare &pcmp = priority_compare()
2712
- , const value_traits &v_traits = value_traits())
1003
+ explicit treap_multiset( const key_compare &cmp = key_compare()
1004
+ , const priority_compare &pcmp = priority_compare()
1005
+ , const value_traits &v_traits = value_traits())
2713
1006
  : Base(cmp, pcmp, v_traits)
2714
1007
  {}
2715
1008
 
2716
1009
  template<class Iterator>
2717
1010
  treap_multiset( Iterator b, Iterator e
2718
- , const value_compare &cmp = value_compare()
2719
- , const priority_compare &pcmp = priority_compare()
2720
- , const value_traits &v_traits = value_traits())
1011
+ , const key_compare &cmp = key_compare()
1012
+ , const priority_compare &pcmp = priority_compare()
1013
+ , const value_traits &v_traits = value_traits())
2721
1014
  : Base(b, e, cmp, pcmp, v_traits)
2722
1015
  {}
2723
1016
 
2724
1017
  treap_multiset(BOOST_RV_REF(treap_multiset) x)
2725
- : Base(::boost::move(static_cast<Base&>(x)))
1018
+ : Base(BOOST_MOVE_BASE(Base, x))
2726
1019
  {}
2727
1020
 
2728
1021
  treap_multiset& operator=(BOOST_RV_REF(treap_multiset) x)
2729
- { this->Base::operator=(::boost::move(static_cast<Base&>(x))); return *this; }
1022
+ { return static_cast<treap_multiset &>(this->Base::operator=(BOOST_MOVE_BASE(Base, x))); }
1023
+
1024
+ template <class Cloner, class Disposer>
1025
+ void clone_from(const treap_multiset &src, Cloner cloner, Disposer disposer)
1026
+ { Base::clone_from(src, cloner, disposer); }
1027
+
1028
+ template <class Cloner, class Disposer>
1029
+ void clone_from(BOOST_RV_REF(treap_multiset) src, Cloner cloner, Disposer disposer)
1030
+ { Base::clone_from(BOOST_MOVE_BASE(Base, src), cloner, disposer); }
2730
1031
 
2731
1032
  static treap_multiset &container_from_end_iterator(iterator end_iterator)
2732
1033
  { return static_cast<treap_multiset &>(Base::container_from_end_iterator(end_iterator)); }
@@ -2748,4 +1049,4 @@ class treap_multiset
2748
1049
 
2749
1050
  #include <boost/intrusive/detail/config_end.hpp>
2750
1051
 
2751
- #endif //BOOST_INTRUSIVE_TRIE_SET_HPP
1052
+ #endif //BOOST_INTRUSIVE_TREAP_SET_HPP