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 2005-2012. Distributed under the Boost
3
+ // (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost
4
4
  // Software License, Version 1.0. (See accompanying file
5
5
  // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
6
  //
@@ -11,34 +11,75 @@
11
11
  #ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP
12
12
  #define BOOST_CONTAINER_CONTAINER_FWD_HPP
13
13
 
14
- #if (defined _MSC_VER) && (_MSC_VER >= 1200)
15
- # pragma once
14
+ #ifndef BOOST_CONFIG_HPP
15
+ # include <boost/config.hpp>
16
16
  #endif
17
17
 
18
- //////////////////////////////////////////////////////////////////////////////
19
- // Standard predeclarations
20
- //////////////////////////////////////////////////////////////////////////////
18
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
19
+ # pragma once
20
+ #endif
21
21
 
22
- /// @cond
22
+ //! \file
23
+ //! This header file forward declares the following containers:
24
+ //! - boost::container::vector
25
+ //! - boost::container::stable_vector
26
+ //! - boost::container::static_vector
27
+ //! - boost::container::small_vector
28
+ //! - boost::container::slist
29
+ //! - boost::container::list
30
+ //! - boost::container::set
31
+ //! - boost::container::multiset
32
+ //! - boost::container::map
33
+ //! - boost::container::multimap
34
+ //! - boost::container::flat_set
35
+ //! - boost::container::flat_multiset
36
+ //! - boost::container::flat_map
37
+ //! - boost::container::flat_multimap
38
+ //! - boost::container::basic_string
39
+ //! - boost::container::string
40
+ //! - boost::container::wstring
41
+ //!
42
+ //! Forward declares the following allocators:
43
+ //! - boost::container::allocator
44
+ //! - boost::container::node_allocator
45
+ //! - boost::container::adaptive_pool
46
+ //!
47
+ //! Forward declares the following polymorphic resource classes:
48
+ //! - boost::container::pmr::memory_resource
49
+ //! - boost::container::pmr::polymorphic_allocator
50
+ //! - boost::container::pmr::monotonic_buffer_resource
51
+ //! - boost::container::pmr::pool_options
52
+ //! - boost::container::pmr::unsynchronized_pool_resource
53
+ //! - boost::container::pmr::synchronized_pool_resource
54
+ //!
55
+ //! And finally it defines the following types
56
+
57
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
58
+
59
+ //Std forward declarations
60
+ #ifndef BOOST_CONTAINER_DETAIL_STD_FWD_HPP
61
+ #include <boost/container/detail/std_fwd.hpp>
62
+ #endif
23
63
 
24
64
  namespace boost{
25
65
  namespace intrusive{
66
+ namespace detail{
26
67
  //Create namespace to avoid compilation errors
27
- }}
68
+ }}}
28
69
 
29
70
  namespace boost{ namespace container{ namespace container_detail{
71
+ namespace bi = boost::intrusive;
72
+ namespace bid = boost::intrusive::detail;
73
+ }}}
30
74
 
31
- namespace bi = boost::intrusive;
32
-
75
+ namespace boost{ namespace container{ namespace pmr{
76
+ namespace bi = boost::intrusive;
77
+ namespace bid = boost::intrusive::detail;
33
78
  }}}
34
79
 
35
- #include <utility>
36
- #include <memory>
37
- #include <functional>
38
- #include <iosfwd>
39
- #include <string>
80
+ #include <cstddef>
40
81
 
41
- /// @endcond
82
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
42
83
 
43
84
  //////////////////////////////////////////////////////////////////////////////
44
85
  // Containers
@@ -47,111 +88,212 @@ namespace bi = boost::intrusive;
47
88
  namespace boost {
48
89
  namespace container {
49
90
 
50
- //vector class
91
+ //! Enumeration used to configure ordered associative containers
92
+ //! with a concrete tree implementation.
93
+ enum tree_type_enum
94
+ {
95
+ red_black_tree,
96
+ avl_tree,
97
+ scapegoat_tree,
98
+ splay_tree
99
+ };
100
+
101
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
102
+
103
+ template<class T>
104
+ class new_allocator;
105
+
51
106
  template <class T
52
- ,class Allocator = std::allocator<T> >
107
+ ,class Allocator = new_allocator<T> >
53
108
  class vector;
54
109
 
55
- //vector class
56
110
  template <class T
57
- ,class Allocator = std::allocator<T> >
111
+ ,class Allocator = new_allocator<T> >
58
112
  class stable_vector;
59
113
 
60
- //vector class
114
+ template <class T, std::size_t Capacity>
115
+ class static_vector;
116
+
117
+ template < class T, std::size_t N
118
+ , class Allocator= new_allocator<T> >
119
+ class small_vector;
120
+
61
121
  template <class T
62
- ,class Allocator = std::allocator<T> >
122
+ ,class Allocator = new_allocator<T> >
63
123
  class deque;
64
124
 
65
- //list class
66
125
  template <class T
67
- ,class Allocator = std::allocator<T> >
126
+ ,class Allocator = new_allocator<T> >
68
127
  class list;
69
128
 
70
- //slist class
71
129
  template <class T
72
- ,class Allocator = std::allocator<T> >
130
+ ,class Allocator = new_allocator<T> >
73
131
  class slist;
74
132
 
75
- //set class
133
+ template<tree_type_enum TreeType, bool OptimizeSize>
134
+ struct tree_opt;
135
+
136
+ typedef tree_opt<red_black_tree, true> tree_assoc_defaults;
137
+
76
138
  template <class Key
77
139
  ,class Compare = std::less<Key>
78
- ,class Allocator = std::allocator<Key> >
140
+ ,class Allocator = new_allocator<Key>
141
+ ,class Options = tree_assoc_defaults >
79
142
  class set;
80
143
 
81
- //multiset class
82
144
  template <class Key
83
145
  ,class Compare = std::less<Key>
84
- ,class Allocator = std::allocator<Key> >
146
+ ,class Allocator = new_allocator<Key>
147
+ ,class Options = tree_assoc_defaults >
85
148
  class multiset;
86
149
 
87
- //map class
88
150
  template <class Key
89
151
  ,class T
90
152
  ,class Compare = std::less<Key>
91
- ,class Allocator = std::allocator<std::pair<const Key, T> > >
153
+ ,class Allocator = new_allocator<std::pair<const Key, T> >
154
+ ,class Options = tree_assoc_defaults >
92
155
  class map;
93
156
 
94
- //multimap class
95
157
  template <class Key
96
158
  ,class T
97
159
  ,class Compare = std::less<Key>
98
- ,class Allocator = std::allocator<std::pair<const Key, T> > >
160
+ ,class Allocator = new_allocator<std::pair<const Key, T> >
161
+ ,class Options = tree_assoc_defaults >
99
162
  class multimap;
100
163
 
101
- //flat_set class
102
164
  template <class Key
103
165
  ,class Compare = std::less<Key>
104
- ,class Allocator = std::allocator<Key> >
166
+ ,class Allocator = new_allocator<Key> >
105
167
  class flat_set;
106
168
 
107
- //flat_multiset class
108
169
  template <class Key
109
170
  ,class Compare = std::less<Key>
110
- ,class Allocator = std::allocator<Key> >
171
+ ,class Allocator = new_allocator<Key> >
111
172
  class flat_multiset;
112
173
 
113
- //flat_map class
114
174
  template <class Key
115
175
  ,class T
116
176
  ,class Compare = std::less<Key>
117
- ,class Allocator = std::allocator<std::pair<Key, T> > >
177
+ ,class Allocator = new_allocator<std::pair<Key, T> > >
118
178
  class flat_map;
119
179
 
120
- //flat_multimap class
121
180
  template <class Key
122
181
  ,class T
123
182
  ,class Compare = std::less<Key>
124
- ,class Allocator = std::allocator<std::pair<Key, T> > >
183
+ ,class Allocator = new_allocator<std::pair<Key, T> > >
125
184
  class flat_multimap;
126
185
 
127
- //basic_string class
128
186
  template <class CharT
129
187
  ,class Traits = std::char_traits<CharT>
130
- ,class Allocator = std::allocator<CharT> >
188
+ ,class Allocator = new_allocator<CharT> >
131
189
  class basic_string;
132
190
 
191
+ typedef basic_string
192
+ <char
193
+ ,std::char_traits<char>
194
+ ,new_allocator<char> >
195
+ string;
196
+
197
+ typedef basic_string
198
+ <wchar_t
199
+ ,std::char_traits<wchar_t>
200
+ ,new_allocator<wchar_t> >
201
+ wstring;
202
+
203
+ static const std::size_t ADP_nodes_per_block = 256u;
204
+ static const std::size_t ADP_max_free_blocks = 2u;
205
+ static const std::size_t ADP_overhead_percent = 1u;
206
+ static const std::size_t ADP_only_alignment = 0u;
207
+
208
+ template < class T
209
+ , std::size_t NodesPerBlock = ADP_nodes_per_block
210
+ , std::size_t MaxFreeBlocks = ADP_max_free_blocks
211
+ , std::size_t OverheadPercent = ADP_overhead_percent
212
+ , unsigned Version = 2
213
+ >
214
+ class adaptive_pool;
215
+
216
+ template < class T
217
+ , unsigned Version = 2
218
+ , unsigned int AllocationDisableMask = 0>
219
+ class allocator;
220
+
221
+ static const std::size_t NodeAlloc_nodes_per_block = 256u;
222
+
223
+ template
224
+ < class T
225
+ , std::size_t NodesPerBlock = NodeAlloc_nodes_per_block
226
+ , std::size_t Version = 2>
227
+ class node_allocator;
228
+
229
+ namespace pmr {
230
+
231
+ class memory_resource;
232
+
233
+ template<class T>
234
+ class polymorphic_allocator;
235
+
236
+ class monotonic_buffer_resource;
237
+
238
+ struct pool_options;
239
+
240
+ template <class Allocator>
241
+ class resource_adaptor_imp;
242
+
243
+ class unsynchronized_pool_resource;
244
+
245
+ class synchronized_pool_resource;
246
+
247
+ } //namespace pmr {
248
+
249
+ #else
250
+
251
+ //! Default options for tree-based associative containers
252
+ //! - tree_type<red_black_tree>
253
+ //! - optimize_size<true>
254
+ typedef implementation_defined tree_assoc_defaults;
255
+
256
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
257
+
133
258
  //! Type used to tag that the input range is
134
259
  //! guaranteed to be ordered
135
260
  struct ordered_range_t
136
261
  {};
137
262
 
263
+ //! Value used to tag that the input range is
264
+ //! guaranteed to be ordered
265
+ static const ordered_range_t ordered_range = ordered_range_t();
266
+
138
267
  //! Type used to tag that the input range is
139
268
  //! guaranteed to be ordered and unique
140
269
  struct ordered_unique_range_t
141
270
  : public ordered_range_t
142
271
  {};
143
272
 
144
- //! Value used to tag that the input range is
145
- //! guaranteed to be ordered
146
- static const ordered_range_t ordered_range = ordered_range_t();
147
-
148
273
  //! Value used to tag that the input range is
149
274
  //! guaranteed to be ordered and unique
150
275
  static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t();
151
276
 
152
- /// @cond
277
+ //! Type used to tag that the inserted values
278
+ //! should be default initialized
279
+ struct default_init_t
280
+ {};
281
+
282
+ //! Value used to tag that the inserted values
283
+ //! should be default initialized
284
+ static const default_init_t default_init = default_init_t();
285
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
286
+
287
+ //! Type used to tag that the inserted values
288
+ //! should be value initialized
289
+ struct value_init_t
290
+ {};
291
+
292
+ //! Value used to tag that the inserted values
293
+ //! should be value initialized
294
+ static const value_init_t value_init = value_init_t();
153
295
 
154
- namespace detail_really_deep_namespace {
296
+ namespace container_detail_really_deep_namespace {
155
297
 
156
298
  //Otherwise, gcc issues a warning of previously defined
157
299
  //anonymous_instance and unique_instance
@@ -161,12 +303,14 @@ struct dummy
161
303
  {
162
304
  (void)ordered_range;
163
305
  (void)ordered_unique_range;
306
+ (void)default_init;
164
307
  }
165
308
  };
166
309
 
167
310
  } //detail_really_deep_namespace {
168
311
 
169
- /// @endcond
312
+
313
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
170
314
 
171
315
  }} //namespace boost { namespace container {
172
316
 
@@ -1,380 +1,330 @@
1
1
  //////////////////////////////////////////////////////////////////////////////
2
2
  //
3
- // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost
3
+ // (C) Copyright Ion Gaztanaga 2005-2015. Distributed under the Boost
4
4
  // Software License, Version 1.0. (See accompanying file
5
5
  // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
6
  //
7
7
  // See http://www.boost.org/libs/container for documentation.
8
8
  //
9
9
  //////////////////////////////////////////////////////////////////////////////
10
- // Copyright (c) 1996,1997
11
- // Silicon Graphics Computer Systems, Inc.
12
- //
13
- // Permission to use, copy, modify, distribute and sell this software
14
- // and its documentation for any purpose is hereby granted without fee,
15
- // provided that the above copyright notice appear in all copies and
16
- // that both that copyright notice and this permission notice appear
17
- // in supporting documentation. Silicon Graphics makes no
18
- // representations about the suitability of this software for any
19
- // purpose. It is provided "as is" without express or implied warranty.
20
- //
21
- //
22
- // Copyright (c) 1994
23
- // Hewlett-Packard Company
24
- //
25
- // Permission to use, copy, modify, distribute and sell this software
26
- // and its documentation for any purpose is hereby granted without fee,
27
- // provided that the above copyright notice appear in all copies and
28
- // that both that copyright notice and this permission notice appear
29
- // in supporting documentation. Hewlett-Packard Company makes no
30
- // representations about the suitability of this software for any
31
- // purpose. It is provided "as is" without express or implied warranty.
32
-
33
10
  #ifndef BOOST_CONTAINER_DEQUE_HPP
34
11
  #define BOOST_CONTAINER_DEQUE_HPP
35
12
 
36
- #if (defined _MSC_VER) && (_MSC_VER >= 1200)
13
+ #ifndef BOOST_CONFIG_HPP
14
+ # include <boost/config.hpp>
15
+ #endif
16
+
17
+ #if defined(BOOST_HAS_PRAGMA_ONCE)
37
18
  # pragma once
38
19
  #endif
39
20
 
40
21
  #include <boost/container/detail/config_begin.hpp>
41
22
  #include <boost/container/detail/workaround.hpp>
42
-
43
- #include <boost/container/detail/utilities.hpp>
44
- #include <boost/container/detail/iterators.hpp>
45
- #include <boost/container/detail/algorithms.hpp>
46
- #include <boost/container/detail/mpl.hpp>
23
+ // container
47
24
  #include <boost/container/allocator_traits.hpp>
48
25
  #include <boost/container/container_fwd.hpp>
26
+ #include <boost/container/new_allocator.hpp> //new_allocator
49
27
  #include <boost/container/throw_exception.hpp>
50
- #include <cstddef>
51
- #include <iterator>
52
- #include <boost/assert.hpp>
53
- #include <memory>
54
- #include <algorithm>
55
- #include <boost/detail/no_exceptions_support.hpp>
56
- #include <boost/type_traits/has_trivial_destructor.hpp>
57
- #include <boost/type_traits/has_trivial_copy.hpp>
58
- #include <boost/type_traits/has_trivial_assign.hpp>
59
- #include <boost/type_traits/has_nothrow_copy.hpp>
60
- #include <boost/type_traits/has_nothrow_assign.hpp>
61
- #include <boost/move/utility.hpp>
28
+ // container/detail
29
+ #include <boost/container/detail/advanced_insert_int.hpp>
30
+ #include <boost/container/detail/algorithm.hpp> //algo_equal(), algo_lexicographical_compare
31
+ #include <boost/container/detail/alloc_helpers.hpp>
32
+ #include <boost/container/detail/copy_move_algo.hpp>
33
+ #include <boost/container/detail/iterator.hpp>
34
+ #include <boost/container/detail/iterator_to_raw_pointer.hpp>
35
+ #include <boost/container/detail/iterators.hpp>
36
+ #include <boost/container/detail/min_max.hpp>
37
+ #include <boost/container/detail/mpl.hpp>
38
+ #include <boost/container/detail/to_raw_pointer.hpp>
39
+ #include <boost/container/detail/type_traits.hpp>
40
+ // move
41
+ #include <boost/move/adl_move_swap.hpp>
62
42
  #include <boost/move/iterator.hpp>
43
+ #include <boost/move/traits.hpp>
44
+ #include <boost/move/utility_core.hpp>
45
+ // move/detail
46
+ #if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
47
+ #include <boost/move/detail/fwd_macros.hpp>
48
+ #endif
63
49
  #include <boost/move/detail/move_helpers.hpp>
64
- #include <boost/container/detail/advanced_insert_int.hpp>
65
- #include <boost/detail/no_exceptions_support.hpp>
50
+ // other
51
+ #include <boost/assert.hpp>
52
+ #include <boost/core/no_exceptions_support.hpp>
53
+ // std
54
+ #include <cstddef>
55
+
56
+ #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
57
+ #include <initializer_list>
58
+ #endif
66
59
 
67
60
  namespace boost {
68
61
  namespace container {
69
62
 
70
- /// @cond
71
- #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
72
- template <class T, class Allocator = std::allocator<T> >
73
- #else
63
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
74
64
  template <class T, class Allocator>
75
- #endif
76
65
  class deque;
77
66
 
78
- template <class T, class Allocator>
67
+ template <class T>
79
68
  struct deque_value_traits
80
69
  {
81
70
  typedef T value_type;
82
- typedef Allocator allocator_type;
83
- static const bool trivial_dctr = boost::has_trivial_destructor<value_type>::value;
71
+ static const bool trivial_dctr = container_detail::is_trivially_destructible<value_type>::value;
84
72
  static const bool trivial_dctr_after_move = ::boost::has_trivial_destructor_after_move<value_type>::value;
85
- static const bool trivial_copy = has_trivial_copy<value_type>::value;
86
- static const bool nothrow_copy = has_nothrow_copy<value_type>::value;
87
- static const bool trivial_assign = has_trivial_assign<value_type>::value;
88
- //static const bool nothrow_assign = has_nothrow_assign<value_type>::value;
89
- static const bool nothrow_assign = false;
90
73
  };
91
74
 
92
75
  // Note: this function is simply a kludge to work around several compilers'
93
76
  // bugs in handling constant expressions.
94
- inline std::size_t deque_buf_size(std::size_t size)
95
- { return size < 512 ? std::size_t(512 / size) : std::size_t(1); }
77
+ template<class T>
78
+ struct deque_buf_size
79
+ {
80
+ static const std::size_t min_size = 512u;
81
+ static const std::size_t sizeof_t = sizeof(T);
82
+ static const std::size_t value = sizeof_t < min_size ? (min_size/sizeof_t) : std::size_t(1);
83
+ };
96
84
 
97
- // Deque base class. It has two purposes. First, its constructor
98
- // and destructor allocate (but don't initialize) storage. This makes
99
- // exception safety easier.
100
- template <class T, class Allocator>
101
- class deque_base
85
+ namespace container_detail {
86
+
87
+ // Class invariants:
88
+ // For any nonsingular iterator i:
89
+ // i.node is the address of an element in the map array. The
90
+ // contents of i.node is a pointer to the beginning of a node.
91
+ // i.first == //(i.node)
92
+ // i.last == i.first + node_size
93
+ // i.cur is a pointer in the range [i.first, i.last). NOTE:
94
+ // the implication of this is that i.cur is always a dereferenceable
95
+ // pointer, even if i is a past-the-end iterator.
96
+ // Start and Finish are always nonsingular iterators. NOTE: this means
97
+ // that an empty deque must have one node, and that a deque
98
+ // with N elements, where N is the buffer size, must have two nodes.
99
+ // For every node other than start.node and finish.node, every element
100
+ // in the node is an initialized object. If start.node == finish.node,
101
+ // then [start.cur, finish.cur) are initialized objects, and
102
+ // the elements outside that range are uninitialized storage. Otherwise,
103
+ // [start.cur, start.last) and [finish.first, finish.cur) are initialized
104
+ // objects, and [start.first, start.cur) and [finish.cur, finish.last)
105
+ // are uninitialized storage.
106
+ // [map, map + map_size) is a valid, non-empty range.
107
+ // [start.node, finish.node] is a valid range contained within
108
+ // [map, map + map_size).
109
+ // A pointer in the range [map, map + map_size) points to an allocated node
110
+ // if and only if the pointer is in the range [start.node, finish.node].
111
+ template<class Pointer, bool IsConst>
112
+ class deque_iterator
102
113
  {
103
- BOOST_COPYABLE_AND_MOVABLE(deque_base)
104
114
  public:
105
- typedef allocator_traits<Allocator> val_alloc_traits_type;
106
- typedef typename val_alloc_traits_type::value_type val_alloc_val;
107
- typedef typename val_alloc_traits_type::pointer val_alloc_ptr;
108
- typedef typename val_alloc_traits_type::const_pointer val_alloc_cptr;
109
- typedef typename val_alloc_traits_type::reference val_alloc_ref;
110
- typedef typename val_alloc_traits_type::const_reference val_alloc_cref;
111
- typedef typename val_alloc_traits_type::difference_type val_alloc_diff;
112
- typedef typename val_alloc_traits_type::size_type val_alloc_size;
113
- typedef typename val_alloc_traits_type::template
114
- portable_rebind_alloc<val_alloc_ptr>::type ptr_alloc_t;
115
- typedef allocator_traits<ptr_alloc_t> ptr_alloc_traits_type;
116
- typedef typename ptr_alloc_traits_type::value_type ptr_alloc_val;
117
- typedef typename ptr_alloc_traits_type::pointer ptr_alloc_ptr;
118
- typedef typename ptr_alloc_traits_type::const_pointer ptr_alloc_cptr;
119
- typedef typename ptr_alloc_traits_type::reference ptr_alloc_ref;
120
- typedef typename ptr_alloc_traits_type::const_reference ptr_alloc_cref;
121
- typedef Allocator allocator_type;
122
- typedef allocator_type stored_allocator_type;
123
- typedef val_alloc_size size_type;
115
+ typedef std::random_access_iterator_tag iterator_category;
116
+ typedef typename boost::intrusive::pointer_traits<Pointer>::element_type value_type;
117
+ typedef typename boost::intrusive::pointer_traits<Pointer>::difference_type difference_type;
118
+ typedef typename if_c
119
+ < IsConst
120
+ , typename boost::intrusive::pointer_traits<Pointer>::template
121
+ rebind_pointer<const value_type>::type
122
+ , Pointer
123
+ >::type pointer;
124
+ typedef typename if_c
125
+ < IsConst
126
+ , const value_type&
127
+ , value_type&
128
+ >::type reference;
129
+
130
+ static std::size_t s_buffer_size()
131
+ { return deque_buf_size<value_type>::value; }
132
+
133
+ typedef Pointer val_alloc_ptr;
134
+ typedef typename boost::intrusive::pointer_traits<Pointer>::
135
+ template rebind_pointer<Pointer>::type index_pointer;
136
+
137
+ Pointer m_cur;
138
+ Pointer m_first;
139
+ Pointer m_last;
140
+ index_pointer m_node;
124
141
 
125
- protected:
142
+ public:
126
143
 
127
- typedef deque_value_traits<T, Allocator> traits_t;
128
- typedef ptr_alloc_t map_allocator_type;
144
+ Pointer get_cur() const { return m_cur; }
145
+ Pointer get_first() const { return m_first; }
146
+ Pointer get_last() const { return m_last; }
147
+ index_pointer get_node() const { return m_node; }
129
148
 
130
- static size_type s_buffer_size() { return deque_buf_size(sizeof(T)); }
149
+ deque_iterator(val_alloc_ptr x, index_pointer y) BOOST_NOEXCEPT_OR_NOTHROW
150
+ : m_cur(x), m_first(*y), m_last(*y + s_buffer_size()), m_node(y)
151
+ {}
131
152
 
132
- val_alloc_ptr priv_allocate_node()
133
- { return this->alloc().allocate(s_buffer_size()); }
153
+ deque_iterator() BOOST_NOEXCEPT_OR_NOTHROW
154
+ : m_cur(), m_first(), m_last(), m_node() //Value initialization to achieve "null iterators" (N3644)
155
+ {}
134
156
 
135
- void priv_deallocate_node(val_alloc_ptr p)
136
- { this->alloc().deallocate(p, s_buffer_size()); }
157
+ deque_iterator(deque_iterator<Pointer, false> const& x) BOOST_NOEXCEPT_OR_NOTHROW
158
+ : m_cur(x.get_cur()), m_first(x.get_first()), m_last(x.get_last()), m_node(x.get_node())
159
+ {}
137
160
 
138
- ptr_alloc_ptr priv_allocate_map(size_type n)
139
- { return this->ptr_alloc().allocate(n); }
161
+ deque_iterator(Pointer cur, Pointer first, Pointer last, index_pointer node) BOOST_NOEXCEPT_OR_NOTHROW
162
+ : m_cur(cur), m_first(first), m_last(last), m_node(node)
163
+ {}
140
164
 
141
- void priv_deallocate_map(ptr_alloc_ptr p, size_type n)
142
- { this->ptr_alloc().deallocate(p, n); }
165
+ deque_iterator<Pointer, false> unconst() const BOOST_NOEXCEPT_OR_NOTHROW
166
+ {
167
+ return deque_iterator<Pointer, false>(this->get_cur(), this->get_first(), this->get_last(), this->get_node());
168
+ }
143
169
 
144
- public:
145
- // Class invariants:
146
- // For any nonsingular iterator i:
147
- // i.node is the address of an element in the map array. The
148
- // contents of i.node is a pointer to the beginning of a node.
149
- // i.first == //(i.node)
150
- // i.last == i.first + node_size
151
- // i.cur is a pointer in the range [i.first, i.last). NOTE:
152
- // the implication of this is that i.cur is always a dereferenceable
153
- // pointer, even if i is a past-the-end iterator.
154
- // Start and Finish are always nonsingular iterators. NOTE: this means
155
- // that an empty deque must have one node, and that a deque
156
- // with N elements, where N is the buffer size, must have two nodes.
157
- // For every node other than start.node and finish.node, every element
158
- // in the node is an initialized object. If start.node == finish.node,
159
- // then [start.cur, finish.cur) are initialized objects, and
160
- // the elements outside that range are uninitialized storage. Otherwise,
161
- // [start.cur, start.last) and [finish.first, finish.cur) are initialized
162
- // objects, and [start.first, start.cur) and [finish.cur, finish.last)
163
- // are uninitialized storage.
164
- // [map, map + map_size) is a valid, non-empty range.
165
- // [start.node, finish.node] is a valid range contained within
166
- // [map, map + map_size).
167
- // Allocator pointer in the range [map, map + map_size) points to an allocated node
168
- // if and only if the pointer is in the range [start.node, finish.node].
169
- class const_iterator
170
- : public std::iterator<std::random_access_iterator_tag,
171
- val_alloc_val, val_alloc_diff,
172
- val_alloc_cptr, val_alloc_cref>
173
- {
174
- public:
175
- static size_type s_buffer_size() { return deque_base<T, Allocator>::s_buffer_size(); }
176
-
177
- typedef std::random_access_iterator_tag iterator_category;
178
- typedef val_alloc_val value_type;
179
- typedef val_alloc_cptr pointer;
180
- typedef val_alloc_cref reference;
181
- typedef val_alloc_diff difference_type;
182
-
183
- typedef ptr_alloc_ptr index_pointer;
184
- typedef const_iterator self_t;
185
-
186
- friend class deque<T, Allocator>;
187
- friend class deque_base<T, Allocator>;
188
-
189
- protected:
190
- val_alloc_ptr m_cur;
191
- val_alloc_ptr m_first;
192
- val_alloc_ptr m_last;
193
- index_pointer m_node;
194
-
195
- public:
196
- const_iterator(val_alloc_ptr x, index_pointer y)
197
- : m_cur(x), m_first(*y),
198
- m_last(*y + s_buffer_size()), m_node(y) {}
199
-
200
- const_iterator() : m_cur(0), m_first(0), m_last(0), m_node(0) {}
201
-
202
- const_iterator(const const_iterator& x)
203
- : m_cur(x.m_cur), m_first(x.m_first),
204
- m_last(x.m_last), m_node(x.m_node) {}
205
-
206
- reference operator*() const
207
- { return *this->m_cur; }
208
-
209
- pointer operator->() const
210
- { return this->m_cur; }
211
-
212
- difference_type operator-(const self_t& x) const
213
- {
214
- if(!this->m_cur && !x.m_cur){
215
- return 0;
216
- }
217
- return difference_type(this->s_buffer_size()) * (this->m_node - x.m_node - 1) +
218
- (this->m_cur - this->m_first) + (x.m_last - x.m_cur);
219
- }
170
+ reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
171
+ { return *this->m_cur; }
220
172
 
221
- self_t& operator++()
222
- {
223
- ++this->m_cur;
224
- if (this->m_cur == this->m_last) {
225
- this->priv_set_node(this->m_node + 1);
226
- this->m_cur = this->m_first;
227
- }
228
- return *this;
229
- }
173
+ pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
174
+ { return this->m_cur; }
230
175
 
231
- self_t operator++(int)
232
- {
233
- self_t tmp = *this;
234
- ++*this;
235
- return tmp;
176
+ difference_type operator-(const deque_iterator& x) const BOOST_NOEXCEPT_OR_NOTHROW
177
+ {
178
+ if(!this->m_cur && !x.m_cur){
179
+ return 0;
236
180
  }
181
+ return difference_type(this->s_buffer_size()) * (this->m_node - x.m_node - 1) +
182
+ (this->m_cur - this->m_first) + (x.m_last - x.m_cur);
183
+ }
237
184
 
238
- self_t& operator--()
239
- {
240
- if (this->m_cur == this->m_first) {
241
- this->priv_set_node(this->m_node - 1);
242
- this->m_cur = this->m_last;
243
- }
244
- --this->m_cur;
245
- return *this;
185
+ deque_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
186
+ {
187
+ ++this->m_cur;
188
+ if (this->m_cur == this->m_last) {
189
+ this->priv_set_node(this->m_node + 1);
190
+ this->m_cur = this->m_first;
246
191
  }
192
+ return *this;
193
+ }
247
194
 
248
- self_t operator--(int)
249
- {
250
- self_t tmp = *this;
251
- --*this;
252
- return tmp;
253
- }
195
+ deque_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
196
+ {
197
+ deque_iterator tmp(*this);
198
+ ++*this;
199
+ return tmp;
200
+ }
254
201
 
255
- self_t& operator+=(difference_type n)
256
- {
257
- difference_type offset = n + (this->m_cur - this->m_first);
258
- if (offset >= 0 && offset < difference_type(this->s_buffer_size()))
259
- this->m_cur += n;
260
- else {
261
- difference_type node_offset =
262
- offset > 0 ? offset / difference_type(this->s_buffer_size())
263
- : -difference_type((-offset - 1) / this->s_buffer_size()) - 1;
264
- this->priv_set_node(this->m_node + node_offset);
265
- this->m_cur = this->m_first +
266
- (offset - node_offset * difference_type(this->s_buffer_size()));
267
- }
268
- return *this;
202
+ deque_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
203
+ {
204
+ if (this->m_cur == this->m_first) {
205
+ this->priv_set_node(this->m_node - 1);
206
+ this->m_cur = this->m_last;
269
207
  }
208
+ --this->m_cur;
209
+ return *this;
210
+ }
270
211
 
271
- self_t operator+(difference_type n) const
272
- { self_t tmp = *this; return tmp += n; }
273
-
274
- self_t& operator-=(difference_type n)
275
- { return *this += -n; }
276
-
277
- self_t operator-(difference_type n) const
278
- { self_t tmp = *this; return tmp -= n; }
279
-
280
- reference operator[](difference_type n) const
281
- { return *(*this + n); }
212
+ deque_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
213
+ {
214
+ deque_iterator tmp(*this);
215
+ --*this;
216
+ return tmp;
217
+ }
282
218
 
283
- bool operator==(const self_t& x) const
284
- { return this->m_cur == x.m_cur; }
219
+ deque_iterator& operator+=(difference_type n) BOOST_NOEXCEPT_OR_NOTHROW
220
+ {
221
+ difference_type offset = n + (this->m_cur - this->m_first);
222
+ if (offset >= 0 && offset < difference_type(this->s_buffer_size()))
223
+ this->m_cur += n;
224
+ else {
225
+ difference_type node_offset =
226
+ offset > 0 ? offset / difference_type(this->s_buffer_size())
227
+ : -difference_type((-offset - 1) / this->s_buffer_size()) - 1;
228
+ this->priv_set_node(this->m_node + node_offset);
229
+ this->m_cur = this->m_first +
230
+ (offset - node_offset * difference_type(this->s_buffer_size()));
231
+ }
232
+ return *this;
233
+ }
285
234
 
286
- bool operator!=(const self_t& x) const
287
- { return !(*this == x); }
235
+ deque_iterator operator+(difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
236
+ { deque_iterator tmp(*this); return tmp += n; }
288
237
 
289
- bool operator<(const self_t& x) const
290
- {
291
- return (this->m_node == x.m_node) ?
292
- (this->m_cur < x.m_cur) : (this->m_node < x.m_node);
293
- }
238
+ deque_iterator& operator-=(difference_type n) BOOST_NOEXCEPT_OR_NOTHROW
239
+ { return *this += -n; }
294
240
 
295
- bool operator>(const self_t& x) const
296
- { return x < *this; }
241
+ deque_iterator operator-(difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
242
+ { deque_iterator tmp(*this); return tmp -= n; }
297
243
 
298
- bool operator<=(const self_t& x) const
299
- { return !(x < *this); }
244
+ reference operator[](difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
245
+ { return *(*this + n); }
300
246
 
301
- bool operator>=(const self_t& x) const
302
- { return !(*this < x); }
247
+ friend bool operator==(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
248
+ { return l.m_cur == r.m_cur; }
303
249
 
304
- void priv_set_node(index_pointer new_node)
305
- {
306
- this->m_node = new_node;
307
- this->m_first = *new_node;
308
- this->m_last = this->m_first + this->s_buffer_size();
309
- }
250
+ friend bool operator!=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
251
+ { return l.m_cur != r.m_cur; }
310
252
 
311
- friend const_iterator operator+(difference_type n, const const_iterator& x)
312
- { return x + n; }
313
- };
253
+ friend bool operator<(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
254
+ { return (l.m_node == r.m_node) ? (l.m_cur < r.m_cur) : (l.m_node < r.m_node); }
314
255
 
315
- //Deque iterator
316
- class iterator : public const_iterator
317
- {
318
- public:
319
- typedef std::random_access_iterator_tag iterator_category;
320
- typedef val_alloc_val value_type;
321
- typedef val_alloc_ptr pointer;
322
- typedef val_alloc_ref reference;
323
- typedef val_alloc_diff difference_type;
324
- typedef ptr_alloc_ptr index_pointer;
325
- typedef const_iterator self_t;
256
+ friend bool operator>(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
257
+ { return r < l; }
326
258
 
327
- friend class deque<T, Allocator>;
328
- friend class deque_base<T, Allocator>;
259
+ friend bool operator<=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
260
+ { return !(r < l); }
329
261
 
330
- private:
331
- explicit iterator(const const_iterator& x) : const_iterator(x){}
262
+ friend bool operator>=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
263
+ { return !(l < r); }
332
264
 
333
- public:
334
- //Constructors
335
- iterator(val_alloc_ptr x, index_pointer y) : const_iterator(x, y){}
336
- iterator() : const_iterator(){}
337
- //iterator(const const_iterator &cit) : const_iterator(cit){}
338
- iterator(const iterator& x) : const_iterator(x){}
265
+ void priv_set_node(index_pointer new_node) BOOST_NOEXCEPT_OR_NOTHROW
266
+ {
267
+ this->m_node = new_node;
268
+ this->m_first = *new_node;
269
+ this->m_last = this->m_first + this->s_buffer_size();
270
+ }
339
271
 
340
- //Pointer like operators
341
- reference operator*() const { return *this->m_cur; }
342
- pointer operator->() const { return this->m_cur; }
272
+ friend deque_iterator operator+(difference_type n, deque_iterator x) BOOST_NOEXCEPT_OR_NOTHROW
273
+ { return x += n; }
274
+ };
343
275
 
344
- reference operator[](difference_type n) const { return *(*this + n); }
276
+ } //namespace container_detail {
345
277
 
346
- //Increment / Decrement
347
- iterator& operator++()
348
- { this->const_iterator::operator++(); return *this; }
278
+ // Deque base class. It has two purposes. First, its constructor
279
+ // and destructor allocate (but don't initialize) storage. This makes
280
+ // exception safety easier.
281
+ template <class Allocator>
282
+ class deque_base
283
+ {
284
+ BOOST_COPYABLE_AND_MOVABLE(deque_base)
285
+ public:
286
+ typedef allocator_traits<Allocator> val_alloc_traits_type;
287
+ typedef typename val_alloc_traits_type::value_type val_alloc_val;
288
+ typedef typename val_alloc_traits_type::pointer val_alloc_ptr;
289
+ typedef typename val_alloc_traits_type::const_pointer val_alloc_cptr;
290
+ typedef typename val_alloc_traits_type::reference val_alloc_ref;
291
+ typedef typename val_alloc_traits_type::const_reference val_alloc_cref;
292
+ typedef typename val_alloc_traits_type::difference_type val_alloc_diff;
293
+ typedef typename val_alloc_traits_type::size_type val_alloc_size;
294
+ typedef typename val_alloc_traits_type::template
295
+ portable_rebind_alloc<val_alloc_ptr>::type ptr_alloc_t;
296
+ typedef allocator_traits<ptr_alloc_t> ptr_alloc_traits_type;
297
+ typedef typename ptr_alloc_traits_type::value_type ptr_alloc_val;
298
+ typedef typename ptr_alloc_traits_type::pointer ptr_alloc_ptr;
299
+ typedef typename ptr_alloc_traits_type::const_pointer ptr_alloc_cptr;
300
+ typedef typename ptr_alloc_traits_type::reference ptr_alloc_ref;
301
+ typedef typename ptr_alloc_traits_type::const_reference ptr_alloc_cref;
302
+ typedef Allocator allocator_type;
303
+ typedef allocator_type stored_allocator_type;
304
+ typedef val_alloc_size size_type;
349
305
 
350
- iterator operator++(int)
351
- { iterator tmp = *this; ++*this; return tmp; }
352
-
353
- iterator& operator--()
354
- { this->const_iterator::operator--(); return *this; }
306
+ protected:
355
307
 
356
- iterator operator--(int)
357
- { iterator tmp = *this; --*this; return tmp; }
308
+ typedef deque_value_traits<val_alloc_val> traits_t;
309
+ typedef ptr_alloc_t map_allocator_type;
358
310
 
359
- // Arithmetic
360
- iterator& operator+=(difference_type off)
361
- { this->const_iterator::operator+=(off); return *this; }
311
+ static size_type s_buffer_size() BOOST_NOEXCEPT_OR_NOTHROW
312
+ { return deque_buf_size<val_alloc_val>::value; }
362
313
 
363
- iterator operator+(difference_type off) const
364
- { return iterator(this->const_iterator::operator+(off)); }
314
+ val_alloc_ptr priv_allocate_node()
315
+ { return this->alloc().allocate(s_buffer_size()); }
365
316
 
366
- friend iterator operator+(difference_type off, const iterator& right)
367
- { return iterator(off+static_cast<const const_iterator &>(right)); }
317
+ void priv_deallocate_node(val_alloc_ptr p) BOOST_NOEXCEPT_OR_NOTHROW
318
+ { this->alloc().deallocate(p, s_buffer_size()); }
368
319
 
369
- iterator& operator-=(difference_type off)
370
- { this->const_iterator::operator-=(off); return *this; }
320
+ ptr_alloc_ptr priv_allocate_map(size_type n)
321
+ { return this->ptr_alloc().allocate(n); }
371
322
 
372
- iterator operator-(difference_type off) const
373
- { return iterator(this->const_iterator::operator-(off)); }
323
+ void priv_deallocate_map(ptr_alloc_ptr p, size_type n) BOOST_NOEXCEPT_OR_NOTHROW
324
+ { this->ptr_alloc().deallocate(p, n); }
374
325
 
375
- difference_type operator-(const const_iterator& right) const
376
- { return static_cast<const const_iterator&>(*this) - right; }
377
- };
326
+ typedef container_detail::deque_iterator<val_alloc_ptr, false> iterator;
327
+ typedef container_detail::deque_iterator<val_alloc_ptr, true > const_iterator;
378
328
 
379
329
  deque_base(size_type num_elements, const allocator_type& a)
380
330
  : members_(a)
@@ -403,15 +353,15 @@ class deque_base
403
353
 
404
354
  private:
405
355
  deque_base(const deque_base&);
406
-
356
+
407
357
  protected:
408
358
 
409
- void swap_members(deque_base &x)
359
+ void swap_members(deque_base &x) BOOST_NOEXCEPT_OR_NOTHROW
410
360
  {
411
- std::swap(this->members_.m_start, x.members_.m_start);
412
- std::swap(this->members_.m_finish, x.members_.m_finish);
413
- std::swap(this->members_.m_map, x.members_.m_map);
414
- std::swap(this->members_.m_map_size, x.members_.m_map_size);
361
+ ::boost::adl_move_swap(this->members_.m_start, x.members_.m_start);
362
+ ::boost::adl_move_swap(this->members_.m_finish, x.members_.m_finish);
363
+ ::boost::adl_move_swap(this->members_.m_map, x.members_.m_map);
364
+ ::boost::adl_move_swap(this->members_.m_map_size, x.members_.m_map_size);
415
365
  }
416
366
 
417
367
  void priv_initialize_map(size_type num_elements)
@@ -424,7 +374,7 @@ class deque_base
424
374
 
425
375
  ptr_alloc_ptr nstart = this->members_.m_map + (this->members_.m_map_size - num_nodes) / 2;
426
376
  ptr_alloc_ptr nfinish = nstart + num_nodes;
427
-
377
+
428
378
  BOOST_TRY {
429
379
  this->priv_create_nodes(nstart, nfinish);
430
380
  }
@@ -446,9 +396,9 @@ class deque_base
446
396
 
447
397
  void priv_create_nodes(ptr_alloc_ptr nstart, ptr_alloc_ptr nfinish)
448
398
  {
449
- ptr_alloc_ptr cur;
399
+ ptr_alloc_ptr cur = nstart;
450
400
  BOOST_TRY {
451
- for (cur = nstart; cur < nfinish; ++cur)
401
+ for (; cur < nfinish; ++cur)
452
402
  *cur = this->priv_allocate_node();
453
403
  }
454
404
  BOOST_CATCH(...){
@@ -458,13 +408,13 @@ class deque_base
458
408
  BOOST_CATCH_END
459
409
  }
460
410
 
461
- void priv_destroy_nodes(ptr_alloc_ptr nstart, ptr_alloc_ptr nfinish)
411
+ void priv_destroy_nodes(ptr_alloc_ptr nstart, ptr_alloc_ptr nfinish) BOOST_NOEXCEPT_OR_NOTHROW
462
412
  {
463
413
  for (ptr_alloc_ptr n = nstart; n < nfinish; ++n)
464
414
  this->priv_deallocate_node(*n);
465
415
  }
466
416
 
467
- void priv_clear_map()
417
+ void priv_clear_map() BOOST_NOEXCEPT_OR_NOTHROW
468
418
  {
469
419
  if (this->members_.m_map) {
470
420
  this->priv_destroy_nodes(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1);
@@ -509,33 +459,36 @@ class deque_base
509
459
  iterator m_finish;
510
460
  } members_;
511
461
 
512
- ptr_alloc_t &ptr_alloc()
462
+ ptr_alloc_t &ptr_alloc() BOOST_NOEXCEPT_OR_NOTHROW
513
463
  { return members_; }
514
-
515
- const ptr_alloc_t &ptr_alloc() const
464
+
465
+ const ptr_alloc_t &ptr_alloc() const BOOST_NOEXCEPT_OR_NOTHROW
516
466
  { return members_; }
517
467
 
518
- allocator_type &alloc()
468
+ allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
519
469
  { return members_; }
520
-
521
- const allocator_type &alloc() const
470
+
471
+ const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
522
472
  { return members_; }
523
473
  };
524
- /// @endcond
474
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
525
475
 
526
- //! Deque class
527
- //!
528
476
  #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
529
- template <class T, class Allocator = std::allocator<T> >
477
+ //! A double-ended queue is a sequence that supports random access to elements, constant time insertion
478
+ //! and removal of elements at the end of the sequence, and linear time insertion and removal of elements in the middle.
479
+ //!
480
+ //! \tparam T The type of object that is stored in the deque
481
+ //! \tparam Allocator The allocator used for all internal memory management
482
+ template <class T, class Allocator = new_allocator<T> >
530
483
  #else
531
484
  template <class T, class Allocator>
532
485
  #endif
533
- class deque : protected deque_base<T, Allocator>
486
+ class deque : protected deque_base<Allocator>
534
487
  {
535
- /// @cond
488
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
536
489
  private:
537
- typedef deque_base<T, Allocator> Base;
538
- /// @endcond
490
+ typedef deque_base<Allocator> Base;
491
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
539
492
 
540
493
  public:
541
494
 
@@ -556,10 +509,10 @@ class deque : protected deque_base<T, Allocator>
556
509
  typedef BOOST_CONTAINER_IMPDEF(allocator_type) stored_allocator_type;
557
510
  typedef BOOST_CONTAINER_IMPDEF(typename Base::iterator) iterator;
558
511
  typedef BOOST_CONTAINER_IMPDEF(typename Base::const_iterator) const_iterator;
559
- typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<iterator>) reverse_iterator;
560
- typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator<const_iterator>) const_reverse_iterator;
512
+ typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<iterator>) reverse_iterator;
513
+ typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator;
561
514
 
562
- /// @cond
515
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
563
516
 
564
517
  private: // Internal typedefs
565
518
  BOOST_COPYABLE_AND_MOVABLE(deque)
@@ -568,7 +521,7 @@ class deque : protected deque_base<T, Allocator>
568
521
  { return Base::s_buffer_size(); }
569
522
  typedef allocator_traits<Allocator> allocator_traits_type;
570
523
 
571
- /// @endcond
524
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
572
525
 
573
526
  public:
574
527
  //////////////////////////////////////////////
@@ -591,30 +544,79 @@ class deque : protected deque_base<T, Allocator>
591
544
  //! <b>Throws</b>: Nothing
592
545
  //!
593
546
  //! <b>Complexity</b>: Constant.
594
- explicit deque(const allocator_type& a) BOOST_CONTAINER_NOEXCEPT
547
+ explicit deque(const allocator_type& a) BOOST_NOEXCEPT_OR_NOTHROW
595
548
  : Base(a)
596
549
  {}
597
550
 
598
- //! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
599
- //! and inserts n default contructed values.
551
+ //! <b>Effects</b>: Constructs a deque
552
+ //! and inserts n value initialized values.
600
553
  //!
601
- //! <b>Throws</b>: If allocator_type's default constructor or copy constructor
602
- //! throws or T's default or copy constructor throws.
554
+ //! <b>Throws</b>: If allocator_type's default constructor
555
+ //! throws or T's value initialization throws.
603
556
  //!
604
557
  //! <b>Complexity</b>: Linear to n.
605
558
  explicit deque(size_type n)
606
559
  : Base(n, allocator_type())
607
560
  {
608
- container_detail::insert_default_constructed_n_proxy<Allocator, iterator> proxy(this->alloc());
609
- proxy.uninitialized_copy_n_and_update(this->begin(), n);
561
+ container_detail::insert_value_initialized_n_proxy<Allocator, iterator> proxy;
562
+ proxy.uninitialized_copy_n_and_update(this->alloc(), this->begin(), n);
563
+ //deque_base will deallocate in case of exception...
564
+ }
565
+
566
+ //! <b>Effects</b>: Constructs a deque
567
+ //! and inserts n default initialized values.
568
+ //!
569
+ //! <b>Throws</b>: If allocator_type's default constructor
570
+ //! throws or T's default initialization or copy constructor throws.
571
+ //!
572
+ //! <b>Complexity</b>: Linear to n.
573
+ //!
574
+ //! <b>Note</b>: Non-standard extension
575
+ deque(size_type n, default_init_t)
576
+ : Base(n, allocator_type())
577
+ {
578
+ container_detail::insert_default_initialized_n_proxy<Allocator, iterator> proxy;
579
+ proxy.uninitialized_copy_n_and_update(this->alloc(), this->begin(), n);
580
+ //deque_base will deallocate in case of exception...
581
+ }
582
+
583
+ //! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
584
+ //! and inserts n value initialized values.
585
+ //!
586
+ //! <b>Throws</b>: If allocator_type's default constructor
587
+ //! throws or T's value initialization throws.
588
+ //!
589
+ //! <b>Complexity</b>: Linear to n.
590
+ explicit deque(size_type n, const allocator_type &a)
591
+ : Base(n, a)
592
+ {
593
+ container_detail::insert_value_initialized_n_proxy<Allocator, iterator> proxy;
594
+ proxy.uninitialized_copy_n_and_update(this->alloc(), this->begin(), n);
595
+ //deque_base will deallocate in case of exception...
596
+ }
597
+
598
+ //! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
599
+ //! and inserts n default initialized values.
600
+ //!
601
+ //! <b>Throws</b>: If allocator_type's default constructor
602
+ //! throws or T's default initialization or copy constructor throws.
603
+ //!
604
+ //! <b>Complexity</b>: Linear to n.
605
+ //!
606
+ //! <b>Note</b>: Non-standard extension
607
+ deque(size_type n, default_init_t, const allocator_type &a)
608
+ : Base(n, a)
609
+ {
610
+ container_detail::insert_default_initialized_n_proxy<Allocator, iterator> proxy;
611
+ proxy.uninitialized_copy_n_and_update(this->alloc(), this->begin(), n);
610
612
  //deque_base will deallocate in case of exception...
611
613
  }
612
614
 
613
615
  //! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
614
616
  //! and inserts n copies of value.
615
617
  //!
616
- //! <b>Throws</b>: If allocator_type's default constructor or copy constructor
617
- //! throws or T's default or copy constructor throws.
618
+ //! <b>Throws</b>: If allocator_type's default constructor
619
+ //! throws or T's copy constructor throws.
618
620
  //!
619
621
  //! <b>Complexity</b>: Linear to n.
620
622
  deque(size_type n, const value_type& value,
@@ -625,8 +627,8 @@ class deque : protected deque_base<T, Allocator>
625
627
  //! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
626
628
  //! and inserts a copy of the range [first, last) in the deque.
627
629
  //!
628
- //! <b>Throws</b>: If allocator_type's default constructor or copy constructor
629
- //! throws or T's constructor taking an dereferenced InIt throws.
630
+ //! <b>Throws</b>: If allocator_type's default constructor
631
+ //! throws or T's constructor taking a dereferenced InIt throws.
630
632
  //!
631
633
  //! <b>Complexity</b>: Linear to the range [first, last).
632
634
  template <class InIt>
@@ -639,9 +641,23 @@ class deque : protected deque_base<T, Allocator>
639
641
  )
640
642
  : Base(a)
641
643
  {
642
- typedef typename std::iterator_traits<InIt>::iterator_category ItCat;
643
- this->priv_range_initialize(first, last, ItCat());
644
+ this->priv_range_initialize(first, last);
645
+ }
646
+
647
+ #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
648
+ //! <b>Effects</b>: Constructs a deque that will use a copy of allocator a
649
+ //! and inserts a copy of the range [il.begin(), il.end()) in the deque.
650
+ //!
651
+ //! <b>Throws</b>: If allocator_type's default constructor
652
+ //! throws or T's constructor taking a dereferenced std::initializer_list iterator throws.
653
+ //!
654
+ //! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
655
+ deque(std::initializer_list<value_type> il, const allocator_type& a = allocator_type())
656
+ : Base(a)
657
+ {
658
+ this->priv_range_initialize(il.begin(), il.end());
644
659
  }
660
+ #endif
645
661
 
646
662
  //! <b>Effects</b>: Copy constructs a deque.
647
663
  //!
@@ -658,13 +674,13 @@ class deque : protected deque_base<T, Allocator>
658
674
  }
659
675
  }
660
676
 
661
- //! <b>Effects</b>: Move constructor. Moves mx's resources to *this.
677
+ //! <b>Effects</b>: Move constructor. Moves x's resources to *this.
662
678
  //!
663
679
  //! <b>Throws</b>: If allocator_type's copy constructor throws.
664
680
  //!
665
681
  //! <b>Complexity</b>: Constant.
666
682
  deque(BOOST_RV_REF(deque) x)
667
- : Base(boost::move(static_cast<Base&>(x)))
683
+ : Base(BOOST_MOVE_BASE(Base, x))
668
684
  { this->swap_members(x); }
669
685
 
670
686
  //! <b>Effects</b>: Copy constructs a vector using the specified allocator.
@@ -686,23 +702,24 @@ class deque : protected deque_base<T, Allocator>
686
702
  }
687
703
 
688
704
  //! <b>Effects</b>: Move constructor using the specified allocator.
689
- //! Moves mx's resources to *this if a == allocator_type().
705
+ //! Moves x's resources to *this if a == allocator_type().
690
706
  //! Otherwise copies values from x to *this.
691
707
  //!
692
708
  //! <b>Throws</b>: If allocation or T's copy constructor throws.
693
709
  //!
694
- //! <b>Complexity</b>: Constant if a == mx.get_allocator(), linear otherwise.
695
- deque(BOOST_RV_REF(deque) mx, const allocator_type &a)
710
+ //! <b>Complexity</b>: Constant if a == x.get_allocator(), linear otherwise.
711
+ deque(BOOST_RV_REF(deque) x, const allocator_type &a)
696
712
  : Base(a)
697
713
  {
698
- if(mx.alloc() == a){
699
- this->swap_members(mx);
714
+ if(x.alloc() == a){
715
+ this->swap_members(x);
700
716
  }
701
717
  else{
702
- if(mx.size()){
703
- this->priv_initialize_map(mx.size());
718
+ if(x.size()){
719
+ this->priv_initialize_map(x.size());
704
720
  boost::container::uninitialized_copy_alloc
705
- (this->alloc(), mx.begin(), mx.end(), this->members_.m_start);
721
+ ( this->alloc(), boost::make_move_iterator(x.begin())
722
+ , boost::make_move_iterator(x.end()), this->members_.m_start);
706
723
  }
707
724
  }
708
725
  }
@@ -713,7 +730,7 @@ class deque : protected deque_base<T, Allocator>
713
730
  //! <b>Throws</b>: Nothing.
714
731
  //!
715
732
  //! <b>Complexity</b>: Linear to the number of elements.
716
- ~deque() BOOST_CONTAINER_NOEXCEPT
733
+ ~deque() BOOST_NOEXCEPT_OR_NOTHROW
717
734
  {
718
735
  this->priv_destroy_range(this->members_.m_start, this->members_.m_finish);
719
736
  }
@@ -744,40 +761,60 @@ class deque : protected deque_base<T, Allocator>
744
761
  return *this;
745
762
  }
746
763
 
747
- //! <b>Effects</b>: Move assignment. All mx's values are transferred to *this.
748
- //!
749
- //! <b>Postcondition</b>: x.empty(). *this contains a the elements x had
750
- //! before the function.
764
+ //! <b>Effects</b>: Move assignment. All x's values are transferred to *this.
751
765
  //!
752
- //! <b>Throws</b>: If allocator_type's copy constructor throws.
766
+ //! <b>Throws</b>: If allocator_traits_type::propagate_on_container_move_assignment
767
+ //! is false and (allocation throws or value_type's move constructor throws)
753
768
  //!
754
- //! <b>Complexity</b>: Linear.
769
+ //! <b>Complexity</b>: Constant if allocator_traits_type::
770
+ //! propagate_on_container_move_assignment is true or
771
+ //! this->get>allocator() == x.get_allocator(). Linear otherwise.
755
772
  deque& operator= (BOOST_RV_REF(deque) x)
773
+ BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
774
+ || allocator_traits_type::is_always_equal::value)
756
775
  {
757
- if (&x != this){
758
- allocator_type &this_alloc = this->alloc();
759
- allocator_type &x_alloc = x.alloc();
760
- //If allocators are equal we can just swap pointers
761
- if(this_alloc == x_alloc){
762
- //Destroy objects but retain memory in case x reuses it in the future
763
- this->clear();
764
- this->swap_members(x);
765
- //Move allocator if needed
766
- container_detail::bool_<allocator_traits_type::
767
- propagate_on_container_move_assignment::value> flag;
768
- container_detail::move_alloc(this_alloc, x_alloc, flag);
769
- container_detail::move_alloc(this->ptr_alloc(), x.ptr_alloc(), flag);
770
- }
771
- //If unequal allocators, then do a one by one move
772
- else{
773
- typedef typename std::iterator_traits<iterator>::iterator_category ItCat;
774
- this->assign( boost::make_move_iterator(x.begin())
775
- , boost::make_move_iterator(x.end()));
776
- }
776
+ BOOST_ASSERT(this != &x);
777
+ allocator_type &this_alloc = this->alloc();
778
+ allocator_type &x_alloc = x.alloc();
779
+ const bool propagate_alloc = allocator_traits_type::
780
+ propagate_on_container_move_assignment::value;
781
+ container_detail::bool_<propagate_alloc> flag;
782
+ const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal;
783
+ //Resources can be transferred if both allocators are
784
+ //going to be equal after this function (either propagated or already equal)
785
+ if(propagate_alloc || allocators_equal){
786
+ //Destroy objects but retain memory in case x reuses it in the future
787
+ this->clear();
788
+ //Move allocator if needed
789
+ container_detail::move_alloc(this_alloc, x_alloc, flag);
790
+ container_detail::move_alloc(this->ptr_alloc(), x.ptr_alloc(), flag);
791
+ //Nothrow swap
792
+ this->swap_members(x);
793
+ }
794
+ //Else do a one by one move
795
+ else{
796
+ this->assign( boost::make_move_iterator(x.begin())
797
+ , boost::make_move_iterator(x.end()));
777
798
  }
778
799
  return *this;
779
800
  }
780
801
 
802
+ #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
803
+ //! <b>Effects</b>: Makes *this contain the same elements as il.
804
+ //!
805
+ //! <b>Postcondition</b>: this->size() == il.size(). *this contains a copy
806
+ //! of each of x's elements.
807
+ //!
808
+ //! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
809
+ //!
810
+ //! <b>Complexity</b>: Linear to the number of elements in il.
811
+ deque& operator=(std::initializer_list<value_type> il)
812
+ {
813
+ this->assign(il.begin(), il.end());
814
+ return *this;
815
+ }
816
+ #endif
817
+
781
818
  //! <b>Effects</b>: Assigns the n copies of val to *this.
782
819
  //!
783
820
  //! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
@@ -798,9 +835,10 @@ class deque : protected deque_base<T, Allocator>
798
835
  template <class InIt>
799
836
  void assign(InIt first, InIt last
800
837
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
801
- , typename container_detail::enable_if_c
802
- < !container_detail::is_convertible<InIt, size_type>::value
803
- && container_detail::is_input_iterator<InIt>::value
838
+ , typename container_detail::disable_if_or
839
+ < void
840
+ , container_detail::is_convertible<InIt, size_type>
841
+ , container_detail::is_not_input_iterator<InIt>
804
842
  >::type * = 0
805
843
  #endif
806
844
  )
@@ -820,16 +858,17 @@ class deque : protected deque_base<T, Allocator>
820
858
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
821
859
  template <class FwdIt>
822
860
  void assign(FwdIt first, FwdIt last
823
- , typename container_detail::enable_if_c
824
- < !container_detail::is_convertible<FwdIt, size_type>::value
825
- && !container_detail::is_input_iterator<FwdIt>::value
861
+ , typename container_detail::disable_if_or
862
+ < void
863
+ , container_detail::is_convertible<FwdIt, size_type>
864
+ , container_detail::is_input_iterator<FwdIt>
826
865
  >::type * = 0
827
866
  )
828
867
  {
829
- const size_type len = std::distance(first, last);
868
+ const size_type len = boost::container::iterator_distance(first, last);
830
869
  if (len > size()) {
831
870
  FwdIt mid = first;
832
- std::advance(mid, this->size());
871
+ boost::container::iterator_advance(mid, this->size());
833
872
  boost::container::copy(first, mid, begin());
834
873
  this->insert(this->cend(), mid, last);
835
874
  }
@@ -839,12 +878,23 @@ class deque : protected deque_base<T, Allocator>
839
878
  }
840
879
  #endif
841
880
 
881
+ #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
882
+ //! <b>Effects</b>: Assigns the the range [il.begin(), il.end()) to *this.
883
+ //!
884
+ //! <b>Throws</b>: If memory allocation throws or
885
+ //! T's constructor from dereferencing std::initializer_list iterator throws.
886
+ //!
887
+ //! <b>Complexity</b>: Linear to il.size().
888
+ void assign(std::initializer_list<value_type> il)
889
+ { this->assign(il.begin(), il.end()); }
890
+ #endif
891
+
842
892
  //! <b>Effects</b>: Returns a copy of the internal allocator.
843
893
  //!
844
894
  //! <b>Throws</b>: If allocator's copy constructor throws.
845
895
  //!
846
896
  //! <b>Complexity</b>: Constant.
847
- allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT
897
+ allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
848
898
  { return Base::alloc(); }
849
899
 
850
900
  //! <b>Effects</b>: Returns a reference to the internal allocator.
@@ -854,7 +904,7 @@ class deque : protected deque_base<T, Allocator>
854
904
  //! <b>Complexity</b>: Constant.
855
905
  //!
856
906
  //! <b>Note</b>: Non-standard extension.
857
- const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT
907
+ const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
858
908
  { return Base::alloc(); }
859
909
 
860
910
  //////////////////////////////////////////////
@@ -870,7 +920,7 @@ class deque : protected deque_base<T, Allocator>
870
920
  //! <b>Complexity</b>: Constant.
871
921
  //!
872
922
  //! <b>Note</b>: Non-standard extension.
873
- stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT
923
+ stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
874
924
  { return Base::alloc(); }
875
925
 
876
926
  //! <b>Effects</b>: Returns an iterator to the first element contained in the deque.
@@ -878,7 +928,7 @@ class deque : protected deque_base<T, Allocator>
878
928
  //! <b>Throws</b>: Nothing.
879
929
  //!
880
930
  //! <b>Complexity</b>: Constant.
881
- iterator begin() BOOST_CONTAINER_NOEXCEPT
931
+ iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
882
932
  { return this->members_.m_start; }
883
933
 
884
934
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
@@ -886,7 +936,7 @@ class deque : protected deque_base<T, Allocator>
886
936
  //! <b>Throws</b>: Nothing.
887
937
  //!
888
938
  //! <b>Complexity</b>: Constant.
889
- const_iterator begin() const BOOST_CONTAINER_NOEXCEPT
939
+ const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
890
940
  { return this->members_.m_start; }
891
941
 
892
942
  //! <b>Effects</b>: Returns an iterator to the end of the deque.
@@ -894,7 +944,7 @@ class deque : protected deque_base<T, Allocator>
894
944
  //! <b>Throws</b>: Nothing.
895
945
  //!
896
946
  //! <b>Complexity</b>: Constant.
897
- iterator end() BOOST_CONTAINER_NOEXCEPT
947
+ iterator end() BOOST_NOEXCEPT_OR_NOTHROW
898
948
  { return this->members_.m_finish; }
899
949
 
900
950
  //! <b>Effects</b>: Returns a const_iterator to the end of the deque.
@@ -902,7 +952,7 @@ class deque : protected deque_base<T, Allocator>
902
952
  //! <b>Throws</b>: Nothing.
903
953
  //!
904
954
  //! <b>Complexity</b>: Constant.
905
- const_iterator end() const BOOST_CONTAINER_NOEXCEPT
955
+ const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
906
956
  { return this->members_.m_finish; }
907
957
 
908
958
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
@@ -911,7 +961,7 @@ class deque : protected deque_base<T, Allocator>
911
961
  //! <b>Throws</b>: Nothing.
912
962
  //!
913
963
  //! <b>Complexity</b>: Constant.
914
- reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT
964
+ reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
915
965
  { return reverse_iterator(this->members_.m_finish); }
916
966
 
917
967
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
@@ -920,7 +970,7 @@ class deque : protected deque_base<T, Allocator>
920
970
  //! <b>Throws</b>: Nothing.
921
971
  //!
922
972
  //! <b>Complexity</b>: Constant.
923
- const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT
973
+ const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
924
974
  { return const_reverse_iterator(this->members_.m_finish); }
925
975
 
926
976
  //! <b>Effects</b>: Returns a reverse_iterator pointing to the end
@@ -929,7 +979,7 @@ class deque : protected deque_base<T, Allocator>
929
979
  //! <b>Throws</b>: Nothing.
930
980
  //!
931
981
  //! <b>Complexity</b>: Constant.
932
- reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT
982
+ reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
933
983
  { return reverse_iterator(this->members_.m_start); }
934
984
 
935
985
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -938,7 +988,7 @@ class deque : protected deque_base<T, Allocator>
938
988
  //! <b>Throws</b>: Nothing.
939
989
  //!
940
990
  //! <b>Complexity</b>: Constant.
941
- const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT
991
+ const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
942
992
  { return const_reverse_iterator(this->members_.m_start); }
943
993
 
944
994
  //! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
@@ -946,7 +996,7 @@ class deque : protected deque_base<T, Allocator>
946
996
  //! <b>Throws</b>: Nothing.
947
997
  //!
948
998
  //! <b>Complexity</b>: Constant.
949
- const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT
999
+ const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
950
1000
  { return this->members_.m_start; }
951
1001
 
952
1002
  //! <b>Effects</b>: Returns a const_iterator to the end of the deque.
@@ -954,7 +1004,7 @@ class deque : protected deque_base<T, Allocator>
954
1004
  //! <b>Throws</b>: Nothing.
955
1005
  //!
956
1006
  //! <b>Complexity</b>: Constant.
957
- const_iterator cend() const BOOST_CONTAINER_NOEXCEPT
1007
+ const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
958
1008
  { return this->members_.m_finish; }
959
1009
 
960
1010
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
@@ -963,7 +1013,7 @@ class deque : protected deque_base<T, Allocator>
963
1013
  //! <b>Throws</b>: Nothing.
964
1014
  //!
965
1015
  //! <b>Complexity</b>: Constant.
966
- const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT
1016
+ const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
967
1017
  { return const_reverse_iterator(this->members_.m_finish); }
968
1018
 
969
1019
  //! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
@@ -972,7 +1022,7 @@ class deque : protected deque_base<T, Allocator>
972
1022
  //! <b>Throws</b>: Nothing.
973
1023
  //!
974
1024
  //! <b>Complexity</b>: Constant.
975
- const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT
1025
+ const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
976
1026
  { return const_reverse_iterator(this->members_.m_start); }
977
1027
 
978
1028
  //////////////////////////////////////////////
@@ -986,7 +1036,7 @@ class deque : protected deque_base<T, Allocator>
986
1036
  //! <b>Throws</b>: Nothing.
987
1037
  //!
988
1038
  //! <b>Complexity</b>: Constant.
989
- bool empty() const BOOST_CONTAINER_NOEXCEPT
1039
+ bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
990
1040
  { return this->members_.m_finish == this->members_.m_start; }
991
1041
 
992
1042
  //! <b>Effects</b>: Returns the number of the elements contained in the deque.
@@ -994,7 +1044,7 @@ class deque : protected deque_base<T, Allocator>
994
1044
  //! <b>Throws</b>: Nothing.
995
1045
  //!
996
1046
  //! <b>Complexity</b>: Constant.
997
- size_type size() const BOOST_CONTAINER_NOEXCEPT
1047
+ size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
998
1048
  { return this->members_.m_finish - this->members_.m_start; }
999
1049
 
1000
1050
  //! <b>Effects</b>: Returns the largest possible size of the deque.
@@ -1002,13 +1052,13 @@ class deque : protected deque_base<T, Allocator>
1002
1052
  //! <b>Throws</b>: Nothing.
1003
1053
  //!
1004
1054
  //! <b>Complexity</b>: Constant.
1005
- size_type max_size() const BOOST_CONTAINER_NOEXCEPT
1055
+ size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
1006
1056
  { return allocator_traits_type::max_size(this->alloc()); }
1007
1057
 
1008
1058
  //! <b>Effects</b>: Inserts or erases elements at the end such that
1009
- //! the size becomes n. New elements are default constructed.
1059
+ //! the size becomes n. New elements are value initialized.
1010
1060
  //!
1011
- //! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
1061
+ //! <b>Throws</b>: If memory allocation throws, or T's constructor throws.
1012
1062
  //!
1013
1063
  //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1014
1064
  void resize(size_type new_size)
@@ -1018,7 +1068,27 @@ class deque : protected deque_base<T, Allocator>
1018
1068
  this->priv_erase_last_n(len - new_size);
1019
1069
  else{
1020
1070
  const size_type n = new_size - this->size();
1021
- container_detail::insert_default_constructed_n_proxy<Allocator, iterator> proxy(this->alloc());
1071
+ container_detail::insert_value_initialized_n_proxy<Allocator, iterator> proxy;
1072
+ priv_insert_back_aux_impl(n, proxy);
1073
+ }
1074
+ }
1075
+
1076
+ //! <b>Effects</b>: Inserts or erases elements at the end such that
1077
+ //! the size becomes n. New elements are default initialized.
1078
+ //!
1079
+ //! <b>Throws</b>: If memory allocation throws, or T's constructor throws.
1080
+ //!
1081
+ //! <b>Complexity</b>: Linear to the difference between size() and new_size.
1082
+ //!
1083
+ //! <b>Note</b>: Non-standard extension
1084
+ void resize(size_type new_size, default_init_t)
1085
+ {
1086
+ const size_type len = size();
1087
+ if (new_size < len)
1088
+ this->priv_erase_last_n(len - new_size);
1089
+ else{
1090
+ const size_type n = new_size - this->size();
1091
+ container_detail::insert_default_initialized_n_proxy<Allocator, iterator> proxy;
1022
1092
  priv_insert_back_aux_impl(n, proxy);
1023
1093
  }
1024
1094
  }
@@ -1069,8 +1139,11 @@ class deque : protected deque_base<T, Allocator>
1069
1139
  //! <b>Throws</b>: Nothing.
1070
1140
  //!
1071
1141
  //! <b>Complexity</b>: Constant.
1072
- reference front() BOOST_CONTAINER_NOEXCEPT
1073
- { return *this->members_.m_start; }
1142
+ reference front() BOOST_NOEXCEPT_OR_NOTHROW
1143
+ {
1144
+ BOOST_ASSERT(!this->empty());
1145
+ return *this->members_.m_start;
1146
+ }
1074
1147
 
1075
1148
  //! <b>Requires</b>: !empty()
1076
1149
  //!
@@ -1080,8 +1153,11 @@ class deque : protected deque_base<T, Allocator>
1080
1153
  //! <b>Throws</b>: Nothing.
1081
1154
  //!
1082
1155
  //! <b>Complexity</b>: Constant.
1083
- const_reference front() const BOOST_CONTAINER_NOEXCEPT
1084
- { return *this->members_.m_start; }
1156
+ const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
1157
+ {
1158
+ BOOST_ASSERT(!this->empty());
1159
+ return *this->members_.m_start;
1160
+ }
1085
1161
 
1086
1162
  //! <b>Requires</b>: !empty()
1087
1163
  //!
@@ -1091,8 +1167,11 @@ class deque : protected deque_base<T, Allocator>
1091
1167
  //! <b>Throws</b>: Nothing.
1092
1168
  //!
1093
1169
  //! <b>Complexity</b>: Constant.
1094
- reference back() BOOST_CONTAINER_NOEXCEPT
1095
- { return *(end()-1); }
1170
+ reference back() BOOST_NOEXCEPT_OR_NOTHROW
1171
+ {
1172
+ BOOST_ASSERT(!this->empty());
1173
+ return *(end()-1);
1174
+ }
1096
1175
 
1097
1176
  //! <b>Requires</b>: !empty()
1098
1177
  //!
@@ -1102,8 +1181,11 @@ class deque : protected deque_base<T, Allocator>
1102
1181
  //! <b>Throws</b>: Nothing.
1103
1182
  //!
1104
1183
  //! <b>Complexity</b>: Constant.
1105
- const_reference back() const BOOST_CONTAINER_NOEXCEPT
1106
- { return *(cend()-1); }
1184
+ const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
1185
+ {
1186
+ BOOST_ASSERT(!this->empty());
1187
+ return *(cend()-1);
1188
+ }
1107
1189
 
1108
1190
  //! <b>Requires</b>: size() > n.
1109
1191
  //!
@@ -1113,8 +1195,11 @@ class deque : protected deque_base<T, Allocator>
1113
1195
  //! <b>Throws</b>: Nothing.
1114
1196
  //!
1115
1197
  //! <b>Complexity</b>: Constant.
1116
- reference operator[](size_type n) BOOST_CONTAINER_NOEXCEPT
1117
- { return this->members_.m_start[difference_type(n)]; }
1198
+ reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1199
+ {
1200
+ BOOST_ASSERT(this->size() > n);
1201
+ return this->members_.m_start[difference_type(n)];
1202
+ }
1118
1203
 
1119
1204
  //! <b>Requires</b>: size() > n.
1120
1205
  //!
@@ -1124,8 +1209,78 @@ class deque : protected deque_base<T, Allocator>
1124
1209
  //! <b>Throws</b>: Nothing.
1125
1210
  //!
1126
1211
  //! <b>Complexity</b>: Constant.
1127
- const_reference operator[](size_type n) const BOOST_CONTAINER_NOEXCEPT
1128
- { return this->members_.m_start[difference_type(n)]; }
1212
+ const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1213
+ {
1214
+ BOOST_ASSERT(this->size() > n);
1215
+ return this->members_.m_start[difference_type(n)];
1216
+ }
1217
+
1218
+ //! <b>Requires</b>: size() >= n.
1219
+ //!
1220
+ //! <b>Effects</b>: Returns an iterator to the nth element
1221
+ //! from the beginning of the container. Returns end()
1222
+ //! if n == size().
1223
+ //!
1224
+ //! <b>Throws</b>: Nothing.
1225
+ //!
1226
+ //! <b>Complexity</b>: Constant.
1227
+ //!
1228
+ //! <b>Note</b>: Non-standard extension
1229
+ iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
1230
+ {
1231
+ BOOST_ASSERT(this->size() >= n);
1232
+ return iterator(this->begin()+n);
1233
+ }
1234
+
1235
+ //! <b>Requires</b>: size() >= n.
1236
+ //!
1237
+ //! <b>Effects</b>: Returns a const_iterator to the nth element
1238
+ //! from the beginning of the container. Returns end()
1239
+ //! if n == size().
1240
+ //!
1241
+ //! <b>Throws</b>: Nothing.
1242
+ //!
1243
+ //! <b>Complexity</b>: Constant.
1244
+ //!
1245
+ //! <b>Note</b>: Non-standard extension
1246
+ const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
1247
+ {
1248
+ BOOST_ASSERT(this->size() >= n);
1249
+ return const_iterator(this->cbegin()+n);
1250
+ }
1251
+
1252
+ //! <b>Requires</b>: size() >= n.
1253
+ //!
1254
+ //! <b>Effects</b>: Returns an iterator to the nth element
1255
+ //! from the beginning of the container. Returns end()
1256
+ //! if n == size().
1257
+ //!
1258
+ //! <b>Throws</b>: Nothing.
1259
+ //!
1260
+ //! <b>Complexity</b>: Constant.
1261
+ //!
1262
+ //! <b>Note</b>: Non-standard extension
1263
+ size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
1264
+ {
1265
+ //Range checked priv_index_of
1266
+ return this->priv_index_of(p);
1267
+ }
1268
+
1269
+ //! <b>Requires</b>: begin() <= p <= end().
1270
+ //!
1271
+ //! <b>Effects</b>: Returns the index of the element pointed by p
1272
+ //! and size() if p == end().
1273
+ //!
1274
+ //! <b>Throws</b>: Nothing.
1275
+ //!
1276
+ //! <b>Complexity</b>: Constant.
1277
+ //!
1278
+ //! <b>Note</b>: Non-standard extension
1279
+ size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
1280
+ {
1281
+ //Range checked priv_index_of
1282
+ return this->priv_index_of(p);
1283
+ }
1129
1284
 
1130
1285
  //! <b>Requires</b>: size() > n.
1131
1286
  //!
@@ -1136,7 +1291,10 @@ class deque : protected deque_base<T, Allocator>
1136
1291
  //!
1137
1292
  //! <b>Complexity</b>: Constant.
1138
1293
  reference at(size_type n)
1139
- { this->priv_range_check(n); return (*this)[n]; }
1294
+ {
1295
+ this->priv_throw_if_out_of_range(n);
1296
+ return (*this)[n];
1297
+ }
1140
1298
 
1141
1299
  //! <b>Requires</b>: size() > n.
1142
1300
  //!
@@ -1147,7 +1305,10 @@ class deque : protected deque_base<T, Allocator>
1147
1305
  //!
1148
1306
  //! <b>Complexity</b>: Constant.
1149
1307
  const_reference at(size_type n) const
1150
- { this->priv_range_check(n); return (*this)[n]; }
1308
+ {
1309
+ this->priv_throw_if_out_of_range(n);
1310
+ return (*this)[n];
1311
+ }
1151
1312
 
1152
1313
  //////////////////////////////////////////////
1153
1314
  //
@@ -1155,7 +1316,7 @@ class deque : protected deque_base<T, Allocator>
1155
1316
  //
1156
1317
  //////////////////////////////////////////////
1157
1318
 
1158
- #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1319
+ #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1159
1320
 
1160
1321
  //! <b>Effects</b>: Inserts an object of type T constructed with
1161
1322
  //! std::forward<Args>(args)... in the beginning of the deque.
@@ -1164,7 +1325,7 @@ class deque : protected deque_base<T, Allocator>
1164
1325
  //!
1165
1326
  //! <b>Complexity</b>: Amortized constant time
1166
1327
  template <class... Args>
1167
- void emplace_front(Args&&... args)
1328
+ void emplace_front(BOOST_FWD_REF(Args)... args)
1168
1329
  {
1169
1330
  if(this->priv_push_front_simple_available()){
1170
1331
  allocator_traits_type::construct
@@ -1174,8 +1335,8 @@ class deque : protected deque_base<T, Allocator>
1174
1335
  this->priv_push_front_simple_commit();
1175
1336
  }
1176
1337
  else{
1177
- typedef container_detail::insert_non_movable_emplace_proxy<Allocator, iterator, Args...> type;
1178
- this->priv_insert_front_aux_impl(1, type(this->alloc(), boost::forward<Args>(args)...));
1338
+ typedef container_detail::insert_nonmovable_emplace_proxy<Allocator, iterator, Args...> type;
1339
+ this->priv_insert_front_aux_impl(1, type(boost::forward<Args>(args)...));
1179
1340
  }
1180
1341
  }
1181
1342
 
@@ -1186,7 +1347,7 @@ class deque : protected deque_base<T, Allocator>
1186
1347
  //!
1187
1348
  //! <b>Complexity</b>: Amortized constant time
1188
1349
  template <class... Args>
1189
- void emplace_back(Args&&... args)
1350
+ void emplace_back(BOOST_FWD_REF(Args)... args)
1190
1351
  {
1191
1352
  if(this->priv_push_back_simple_available()){
1192
1353
  allocator_traits_type::construct
@@ -1196,23 +1357,24 @@ class deque : protected deque_base<T, Allocator>
1196
1357
  this->priv_push_back_simple_commit();
1197
1358
  }
1198
1359
  else{
1199
- typedef container_detail::insert_non_movable_emplace_proxy<Allocator, iterator, Args...> type;
1200
- this->priv_insert_back_aux_impl(1, type(this->alloc(), boost::forward<Args>(args)...));
1360
+ typedef container_detail::insert_nonmovable_emplace_proxy<Allocator, iterator, Args...> type;
1361
+ this->priv_insert_back_aux_impl(1, type(boost::forward<Args>(args)...));
1201
1362
  }
1202
1363
  }
1203
1364
 
1204
- //! <b>Requires</b>: position must be a valid iterator of *this.
1365
+ //! <b>Requires</b>: p must be a valid iterator of *this.
1205
1366
  //!
1206
1367
  //! <b>Effects</b>: Inserts an object of type T constructed with
1207
- //! std::forward<Args>(args)... before position
1368
+ //! std::forward<Args>(args)... before p
1208
1369
  //!
1209
1370
  //! <b>Throws</b>: If memory allocation throws or the in-place constructor throws.
1210
1371
  //!
1211
- //! <b>Complexity</b>: If position is end(), amortized constant time
1372
+ //! <b>Complexity</b>: If p is end(), amortized constant time
1212
1373
  //! Linear time otherwise.
1213
1374
  template <class... Args>
1214
- iterator emplace(const_iterator p, Args&&... args)
1375
+ iterator emplace(const_iterator p, BOOST_FWD_REF(Args)... args)
1215
1376
  {
1377
+ BOOST_ASSERT(this->priv_in_range_or_end(p));
1216
1378
  if(p == this->cbegin()){
1217
1379
  this->emplace_front(boost::forward<Args>(args)...);
1218
1380
  return this->begin();
@@ -1223,74 +1385,66 @@ class deque : protected deque_base<T, Allocator>
1223
1385
  }
1224
1386
  else{
1225
1387
  typedef container_detail::insert_emplace_proxy<Allocator, iterator, Args...> type;
1226
- return this->priv_insert_aux_impl(p, 1, type(this->alloc(), boost::forward<Args>(args)...));
1227
- }
1228
- }
1229
-
1230
- #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
1231
-
1232
- //advanced_insert_int.hpp includes all necessary preprocessor machinery...
1233
- #define BOOST_PP_LOCAL_MACRO(n) \
1234
- BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, > ) \
1235
- void emplace_front(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
1236
- { \
1237
- if(priv_push_front_simple_available()){ \
1238
- allocator_traits_type::construct \
1239
- ( this->alloc() \
1240
- , this->priv_push_front_simple_pos() \
1241
- BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1242
- priv_push_front_simple_commit(); \
1243
- } \
1244
- else{ \
1245
- container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \
1246
- <Allocator, iterator BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
1247
- (this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1248
- priv_insert_front_aux_impl(1, proxy); \
1249
- } \
1250
- } \
1251
- \
1252
- BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
1253
- void emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
1254
- { \
1255
- if(priv_push_back_simple_available()){ \
1256
- allocator_traits_type::construct \
1257
- ( this->alloc() \
1258
- , this->priv_push_back_simple_pos() \
1259
- BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1260
- priv_push_back_simple_commit(); \
1261
- } \
1262
- else{ \
1263
- container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \
1264
- <Allocator, iterator BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
1265
- (this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1266
- priv_insert_back_aux_impl(1, proxy); \
1267
- } \
1268
- } \
1269
- \
1270
- BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \
1271
- iterator emplace(const_iterator p \
1272
- BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \
1273
- { \
1274
- if(p == this->cbegin()){ \
1275
- this->emplace_front(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1276
- return this->begin(); \
1277
- } \
1278
- else if(p == cend()){ \
1279
- this->emplace_back(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1280
- return (this->end()-1); \
1281
- } \
1282
- else{ \
1283
- container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \
1284
- <Allocator, iterator BOOST_PP_ENUM_TRAILING_PARAMS(n, P)> proxy \
1285
- (this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \
1286
- return this->priv_insert_aux_impl(p, 1, proxy); \
1287
- } \
1288
- } \
1289
- //!
1290
- #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
1291
- #include BOOST_PP_LOCAL_ITERATE()
1292
-
1293
- #endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING
1388
+ return this->priv_insert_aux_impl(p, 1, type(boost::forward<Args>(args)...));
1389
+ }
1390
+ }
1391
+
1392
+ #else //!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1393
+
1394
+ #define BOOST_CONTAINER_DEQUE_EMPLACE_CODE(N) \
1395
+ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N\
1396
+ void emplace_front(BOOST_MOVE_UREF##N)\
1397
+ {\
1398
+ if(priv_push_front_simple_available()){\
1399
+ allocator_traits_type::construct\
1400
+ ( this->alloc(), this->priv_push_front_simple_pos() BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
1401
+ priv_push_front_simple_commit();\
1402
+ }\
1403
+ else{\
1404
+ typedef container_detail::insert_nonmovable_emplace_proxy##N\
1405
+ <Allocator, iterator BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1406
+ priv_insert_front_aux_impl(1, type(BOOST_MOVE_FWD##N));\
1407
+ }\
1408
+ }\
1409
+ \
1410
+ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N\
1411
+ void emplace_back(BOOST_MOVE_UREF##N)\
1412
+ {\
1413
+ if(priv_push_back_simple_available()){\
1414
+ allocator_traits_type::construct\
1415
+ ( this->alloc(), this->priv_push_back_simple_pos() BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
1416
+ priv_push_back_simple_commit();\
1417
+ }\
1418
+ else{\
1419
+ typedef container_detail::insert_nonmovable_emplace_proxy##N\
1420
+ <Allocator, iterator BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1421
+ priv_insert_back_aux_impl(1, type(BOOST_MOVE_FWD##N));\
1422
+ }\
1423
+ }\
1424
+ \
1425
+ BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N\
1426
+ iterator emplace(const_iterator p BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
1427
+ {\
1428
+ BOOST_ASSERT(this->priv_in_range_or_end(p));\
1429
+ if(p == this->cbegin()){\
1430
+ this->emplace_front(BOOST_MOVE_FWD##N);\
1431
+ return this->begin();\
1432
+ }\
1433
+ else if(p == cend()){\
1434
+ this->emplace_back(BOOST_MOVE_FWD##N);\
1435
+ return (--this->end());\
1436
+ }\
1437
+ else{\
1438
+ typedef container_detail::insert_emplace_proxy_arg##N\
1439
+ <Allocator, iterator BOOST_MOVE_I##N BOOST_MOVE_TARG##N> type;\
1440
+ return this->priv_insert_aux_impl(p, 1, type(BOOST_MOVE_FWD##N));\
1441
+ }\
1442
+ }
1443
+ //
1444
+ BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_DEQUE_EMPLACE_CODE)
1445
+ #undef BOOST_CONTAINER_DEQUE_EMPLACE_CODE
1446
+
1447
+ #endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
1294
1448
 
1295
1449
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1296
1450
  //! <b>Effects</b>: Inserts a copy of x at the front of the deque.
@@ -1302,7 +1456,7 @@ class deque : protected deque_base<T, Allocator>
1302
1456
  void push_front(const T &x);
1303
1457
 
1304
1458
  //! <b>Effects</b>: Constructs a new element in the front of the deque
1305
- //! and moves the resources of mx to this new element.
1459
+ //! and moves the resources of x to this new element.
1306
1460
  //!
1307
1461
  //! <b>Throws</b>: If memory allocation throws.
1308
1462
  //!
@@ -1322,7 +1476,7 @@ class deque : protected deque_base<T, Allocator>
1322
1476
  void push_back(const T &x);
1323
1477
 
1324
1478
  //! <b>Effects</b>: Constructs a new element in the end of the deque
1325
- //! and moves the resources of mx to this new element.
1479
+ //! and moves the resources of x to this new element.
1326
1480
  //!
1327
1481
  //! <b>Throws</b>: If memory allocation throws.
1328
1482
  //!
@@ -1334,31 +1488,31 @@ class deque : protected deque_base<T, Allocator>
1334
1488
 
1335
1489
  #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1336
1490
 
1337
- //! <b>Requires</b>: position must be a valid iterator of *this.
1491
+ //! <b>Requires</b>: p must be a valid iterator of *this.
1338
1492
  //!
1339
- //! <b>Effects</b>: Insert a copy of x before position.
1493
+ //! <b>Effects</b>: Insert a copy of x before p.
1340
1494
  //!
1341
1495
  //! <b>Returns</b>: an iterator to the inserted element.
1342
1496
  //!
1343
1497
  //! <b>Throws</b>: If memory allocation throws or x's copy constructor throws.
1344
1498
  //!
1345
- //! <b>Complexity</b>: If position is end(), amortized constant time
1499
+ //! <b>Complexity</b>: If p is end(), amortized constant time
1346
1500
  //! Linear time otherwise.
1347
- iterator insert(const_iterator position, const T &x);
1501
+ iterator insert(const_iterator p, const T &x);
1348
1502
 
1349
- //! <b>Requires</b>: position must be a valid iterator of *this.
1503
+ //! <b>Requires</b>: p must be a valid iterator of *this.
1350
1504
  //!
1351
- //! <b>Effects</b>: Insert a new element before position with mx's resources.
1505
+ //! <b>Effects</b>: Insert a new element before p with x's resources.
1352
1506
  //!
1353
1507
  //! <b>Returns</b>: an iterator to the inserted element.
1354
1508
  //!
1355
1509
  //! <b>Throws</b>: If memory allocation throws.
1356
1510
  //!
1357
- //! <b>Complexity</b>: If position is end(), amortized constant time
1511
+ //! <b>Complexity</b>: If p is end(), amortized constant time
1358
1512
  //! Linear time otherwise.
1359
- iterator insert(const_iterator position, T &&x);
1513
+ iterator insert(const_iterator p, T &&x);
1360
1514
  #else
1361
- BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator)
1515
+ BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator, const_iterator)
1362
1516
  #endif
1363
1517
 
1364
1518
  //! <b>Requires</b>: pos must be a valid iterator of *this.
@@ -1372,6 +1526,7 @@ class deque : protected deque_base<T, Allocator>
1372
1526
  //! <b>Complexity</b>: Linear to n.
1373
1527
  iterator insert(const_iterator pos, size_type n, const value_type& x)
1374
1528
  {
1529
+ //Range check of p is done by insert()
1375
1530
  typedef constant_iterator<value_type, difference_type> c_it;
1376
1531
  return this->insert(pos, c_it(x, n), c_it());
1377
1532
  }
@@ -1385,19 +1540,21 @@ class deque : protected deque_base<T, Allocator>
1385
1540
  //! <b>Throws</b>: If memory allocation throws, T's constructor from a
1386
1541
  //! dereferenced InIt throws or T's copy constructor throws.
1387
1542
  //!
1388
- //! <b>Complexity</b>: Linear to std::distance [first, last).
1543
+ //! <b>Complexity</b>: Linear to distance [first, last).
1389
1544
  template <class InIt>
1390
1545
  iterator insert(const_iterator pos, InIt first, InIt last
1391
1546
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1392
- , typename container_detail::enable_if_c
1393
- < !container_detail::is_convertible<InIt, size_type>::value
1394
- && container_detail::is_input_iterator<InIt>::value
1547
+ , typename container_detail::disable_if_or
1548
+ < void
1549
+ , container_detail::is_convertible<InIt, size_type>
1550
+ , container_detail::is_not_input_iterator<InIt>
1395
1551
  >::type * = 0
1396
1552
  #endif
1397
1553
  )
1398
1554
  {
1555
+ BOOST_ASSERT(this->priv_in_range_or_end(pos));
1399
1556
  size_type n = 0;
1400
- iterator it(pos);
1557
+ iterator it(pos.unconst());
1401
1558
  for(;first != last; ++first, ++n){
1402
1559
  it = this->emplace(it, *first);
1403
1560
  ++it;
@@ -1406,19 +1563,39 @@ class deque : protected deque_base<T, Allocator>
1406
1563
  return it;
1407
1564
  }
1408
1565
 
1566
+ #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1567
+ //! <b>Requires</b>: pos must be a valid iterator of *this.
1568
+ //!
1569
+ //! <b>Effects</b>: Insert a copy of the [il.begin(), il.end()) range before pos.
1570
+ //!
1571
+ //! <b>Returns</b>: an iterator to the first inserted element or pos if il.begin() == il.end().
1572
+ //!
1573
+ //! <b>Throws</b>: If memory allocation throws, T's constructor from a
1574
+ //! dereferenced std::initializer_list throws or T's copy constructor throws.
1575
+ //!
1576
+ //! <b>Complexity</b>: Linear to distance [il.begin(), il.end()).
1577
+ iterator insert(const_iterator pos, std::initializer_list<value_type> il)
1578
+ {
1579
+ //Range check os pos is done in insert()
1580
+ return insert(pos, il.begin(), il.end());
1581
+ }
1582
+ #endif
1583
+
1409
1584
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1410
1585
  template <class FwdIt>
1411
1586
  iterator insert(const_iterator p, FwdIt first, FwdIt last
1412
1587
  #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
1413
- , typename container_detail::enable_if_c
1414
- < !container_detail::is_convertible<FwdIt, size_type>::value
1415
- && !container_detail::is_input_iterator<FwdIt>::value
1588
+ , typename container_detail::disable_if_or
1589
+ < void
1590
+ , container_detail::is_convertible<FwdIt, size_type>
1591
+ , container_detail::is_input_iterator<FwdIt>
1416
1592
  >::type * = 0
1417
1593
  #endif
1418
1594
  )
1419
1595
  {
1420
- container_detail::insert_range_proxy<Allocator, FwdIt, iterator> proxy(this->alloc(), first);
1421
- return priv_insert_aux_impl(p, (size_type)std::distance(first, last), proxy);
1596
+ BOOST_ASSERT(this->priv_in_range_or_end(p));
1597
+ container_detail::insert_range_proxy<Allocator, FwdIt, iterator> proxy(first);
1598
+ return priv_insert_aux_impl(p, boost::container::iterator_distance(first, last), proxy);
1422
1599
  }
1423
1600
  #endif
1424
1601
 
@@ -1427,8 +1604,9 @@ class deque : protected deque_base<T, Allocator>
1427
1604
  //! <b>Throws</b>: Nothing.
1428
1605
  //!
1429
1606
  //! <b>Complexity</b>: Constant time.
1430
- void pop_front() BOOST_CONTAINER_NOEXCEPT
1607
+ void pop_front() BOOST_NOEXCEPT_OR_NOTHROW
1431
1608
  {
1609
+ BOOST_ASSERT(!this->empty());
1432
1610
  if (this->members_.m_start.m_cur != this->members_.m_start.m_last - 1) {
1433
1611
  allocator_traits_type::destroy
1434
1612
  ( this->alloc()
@@ -1445,8 +1623,9 @@ class deque : protected deque_base<T, Allocator>
1445
1623
  //! <b>Throws</b>: Nothing.
1446
1624
  //!
1447
1625
  //! <b>Complexity</b>: Constant time.
1448
- void pop_back() BOOST_CONTAINER_NOEXCEPT
1626
+ void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
1449
1627
  {
1628
+ BOOST_ASSERT(!this->empty());
1450
1629
  if (this->members_.m_finish.m_cur != this->members_.m_finish.m_first) {
1451
1630
  --this->members_.m_finish.m_cur;
1452
1631
  allocator_traits_type::destroy
@@ -1458,7 +1637,7 @@ class deque : protected deque_base<T, Allocator>
1458
1637
  this->priv_pop_back_aux();
1459
1638
  }
1460
1639
 
1461
- //! <b>Effects</b>: Erases the element at position pos.
1640
+ //! <b>Effects</b>: Erases the element at p.
1462
1641
  //!
1463
1642
  //! <b>Throws</b>: Nothing.
1464
1643
  //!
@@ -1466,17 +1645,18 @@ class deque : protected deque_base<T, Allocator>
1466
1645
  //! last element (if pos is near the end) or the first element
1467
1646
  //! if(pos is near the beginning).
1468
1647
  //! Constant if pos is the first or the last element.
1469
- iterator erase(const_iterator pos) BOOST_CONTAINER_NOEXCEPT
1648
+ iterator erase(const_iterator pos) BOOST_NOEXCEPT_OR_NOTHROW
1470
1649
  {
1471
- const_iterator next = pos;
1650
+ BOOST_ASSERT(this->priv_in_range(pos));
1651
+ iterator next = pos.unconst();
1472
1652
  ++next;
1473
1653
  size_type index = pos - this->members_.m_start;
1474
1654
  if (index < (this->size()/2)) {
1475
- boost::move_backward(begin(), iterator(pos), iterator(next));
1655
+ boost::container::move_backward(this->begin(), pos.unconst(), next);
1476
1656
  pop_front();
1477
1657
  }
1478
1658
  else {
1479
- boost::move(iterator(next), end(), iterator(pos));
1659
+ boost::container::move(next, this->end(), pos.unconst());
1480
1660
  pop_back();
1481
1661
  }
1482
1662
  return this->members_.m_start + index;
@@ -1490,8 +1670,10 @@ class deque : protected deque_base<T, Allocator>
1490
1670
  //! last plus the elements between pos and the
1491
1671
  //! last element (if pos is near the end) or the first element
1492
1672
  //! if(pos is near the beginning).
1493
- iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT
1673
+ iterator erase(const_iterator first, const_iterator last) BOOST_NOEXCEPT_OR_NOTHROW
1494
1674
  {
1675
+ BOOST_ASSERT(first == last ||
1676
+ (first < last && this->priv_in_range(first) && this->priv_in_range_or_end(last)));
1495
1677
  if (first == this->members_.m_start && last == this->members_.m_finish) {
1496
1678
  this->clear();
1497
1679
  return this->members_.m_finish;
@@ -1500,7 +1682,7 @@ class deque : protected deque_base<T, Allocator>
1500
1682
  const size_type n = static_cast<size_type>(last - first);
1501
1683
  const size_type elems_before = static_cast<size_type>(first - this->members_.m_start);
1502
1684
  if (elems_before < (this->size() - n) - elems_before) {
1503
- boost::move_backward(begin(), iterator(first), iterator(last));
1685
+ boost::container::move_backward(begin(), first.unconst(), last.unconst());
1504
1686
  iterator new_start = this->members_.m_start + n;
1505
1687
  if(!Base::traits_t::trivial_dctr_after_move)
1506
1688
  this->priv_destroy_range(this->members_.m_start, new_start);
@@ -1508,7 +1690,7 @@ class deque : protected deque_base<T, Allocator>
1508
1690
  this->members_.m_start = new_start;
1509
1691
  }
1510
1692
  else {
1511
- boost::move(iterator(last), end(), iterator(first));
1693
+ boost::container::move(last.unconst(), end(), first.unconst());
1512
1694
  iterator new_finish = this->members_.m_finish - n;
1513
1695
  if(!Base::traits_t::trivial_dctr_after_move)
1514
1696
  this->priv_destroy_range(new_finish, this->members_.m_finish);
@@ -1525,6 +1707,8 @@ class deque : protected deque_base<T, Allocator>
1525
1707
  //!
1526
1708
  //! <b>Complexity</b>: Constant.
1527
1709
  void swap(deque &x)
1710
+ BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_swap::value
1711
+ || allocator_traits_type::is_always_equal::value)
1528
1712
  {
1529
1713
  this->swap_members(x);
1530
1714
  container_detail::bool_<allocator_traits_type::propagate_on_container_swap::value> flag;
@@ -1537,7 +1721,7 @@ class deque : protected deque_base<T, Allocator>
1537
1721
  //! <b>Throws</b>: Nothing.
1538
1722
  //!
1539
1723
  //! <b>Complexity</b>: Linear to the number of elements in the deque.
1540
- void clear() BOOST_CONTAINER_NOEXCEPT
1724
+ void clear() BOOST_NOEXCEPT_OR_NOTHROW
1541
1725
  {
1542
1726
  for (index_pointer node = this->members_.m_start.m_node + 1;
1543
1727
  node < this->members_.m_finish.m_node;
@@ -1557,9 +1741,58 @@ class deque : protected deque_base<T, Allocator>
1557
1741
  this->members_.m_finish = this->members_.m_start;
1558
1742
  }
1559
1743
 
1560
- /// @cond
1744
+ //! <b>Effects</b>: Returns true if x and y are equal
1745
+ //!
1746
+ //! <b>Complexity</b>: Linear to the number of elements in the container.
1747
+ friend bool operator==(const deque& x, const deque& y)
1748
+ { return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
1749
+
1750
+ //! <b>Effects</b>: Returns true if x and y are unequal
1751
+ //!
1752
+ //! <b>Complexity</b>: Linear to the number of elements in the container.
1753
+ friend bool operator!=(const deque& x, const deque& y)
1754
+ { return !(x == y); }
1755
+
1756
+ //! <b>Effects</b>: Returns true if x is less than y
1757
+ //!
1758
+ //! <b>Complexity</b>: Linear to the number of elements in the container.
1759
+ friend bool operator<(const deque& x, const deque& y)
1760
+ { return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
1761
+
1762
+ //! <b>Effects</b>: Returns true if x is greater than y
1763
+ //!
1764
+ //! <b>Complexity</b>: Linear to the number of elements in the container.
1765
+ friend bool operator>(const deque& x, const deque& y)
1766
+ { return y < x; }
1767
+
1768
+ //! <b>Effects</b>: Returns true if x is equal or less than y
1769
+ //!
1770
+ //! <b>Complexity</b>: Linear to the number of elements in the container.
1771
+ friend bool operator<=(const deque& x, const deque& y)
1772
+ { return !(y < x); }
1773
+
1774
+ //! <b>Effects</b>: Returns true if x is equal or greater than y
1775
+ //!
1776
+ //! <b>Complexity</b>: Linear to the number of elements in the container.
1777
+ friend bool operator>=(const deque& x, const deque& y)
1778
+ { return !(x < y); }
1779
+
1780
+ //! <b>Effects</b>: x.swap(y)
1781
+ //!
1782
+ //! <b>Complexity</b>: Constant.
1783
+ friend void swap(deque& x, deque& y)
1784
+ { x.swap(y); }
1785
+
1786
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1561
1787
  private:
1562
1788
 
1789
+ size_type priv_index_of(const_iterator p) const
1790
+ {
1791
+ BOOST_ASSERT(this->cbegin() <= p);
1792
+ BOOST_ASSERT(p <= this->cend());
1793
+ return static_cast<size_type>(p - this->cbegin());
1794
+ }
1795
+
1563
1796
  void priv_erase_last_n(size_type n)
1564
1797
  {
1565
1798
  if(n == this->size()) {
@@ -1574,23 +1807,38 @@ class deque : protected deque_base<T, Allocator>
1574
1807
  }
1575
1808
  }
1576
1809
 
1577
- void priv_range_check(size_type n) const
1578
- { if (n >= this->size()) throw_out_of_range("deque::at out of range"); }
1810
+ void priv_throw_if_out_of_range(size_type n) const
1811
+ {
1812
+ if (n >= this->size())
1813
+ throw_out_of_range("deque::at out of range");
1814
+ }
1815
+
1816
+ bool priv_in_range(const_iterator pos) const
1817
+ {
1818
+ return (this->begin() <= pos) && (pos < this->end());
1819
+ }
1820
+
1821
+ bool priv_in_range_or_end(const_iterator pos) const
1822
+ {
1823
+ return (this->begin() <= pos) && (pos <= this->end());
1824
+ }
1579
1825
 
1580
1826
  template <class U>
1581
- iterator priv_insert(const_iterator position, BOOST_FWD_REF(U) x)
1827
+ iterator priv_insert(const_iterator p, BOOST_FWD_REF(U) x)
1582
1828
  {
1583
- if (position == cbegin()){
1829
+ BOOST_ASSERT(this->priv_in_range_or_end(p));
1830
+ if (p == cbegin()){
1584
1831
  this->push_front(::boost::forward<U>(x));
1585
1832
  return begin();
1586
1833
  }
1587
- else if (position == cend()){
1834
+ else if (p == cend()){
1588
1835
  this->push_back(::boost::forward<U>(x));
1589
1836
  return --end();
1590
1837
  }
1591
1838
  else {
1592
1839
  return priv_insert_aux_impl
1593
- (position, (size_type)1, container_detail::get_insert_value_proxy<iterator>(this->alloc(), ::boost::forward<U>(x)));
1840
+ ( p, (size_type)1
1841
+ , container_detail::get_insert_value_proxy<iterator, Allocator>(::boost::forward<U>(x)));
1594
1842
  }
1595
1843
  }
1596
1844
 
@@ -1604,7 +1852,8 @@ class deque : protected deque_base<T, Allocator>
1604
1852
  }
1605
1853
  else{
1606
1854
  priv_insert_aux_impl
1607
- (this->cbegin(), (size_type)1, container_detail::get_insert_value_proxy<iterator>(this->alloc(), ::boost::forward<U>(x)));
1855
+ ( this->cbegin(), (size_type)1
1856
+ , container_detail::get_insert_value_proxy<iterator, Allocator>(::boost::forward<U>(x)));
1608
1857
  }
1609
1858
  }
1610
1859
 
@@ -1618,8 +1867,8 @@ class deque : protected deque_base<T, Allocator>
1618
1867
  }
1619
1868
  else{
1620
1869
  priv_insert_aux_impl
1621
- (this->cend(), (size_type)1, container_detail::get_insert_value_proxy<iterator>(this->alloc(), ::boost::forward<U>(x)));
1622
- container_detail::insert_copy_proxy<Allocator, iterator> proxy(this->alloc(), x);
1870
+ ( this->cend(), (size_type)1
1871
+ , container_detail::get_insert_value_proxy<iterator, Allocator>(::boost::forward<U>(x)));
1623
1872
  }
1624
1873
  }
1625
1874
 
@@ -1653,28 +1902,26 @@ class deque : protected deque_base<T, Allocator>
1653
1902
 
1654
1903
  void priv_destroy_range(iterator p, iterator p2)
1655
1904
  {
1656
- for(;p != p2; ++p){
1657
- allocator_traits_type::destroy
1658
- ( this->alloc()
1659
- , container_detail::to_raw_pointer(&*p)
1660
- );
1905
+ if(!Base::traits_t::trivial_dctr){
1906
+ for(;p != p2; ++p){
1907
+ allocator_traits_type::destroy(this->alloc(), container_detail::iterator_to_raw_pointer(p));
1908
+ }
1661
1909
  }
1662
1910
  }
1663
1911
 
1664
1912
  void priv_destroy_range(pointer p, pointer p2)
1665
1913
  {
1666
- for(;p != p2; ++p){
1667
- allocator_traits_type::destroy
1668
- ( this->alloc()
1669
- , container_detail::to_raw_pointer(&*p)
1670
- );
1914
+ if(!Base::traits_t::trivial_dctr){
1915
+ for(;p != p2; ++p){
1916
+ allocator_traits_type::destroy(this->alloc(), container_detail::iterator_to_raw_pointer(p));
1917
+ }
1671
1918
  }
1672
1919
  }
1673
1920
 
1674
1921
  template<class InsertProxy>
1675
- iterator priv_insert_aux_impl(const_iterator p, size_type n, InsertProxy interf)
1922
+ iterator priv_insert_aux_impl(const_iterator p, size_type n, InsertProxy proxy)
1676
1923
  {
1677
- iterator pos(p);
1924
+ iterator pos(p.unconst());
1678
1925
  const size_type pos_n = p - this->cbegin();
1679
1926
  if(!this->members_.m_map){
1680
1927
  this->priv_initialize_map(0);
@@ -1687,7 +1934,7 @@ class deque : protected deque_base<T, Allocator>
1687
1934
  const iterator new_start = this->priv_reserve_elements_at_front(n);
1688
1935
  const iterator old_start = this->members_.m_start;
1689
1936
  if(!elemsbefore){
1690
- interf.uninitialized_copy_n_and_update(new_start, n);
1937
+ proxy.uninitialized_copy_n_and_update(this->alloc(), new_start, n);
1691
1938
  this->members_.m_start = new_start;
1692
1939
  }
1693
1940
  else{
@@ -1697,18 +1944,18 @@ class deque : protected deque_base<T, Allocator>
1697
1944
  ::boost::container::uninitialized_move_alloc
1698
1945
  (this->alloc(), this->members_.m_start, start_n, new_start);
1699
1946
  this->members_.m_start = new_start;
1700
- boost::move(start_n, pos, old_start);
1701
- interf.copy_n_and_update(pos - n, n);
1947
+ boost::container::move(start_n, pos, old_start);
1948
+ proxy.copy_n_and_update(this->alloc(), pos - n, n);
1702
1949
  }
1703
1950
  else {
1704
1951
  const size_type mid_count = n - elemsbefore;
1705
1952
  const iterator mid_start = old_start - mid_count;
1706
- interf.uninitialized_copy_n_and_update(mid_start, mid_count);
1953
+ proxy.uninitialized_copy_n_and_update(this->alloc(), mid_start, mid_count);
1707
1954
  this->members_.m_start = mid_start;
1708
1955
  ::boost::container::uninitialized_move_alloc
1709
1956
  (this->alloc(), old_start, pos, new_start);
1710
1957
  this->members_.m_start = new_start;
1711
- interf.copy_n_and_update(old_start, elemsbefore);
1958
+ proxy.copy_n_and_update(this->alloc(), old_start, elemsbefore);
1712
1959
  }
1713
1960
  }
1714
1961
  }
@@ -1717,7 +1964,7 @@ class deque : protected deque_base<T, Allocator>
1717
1964
  const iterator old_finish = this->members_.m_finish;
1718
1965
  const size_type elemsafter = length - elemsbefore;
1719
1966
  if(!elemsafter){
1720
- interf.uninitialized_copy_n_and_update(old_finish, n);
1967
+ proxy.uninitialized_copy_n_and_update(this->alloc(), old_finish, n);
1721
1968
  this->members_.m_finish = new_finish;
1722
1969
  }
1723
1970
  else{
@@ -1727,16 +1974,16 @@ class deque : protected deque_base<T, Allocator>
1727
1974
  ::boost::container::uninitialized_move_alloc
1728
1975
  (this->alloc(), finish_n, old_finish, old_finish);
1729
1976
  this->members_.m_finish = new_finish;
1730
- boost::move_backward(pos, finish_n, old_finish);
1731
- interf.copy_n_and_update(pos, n);
1977
+ boost::container::move_backward(pos, finish_n, old_finish);
1978
+ proxy.copy_n_and_update(this->alloc(), pos, n);
1732
1979
  }
1733
1980
  else {
1734
1981
  const size_type raw_gap = n - elemsafter;
1735
1982
  ::boost::container::uninitialized_move_alloc
1736
1983
  (this->alloc(), pos, old_finish, old_finish + raw_gap);
1737
1984
  BOOST_TRY{
1738
- interf.copy_n_and_update(pos, elemsafter);
1739
- interf.uninitialized_copy_n_and_update(old_finish, raw_gap);
1985
+ proxy.copy_n_and_update(this->alloc(), pos, elemsafter);
1986
+ proxy.uninitialized_copy_n_and_update(this->alloc(), old_finish, raw_gap);
1740
1987
  }
1741
1988
  BOOST_CATCH(...){
1742
1989
  this->priv_destroy_range(old_finish, old_finish + elemsafter);
@@ -1751,7 +1998,7 @@ class deque : protected deque_base<T, Allocator>
1751
1998
  }
1752
1999
 
1753
2000
  template <class InsertProxy>
1754
- iterator priv_insert_back_aux_impl(size_type n, InsertProxy interf)
2001
+ iterator priv_insert_back_aux_impl(size_type n, InsertProxy proxy)
1755
2002
  {
1756
2003
  if(!this->members_.m_map){
1757
2004
  this->priv_initialize_map(0);
@@ -1759,20 +2006,20 @@ class deque : protected deque_base<T, Allocator>
1759
2006
 
1760
2007
  iterator new_finish = this->priv_reserve_elements_at_back(n);
1761
2008
  iterator old_finish = this->members_.m_finish;
1762
- interf.uninitialized_copy_n_and_update(old_finish, n);
2009
+ proxy.uninitialized_copy_n_and_update(this->alloc(), old_finish, n);
1763
2010
  this->members_.m_finish = new_finish;
1764
2011
  return iterator(this->members_.m_finish - n);
1765
2012
  }
1766
2013
 
1767
2014
  template <class InsertProxy>
1768
- iterator priv_insert_front_aux_impl(size_type n, InsertProxy interf)
2015
+ iterator priv_insert_front_aux_impl(size_type n, InsertProxy proxy)
1769
2016
  {
1770
2017
  if(!this->members_.m_map){
1771
2018
  this->priv_initialize_map(0);
1772
2019
  }
1773
2020
 
1774
2021
  iterator new_start = this->priv_reserve_elements_at_front(n);
1775
- interf.uninitialized_copy_n_and_update(new_start, n);
2022
+ proxy.uninitialized_copy_n_and_update(this->alloc(), new_start, n);
1776
2023
  this->members_.m_start = new_start;
1777
2024
  return new_start;
1778
2025
  }
@@ -1787,9 +2034,9 @@ class deque : protected deque_base<T, Allocator>
1787
2034
  // but none of the deque's elements have yet been constructed.
1788
2035
  void priv_fill_initialize(const value_type& value)
1789
2036
  {
1790
- index_pointer cur;
2037
+ index_pointer cur = this->members_.m_start.m_node;
1791
2038
  BOOST_TRY {
1792
- for (cur = this->members_.m_start.m_node; cur < this->members_.m_finish.m_node; ++cur){
2039
+ for ( ; cur < this->members_.m_finish.m_node; ++cur){
1793
2040
  boost::container::uninitialized_fill_alloc
1794
2041
  (this->alloc(), *cur, *cur + this->s_buffer_size(), value);
1795
2042
  }
@@ -1804,7 +2051,7 @@ class deque : protected deque_base<T, Allocator>
1804
2051
  }
1805
2052
 
1806
2053
  template <class InIt>
1807
- void priv_range_initialize(InIt first, InIt last, std::input_iterator_tag)
2054
+ void priv_range_initialize(InIt first, InIt last, typename iterator_enable_if_tag<InIt, std::input_iterator_tag>::type* =0)
1808
2055
  {
1809
2056
  this->priv_initialize_map(0);
1810
2057
  BOOST_TRY {
@@ -1819,19 +2066,17 @@ class deque : protected deque_base<T, Allocator>
1819
2066
  }
1820
2067
 
1821
2068
  template <class FwdIt>
1822
- void priv_range_initialize(FwdIt first, FwdIt last, std::forward_iterator_tag)
2069
+ void priv_range_initialize(FwdIt first, FwdIt last, typename iterator_disable_if_tag<FwdIt, std::input_iterator_tag>::type* =0)
1823
2070
  {
1824
2071
  size_type n = 0;
1825
- n = std::distance(first, last);
2072
+ n = boost::container::iterator_distance(first, last);
1826
2073
  this->priv_initialize_map(n);
1827
2074
 
1828
- index_pointer cur_node;
2075
+ index_pointer cur_node = this->members_.m_start.m_node;
1829
2076
  BOOST_TRY {
1830
- for (cur_node = this->members_.m_start.m_node;
1831
- cur_node < this->members_.m_finish.m_node;
1832
- ++cur_node) {
2077
+ for (; cur_node < this->members_.m_finish.m_node; ++cur_node) {
1833
2078
  FwdIt mid = first;
1834
- std::advance(mid, this->s_buffer_size());
2079
+ boost::container::iterator_advance(mid, this->s_buffer_size());
1835
2080
  ::boost::container::uninitialized_copy_alloc(this->alloc(), first, mid, *cur_node);
1836
2081
  first = mid;
1837
2082
  }
@@ -1845,7 +2090,7 @@ class deque : protected deque_base<T, Allocator>
1845
2090
  }
1846
2091
 
1847
2092
  // Called only if this->members_.m_finish.m_cur == this->members_.m_finish.m_first.
1848
- void priv_pop_back_aux()
2093
+ void priv_pop_back_aux() BOOST_NOEXCEPT_OR_NOTHROW
1849
2094
  {
1850
2095
  this->priv_deallocate_node(this->members_.m_finish.m_first);
1851
2096
  this->members_.m_finish.priv_set_node(this->members_.m_finish.m_node - 1);
@@ -1860,7 +2105,7 @@ class deque : protected deque_base<T, Allocator>
1860
2105
  // if the deque has at least one element (a precondition for this member
1861
2106
  // function), and if this->members_.m_start.m_cur == this->members_.m_start.m_last, then the deque
1862
2107
  // must have at least two nodes.
1863
- void priv_pop_front_aux()
2108
+ void priv_pop_front_aux() BOOST_NOEXCEPT_OR_NOTHROW
1864
2109
  {
1865
2110
  allocator_traits_type::destroy
1866
2111
  ( this->alloc()
@@ -1869,7 +2114,7 @@ class deque : protected deque_base<T, Allocator>
1869
2114
  this->priv_deallocate_node(this->members_.m_start.m_first);
1870
2115
  this->members_.m_start.priv_set_node(this->members_.m_start.m_node + 1);
1871
2116
  this->members_.m_start.m_cur = this->members_.m_start.m_first;
1872
- }
2117
+ }
1873
2118
 
1874
2119
  iterator priv_reserve_elements_at_front(size_type n)
1875
2120
  {
@@ -1889,7 +2134,7 @@ class deque : protected deque_base<T, Allocator>
1889
2134
  }
1890
2135
  BOOST_CATCH(...) {
1891
2136
  for (size_type j = 1; j < i; ++j)
1892
- this->priv_deallocate_node(*(this->members_.m_start.m_node - j));
2137
+ this->priv_deallocate_node(*(this->members_.m_start.m_node - j));
1893
2138
  BOOST_RETHROW
1894
2139
  }
1895
2140
  BOOST_CATCH_END
@@ -1907,14 +2152,14 @@ class deque : protected deque_base<T, Allocator>
1907
2152
  if (new_nodes + 1 > s){
1908
2153
  this->priv_reallocate_map(new_nodes, false);
1909
2154
  }
1910
- size_type i;
2155
+ size_type i = 1;
1911
2156
  BOOST_TRY {
1912
- for (i = 1; i <= new_nodes; ++i)
2157
+ for (; i <= new_nodes; ++i)
1913
2158
  *(this->members_.m_finish.m_node + i) = this->priv_allocate_node();
1914
2159
  }
1915
2160
  BOOST_CATCH(...) {
1916
2161
  for (size_type j = 1; j < i; ++j)
1917
- this->priv_deallocate_node(*(this->members_.m_finish.m_node + j));
2162
+ this->priv_deallocate_node(*(this->members_.m_finish.m_node + j));
1918
2163
  BOOST_RETHROW
1919
2164
  }
1920
2165
  BOOST_CATCH_END
@@ -1932,9 +2177,9 @@ class deque : protected deque_base<T, Allocator>
1932
2177
  new_nstart = this->members_.m_map + (this->members_.m_map_size - new_num_nodes) / 2
1933
2178
  + (add_at_front ? nodes_to_add : 0);
1934
2179
  if (new_nstart < this->members_.m_start.m_node)
1935
- boost::move(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart);
2180
+ boost::container::move(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart);
1936
2181
  else
1937
- boost::move_backward
2182
+ boost::container::move_backward
1938
2183
  (this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart + old_num_nodes);
1939
2184
  }
1940
2185
  else {
@@ -1944,7 +2189,7 @@ class deque : protected deque_base<T, Allocator>
1944
2189
  index_pointer new_map = this->priv_allocate_map(new_map_size);
1945
2190
  new_nstart = new_map + (new_map_size - new_num_nodes) / 2
1946
2191
  + (add_at_front ? nodes_to_add : 0);
1947
- boost::move(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart);
2192
+ boost::container::move(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1, new_nstart);
1948
2193
  this->priv_deallocate_map(this->members_.m_map, this->members_.m_map_size);
1949
2194
 
1950
2195
  this->members_.m_map = new_map;
@@ -1954,45 +2199,12 @@ class deque : protected deque_base<T, Allocator>
1954
2199
  this->members_.m_start.priv_set_node(new_nstart);
1955
2200
  this->members_.m_finish.priv_set_node(new_nstart + old_num_nodes - 1);
1956
2201
  }
1957
- /// @endcond
2202
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1958
2203
  };
1959
2204
 
1960
- // Nonmember functions.
1961
- template <class T, class Allocator>
1962
- inline bool operator==(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
1963
- {
1964
- return x.size() == y.size() && equal(x.begin(), x.end(), y.begin());
1965
- }
1966
-
1967
- template <class T, class Allocator>
1968
- inline bool operator<(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
1969
- {
1970
- return lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
1971
- }
1972
-
1973
- template <class T, class Allocator>
1974
- inline bool operator!=(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
1975
- { return !(x == y); }
1976
-
1977
- template <class T, class Allocator>
1978
- inline bool operator>(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
1979
- { return y < x; }
1980
-
1981
- template <class T, class Allocator>
1982
- inline bool operator>=(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
1983
- { return !(x < y); }
1984
-
1985
- template <class T, class Allocator>
1986
- inline bool operator<=(const deque<T, Allocator>& x, const deque<T, Allocator>& y)
1987
- { return !(y < x); }
1988
-
1989
- template <class T, class Allocator>
1990
- inline void swap(deque<T, Allocator>& x, deque<T, Allocator>& y)
1991
- { x.swap(y); }
1992
-
1993
2205
  }}
1994
2206
 
1995
- /// @cond
2207
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
1996
2208
 
1997
2209
  namespace boost {
1998
2210
 
@@ -2000,12 +2212,15 @@ namespace boost {
2000
2212
  //!specialization for optimizations
2001
2213
  template <class T, class Allocator>
2002
2214
  struct has_trivial_destructor_after_move<boost::container::deque<T, Allocator> >
2003
- : public ::boost::has_trivial_destructor_after_move<Allocator>
2004
- {};
2215
+ {
2216
+ typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
2217
+ static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
2218
+ ::boost::has_trivial_destructor_after_move<pointer>::value;
2219
+ };
2005
2220
 
2006
2221
  }
2007
2222
 
2008
- /// @endcond
2223
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
2009
2224
 
2010
2225
  #include <boost/container/detail/config_end.hpp>
2011
2226