passenger 6.0.1 → 6.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +145 -18
- data/CONTRIBUTORS +6 -0
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-status +15 -0
- data/build/misc.rb +3 -1
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +56 -3
- data/dev/copy_boost_headers +1 -0
- data/package.json +1 -1
- data/passenger.gemspec +9 -1
- data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
- data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
- data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
- data/resources/templates/standalone/http.erb +2 -0
- data/resources/templates/standalone/server.erb +1 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -0
- data/src/agent/Core/ApplicationPool/Options.h +10 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
- data/src/agent/Core/Config.h +14 -1
- data/src/agent/Core/Controller.h +1 -0
- data/src/agent/Core/Controller/Config.h +5 -1
- data/src/agent/Core/Controller/ForwardResponse.cpp +13 -0
- data/src/agent/Core/Controller/InitRequest.cpp +3 -0
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -0
- data/src/agent/Core/CoreMain.cpp +2 -1
- data/src/agent/Core/OptionParser.h +3 -0
- data/src/agent/Core/SpawningKit/Context.h +1 -0
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/TempDirToucher/TempDirToucherMain.cpp +2 -0
- data/src/agent/Watchdog/Config.h +15 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +7 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +10 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +10 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +30 -0
- data/src/apache2_module/Hooks.cpp +6 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +20 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +24 -0
- data/src/cxx_supportlib/Constants.h +2 -1
- data/src/cxx_supportlib/LoggingKit/Config.h +2 -0
- data/src/cxx_supportlib/LoggingKit/Implementation.cpp +15 -9
- data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
- data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +20 -19
- data/src/cxx_supportlib/WebSocketCommandReverseServer.h +11 -7
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +46 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +45 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +38 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +50 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +13 -12
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +83 -74
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -33
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +368 -52
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +262 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +22 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +833 -459
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +24 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +61 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +33 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +132 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +28 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +167 -115
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +167 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +389 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +262 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +52 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +364 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +286 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +56 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +43 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +100 -31
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +126 -69
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +75 -51
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +101 -130
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +62 -58
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +29 -29
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +44 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +39 -39
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +33 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +39 -39
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +61 -61
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +66 -66
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +54 -54
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +18 -13
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +29 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +23 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +211 -101
- data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +513 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4106 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +14 -6
- data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +55 -37
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +60 -115
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +141 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_posix.hpp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +775 -588
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +24 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +8 -53
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +73 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +14 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +501 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +557 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +16 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +104 -63
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +201 -201
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +301 -301
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +401 -401
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +101 -101
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +26 -6
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/helper-scripts/prespawn +1 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +40 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +26 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +48 -0
- data/src/nginx_module/Configuration.c +6 -2
- data/src/nginx_module/ContentHandler.c +5 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +15 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +28 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +6 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +11 -0
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +11 -0
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +23 -0
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +8 -0
- data/src/nginx_module/ngx_http_passenger_module.c +2 -0
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +0 -0
- data/src/ruby_native_extension/extconf.rb +7 -0
- data/src/ruby_supportlib/phusion_passenger.rb +7 -7
- data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +8 -0
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +23 -0
- data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -3
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +37 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +11 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +6 -0
- data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +15 -11
- metadata +42 -8
- data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
- data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
@@ -122,42 +122,42 @@ class vec_iterator
|
|
122
122
|
|
123
123
|
//Pointer like operators
|
124
124
|
BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
|
125
|
-
{ return *m_ptr; }
|
125
|
+
{ BOOST_ASSERT(!!m_ptr); return *m_ptr; }
|
126
126
|
|
127
127
|
BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
|
128
|
-
{ return
|
128
|
+
{ return m_ptr; }
|
129
129
|
|
130
130
|
BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
|
131
|
-
{ return m_ptr[off];
|
131
|
+
{ BOOST_ASSERT(!!m_ptr); return m_ptr[off]; }
|
132
132
|
|
133
133
|
//Increment / Decrement
|
134
134
|
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
|
135
|
-
{ ++m_ptr; return *this; }
|
135
|
+
{ BOOST_ASSERT(!!m_ptr); ++m_ptr; return *this; }
|
136
136
|
|
137
137
|
BOOST_CONTAINER_FORCEINLINE vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
|
138
|
-
{ return vec_iterator(m_ptr++); }
|
138
|
+
{ BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr++); }
|
139
139
|
|
140
140
|
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
|
141
|
-
{ --m_ptr; return *this; }
|
141
|
+
{ BOOST_ASSERT(!!m_ptr); --m_ptr; return *this; }
|
142
142
|
|
143
143
|
BOOST_CONTAINER_FORCEINLINE vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
|
144
|
-
{ return vec_iterator(m_ptr--); }
|
144
|
+
{ BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr--); }
|
145
145
|
|
146
146
|
//Arithmetic
|
147
147
|
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
148
|
-
{ m_ptr += off; return *this; }
|
148
|
+
{ BOOST_ASSERT(m_ptr || !off); m_ptr += off; return *this; }
|
149
149
|
|
150
150
|
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
151
|
-
{ m_ptr -= off; return *this; }
|
151
|
+
{ BOOST_ASSERT(m_ptr || !off); m_ptr -= off; return *this; }
|
152
152
|
|
153
153
|
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
154
|
-
{ return vec_iterator(x.m_ptr+off); }
|
154
|
+
{ BOOST_ASSERT(x.m_ptr || !off); return vec_iterator(x.m_ptr+off); }
|
155
155
|
|
156
156
|
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
|
157
|
-
{ right.m_ptr += off; return right; }
|
157
|
+
{ BOOST_ASSERT(right.m_ptr || !off); right.m_ptr += off; return right; }
|
158
158
|
|
159
159
|
BOOST_CONTAINER_FORCEINLINE friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
160
|
-
{ left.m_ptr -= off; return left; }
|
160
|
+
{ BOOST_ASSERT(left.m_ptr || !off); left.m_ptr -= off; return left; }
|
161
161
|
|
162
162
|
BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
|
163
163
|
{ return left.m_ptr - right.m_ptr; }
|
@@ -931,6 +931,12 @@ class vector
|
|
931
931
|
//! throws or T's constructor taking a dereferenced InIt throws.
|
932
932
|
//!
|
933
933
|
//! <b>Complexity</b>: Linear to the range [first, last).
|
934
|
+
// template <class InIt>
|
935
|
+
// vector(InIt first, InIt last
|
936
|
+
// BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
|
937
|
+
// < dtl::is_convertible<InIt BOOST_MOVE_I size_type>::value
|
938
|
+
// BOOST_MOVE_I dtl::nat >::type * = 0)
|
939
|
+
// ) -> vector<typename iterator_traits<InIt>::value_type, new_allocator<typename iterator_traits<InIt>::value_type>>;
|
934
940
|
template <class InIt>
|
935
941
|
vector(InIt first, InIt last
|
936
942
|
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
|
@@ -947,6 +953,12 @@ class vector
|
|
947
953
|
//! throws or T's constructor taking a dereferenced InIt throws.
|
948
954
|
//!
|
949
955
|
//! <b>Complexity</b>: Linear to the range [first, last).
|
956
|
+
// template <class InIt>
|
957
|
+
// vector(InIt first, InIt last, const allocator_type& a
|
958
|
+
// BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
|
959
|
+
// < dtl::is_convertible<InIt BOOST_MOVE_I size_type>::value
|
960
|
+
// BOOST_MOVE_I dtl::nat >::type * = 0)
|
961
|
+
// ) -> vector<typename iterator_traits<InIt>::value_type, new_allocator<typename iterator_traits<InIt>::value_type>>;
|
950
962
|
template <class InIt>
|
951
963
|
vector(InIt first, InIt last, const allocator_type& a
|
952
964
|
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_c
|
@@ -1119,7 +1131,6 @@ class vector
|
|
1119
1131
|
BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
|
1120
1132
|
|| allocator_traits_type::is_always_equal::value)
|
1121
1133
|
{
|
1122
|
-
BOOST_ASSERT(&x != this);
|
1123
1134
|
this->priv_move_assign(boost::move(x));
|
1124
1135
|
return *this;
|
1125
1136
|
}
|
@@ -1180,6 +1191,7 @@ class vector
|
|
1180
1191
|
//! <b>Complexity</b>: Linear to n.
|
1181
1192
|
template <class InIt>
|
1182
1193
|
void assign(InIt first, InIt last
|
1194
|
+
//Input iterators or version 0 allocator
|
1183
1195
|
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_or
|
1184
1196
|
< void
|
1185
1197
|
BOOST_MOVE_I dtl::is_convertible<InIt BOOST_MOVE_I size_type>
|
@@ -1229,6 +1241,7 @@ class vector
|
|
1229
1241
|
//! <b>Complexity</b>: Linear to n.
|
1230
1242
|
template <class FwdIt>
|
1231
1243
|
void assign(FwdIt first, FwdIt last
|
1244
|
+
//Forward iterators and version > 0 allocator
|
1232
1245
|
BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I typename dtl::disable_if_or
|
1233
1246
|
< void
|
1234
1247
|
BOOST_MOVE_I dtl::is_same<alloc_version BOOST_MOVE_I version_0>
|
@@ -1268,21 +1281,9 @@ class vector
|
|
1268
1281
|
//Forward expansion, use assignment + back deletion/construction that comes later
|
1269
1282
|
}
|
1270
1283
|
}
|
1271
|
-
//Overwrite all elements we can from [first, last)
|
1272
|
-
iterator cur = this->begin();
|
1273
|
-
const iterator end_it = this->end();
|
1274
|
-
for ( ; first != last && cur != end_it; ++cur, ++first){
|
1275
|
-
*cur = *first;
|
1276
|
-
}
|
1277
1284
|
|
1278
|
-
|
1279
|
-
|
1280
|
-
this->priv_destroy_last_n(this->size() - input_sz);
|
1281
|
-
}
|
1282
|
-
else{
|
1283
|
-
//Uninitialized construct at end the remaining range
|
1284
|
-
this->priv_uninitialized_construct_at_end(first, last);
|
1285
|
-
}
|
1285
|
+
boost::container::copy_assign_range_alloc_n(this->m_holder.alloc(), first, input_sz, this->priv_raw_begin(), this->size());
|
1286
|
+
this->m_holder.m_size = input_sz;
|
1286
1287
|
}
|
1287
1288
|
|
1288
1289
|
//! <b>Effects</b>: Assigns the n copies of val to *this.
|
@@ -1350,7 +1351,11 @@ class vector
|
|
1350
1351
|
//!
|
1351
1352
|
//! <b>Complexity</b>: Constant.
|
1352
1353
|
BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
|
1353
|
-
{
|
1354
|
+
{
|
1355
|
+
pointer const bg = this->m_holder.start();
|
1356
|
+
size_type const sz = this->m_holder.m_size;
|
1357
|
+
return iterator(BOOST_LIKELY(sz) ? bg + sz : bg); //Avoid UB on null-pointer arithmetic
|
1358
|
+
}
|
1354
1359
|
|
1355
1360
|
//! <b>Effects</b>: Returns a const_iterator to the end of the vector.
|
1356
1361
|
//!
|
@@ -1410,7 +1415,12 @@ class vector
|
|
1410
1415
|
//!
|
1411
1416
|
//! <b>Complexity</b>: Constant.
|
1412
1417
|
BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
|
1413
|
-
{
|
1418
|
+
{
|
1419
|
+
pointer const bg = this->m_holder.start();
|
1420
|
+
size_type const sz = this->m_holder.m_size;
|
1421
|
+
return const_iterator(BOOST_LIKELY(sz) ? bg + sz : bg); //Avoid UB on null-pointer arithmetic
|
1422
|
+
}
|
1423
|
+
//{ return const_iterator(this->m_holder.start() + this->m_holder.m_size); }
|
1414
1424
|
|
1415
1425
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
1416
1426
|
//! of the reversed vector.
|
@@ -2035,9 +2045,10 @@ class vector
|
|
2035
2045
|
//! plus linear to the elements between pos and the last element.
|
2036
2046
|
iterator erase(const_iterator first, const_iterator last)
|
2037
2047
|
{
|
2038
|
-
BOOST_ASSERT(first == last ||
|
2039
|
-
(first < last && this->priv_in_range(first) && this->priv_in_range_or_end(last)));
|
2040
2048
|
if (first != last){
|
2049
|
+
BOOST_ASSERT(this->priv_in_range(first));
|
2050
|
+
BOOST_ASSERT(this->priv_in_range_or_end(last));
|
2051
|
+
BOOST_ASSERT(first < last);
|
2041
2052
|
T* const old_end_ptr = this->priv_raw_end();
|
2042
2053
|
T* const first_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(first));
|
2043
2054
|
T* const last_ptr = boost::movelib::to_raw_pointer(vector_iterator_get_ptr(last));
|
@@ -2180,7 +2191,7 @@ class vector
|
|
2180
2191
|
this->priv_merge_in_new_buffer(first, n, comp, alloc_version());
|
2181
2192
|
}
|
2182
2193
|
else{
|
2183
|
-
|
2194
|
+
this->insert(this->cend(), first, last);
|
2184
2195
|
T *const raw_beg = this->priv_raw_begin();
|
2185
2196
|
T *const raw_end = this->priv_raw_end();
|
2186
2197
|
T *const raw_pos = raw_beg + s;
|
@@ -2195,11 +2206,11 @@ class vector
|
|
2195
2206
|
template<class InputIt, class Compare>
|
2196
2207
|
BOOST_CONTAINER_FORCEINLINE void merge_unique(InputIt first, InputIt last, Compare comp)
|
2197
2208
|
{
|
2198
|
-
size_type const
|
2209
|
+
size_type const old_size = this->size();
|
2199
2210
|
this->priv_set_difference_back(first, last, comp);
|
2200
2211
|
T *const raw_beg = this->priv_raw_begin();
|
2201
2212
|
T *const raw_end = this->priv_raw_end();
|
2202
|
-
T *raw_pos = raw_beg +
|
2213
|
+
T *raw_pos = raw_beg + old_size;
|
2203
2214
|
boost::movelib::adaptive_merge(raw_beg, raw_pos, raw_end, comp, raw_end, this->capacity() - this->size());
|
2204
2215
|
}
|
2205
2216
|
|
@@ -2276,14 +2287,14 @@ class vector
|
|
2276
2287
|
|
2277
2288
|
if (comp(*first1, *first2)) {
|
2278
2289
|
this->emplace_back(*first1);
|
2279
|
-
//Reallocation happened, update range
|
2280
2290
|
T * const raw_begin = this->priv_raw_begin();
|
2281
|
-
if(old_first2 != raw_begin)
|
2291
|
+
if(old_first2 != raw_begin)
|
2292
|
+
{
|
2293
|
+
//Reallocation happened, update range
|
2282
2294
|
first2 = raw_begin + (first2 - old_first2);
|
2283
|
-
last2 =
|
2295
|
+
last2 = raw_begin + (last2 - old_first2);
|
2284
2296
|
old_first2 = raw_begin;
|
2285
2297
|
}
|
2286
|
-
|
2287
2298
|
++first1;
|
2288
2299
|
}
|
2289
2300
|
else {
|
@@ -2394,26 +2405,21 @@ class vector
|
|
2394
2405
|
, dtl::is_different<OtherAllocator, allocator_type>
|
2395
2406
|
>::type * = 0)
|
2396
2407
|
{
|
2397
|
-
//for move assignment, no aliasing (&x != this) is
|
2398
|
-
|
2408
|
+
//for move assignment, no aliasing (&x != this) is assumed.
|
2409
|
+
//x.size() == 0 is allowed for buggy std libraries.
|
2410
|
+
BOOST_ASSERT(this != &x || x.size() == 0);
|
2399
2411
|
allocator_type &this_alloc = this->m_holder.alloc();
|
2400
2412
|
allocator_type &x_alloc = x.m_holder.alloc();
|
2401
2413
|
const bool propagate_alloc = allocator_traits_type::propagate_on_container_move_assignment::value;
|
2402
2414
|
|
2403
2415
|
const bool is_propagable_from_x = is_propagable_from(x_alloc, x.m_holder.start(), this_alloc, propagate_alloc);
|
2404
|
-
const bool is_propagable_from_t = is_propagable_from(this_alloc, m_holder.start(), x_alloc, propagate_alloc);
|
2405
|
-
const bool are_both_propagable = is_propagable_from_x && is_propagable_from_t;
|
2406
2416
|
|
2407
2417
|
//Resources can be transferred if both allocators are
|
2408
2418
|
//going to be equal after this function (either propagated or already equal)
|
2409
|
-
if(
|
2410
|
-
//Destroy objects but retain memory in case x reuses it in the future
|
2419
|
+
if(is_propagable_from_x){
|
2411
2420
|
this->clear();
|
2412
|
-
this->m_holder.
|
2413
|
-
|
2414
|
-
else if(is_propagable_from_x){
|
2415
|
-
this->clear();
|
2416
|
-
this->m_holder.deallocate(this->m_holder.m_start, this->m_holder.m_capacity);
|
2421
|
+
if(BOOST_LIKELY(!!this->m_holder.m_start))
|
2422
|
+
this->m_holder.deallocate(this->m_holder.m_start, this->m_holder.m_capacity);
|
2417
2423
|
this->m_holder.steal_resources(x.m_holder);
|
2418
2424
|
}
|
2419
2425
|
//Else do a one by one move
|
@@ -2477,6 +2483,9 @@ class vector
|
|
2477
2483
|
this->m_holder.swap_resources(x.m_holder);
|
2478
2484
|
}
|
2479
2485
|
else{
|
2486
|
+
if (BOOST_UNLIKELY(&x == this))
|
2487
|
+
return;
|
2488
|
+
|
2480
2489
|
//Else swap element by element...
|
2481
2490
|
bool const t_smaller = this->size() < x.size();
|
2482
2491
|
vector &sml = t_smaller ? *this : x;
|
@@ -2652,7 +2661,8 @@ class vector
|
|
2652
2661
|
if(cp){
|
2653
2662
|
const size_type sz = this->size();
|
2654
2663
|
if(!sz){
|
2655
|
-
|
2664
|
+
if(BOOST_LIKELY(!!this->m_holder.m_start))
|
2665
|
+
this->m_holder.deallocate(this->m_holder.m_start, cp);
|
2656
2666
|
this->m_holder.m_start = pointer();
|
2657
2667
|
this->m_holder.m_capacity = 0;
|
2658
2668
|
}
|
@@ -2678,7 +2688,8 @@ class vector
|
|
2678
2688
|
if(cp){
|
2679
2689
|
const size_type sz = this->size();
|
2680
2690
|
if(!sz){
|
2681
|
-
|
2691
|
+
if(BOOST_LIKELY(!!this->m_holder.m_start))
|
2692
|
+
this->m_holder.deallocate(this->m_holder.m_start, cp);
|
2682
2693
|
this->m_holder.m_start = pointer();
|
2683
2694
|
this->m_holder.m_capacity = 0;
|
2684
2695
|
}
|
@@ -3352,6 +3363,19 @@ class vector
|
|
3352
3363
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
3353
3364
|
};
|
3354
3365
|
|
3366
|
+
#ifndef BOOST_CONTAINER_NO_CXX17_CTAD
|
3367
|
+
|
3368
|
+
template <typename InputIterator>
|
3369
|
+
vector(InputIterator, InputIterator) ->
|
3370
|
+
vector<typename iterator_traits<InputIterator>::value_type>;
|
3371
|
+
|
3372
|
+
template <typename InputIterator, typename Allocator>
|
3373
|
+
vector(InputIterator, InputIterator, Allocator const&) ->
|
3374
|
+
vector<typename iterator_traits<InputIterator>::value_type, Allocator>;
|
3375
|
+
|
3376
|
+
#endif
|
3377
|
+
|
3378
|
+
|
3355
3379
|
}} //namespace boost::container
|
3356
3380
|
|
3357
3381
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
@@ -0,0 +1,136 @@
|
|
1
|
+
/*
|
2
|
+
Copyright 2018 Glen Joseph Fernandes
|
3
|
+
(glenjofe@gmail.com)
|
4
|
+
|
5
|
+
Distributed under the Boost Software License, Version 1.0.
|
6
|
+
(http://www.boost.org/LICENSE_1_0.txt)
|
7
|
+
*/
|
8
|
+
#ifndef BOOST_CORE_EMPTY_VALUE_HPP
|
9
|
+
#define BOOST_CORE_EMPTY_VALUE_HPP
|
10
|
+
|
11
|
+
#include <boost/config.hpp>
|
12
|
+
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
13
|
+
#include <utility>
|
14
|
+
#endif
|
15
|
+
|
16
|
+
#if defined(BOOST_GCC_VERSION) && (BOOST_GCC_VERSION >= 40700)
|
17
|
+
#define BOOST_DETAIL_EMPTY_VALUE_BASE
|
18
|
+
#elif defined(BOOST_INTEL) && defined(_MSC_VER) && (_MSC_VER >= 1800)
|
19
|
+
#define BOOST_DETAIL_EMPTY_VALUE_BASE
|
20
|
+
#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1800)
|
21
|
+
#define BOOST_DETAIL_EMPTY_VALUE_BASE
|
22
|
+
#elif defined(BOOST_CLANG) && !defined(__CUDACC__)
|
23
|
+
#if __has_feature(is_empty) && __has_feature(is_final)
|
24
|
+
#define BOOST_DETAIL_EMPTY_VALUE_BASE
|
25
|
+
#endif
|
26
|
+
#endif
|
27
|
+
|
28
|
+
namespace boost {
|
29
|
+
|
30
|
+
template<class T>
|
31
|
+
struct use_empty_value_base {
|
32
|
+
enum {
|
33
|
+
#if defined(BOOST_DETAIL_EMPTY_VALUE_BASE)
|
34
|
+
value = __is_empty(T) && !__is_final(T)
|
35
|
+
#else
|
36
|
+
value = false
|
37
|
+
#endif
|
38
|
+
};
|
39
|
+
};
|
40
|
+
|
41
|
+
struct empty_init_t { };
|
42
|
+
|
43
|
+
namespace empty_ {
|
44
|
+
|
45
|
+
template<class T, unsigned N = 0,
|
46
|
+
bool E = boost::use_empty_value_base<T>::value>
|
47
|
+
class empty_value {
|
48
|
+
public:
|
49
|
+
typedef T type;
|
50
|
+
|
51
|
+
#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
|
52
|
+
empty_value() = default;
|
53
|
+
#else
|
54
|
+
empty_value() { }
|
55
|
+
#endif
|
56
|
+
|
57
|
+
empty_value(boost::empty_init_t)
|
58
|
+
: value_() { }
|
59
|
+
|
60
|
+
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
61
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
62
|
+
template<class... Args>
|
63
|
+
explicit empty_value(boost::empty_init_t, Args&&... args)
|
64
|
+
: value_(std::forward<Args>(args)...) { }
|
65
|
+
#else
|
66
|
+
template<class U>
|
67
|
+
empty_value(boost::empty_init_t, U&& value)
|
68
|
+
: value_(std::forward<U>(value)) { }
|
69
|
+
#endif
|
70
|
+
#else
|
71
|
+
template<class U>
|
72
|
+
empty_value(boost::empty_init_t, const U& value)
|
73
|
+
: value_(value) { }
|
74
|
+
#endif
|
75
|
+
|
76
|
+
const T& get() const BOOST_NOEXCEPT {
|
77
|
+
return value_;
|
78
|
+
}
|
79
|
+
|
80
|
+
T& get() BOOST_NOEXCEPT {
|
81
|
+
return value_;
|
82
|
+
}
|
83
|
+
|
84
|
+
private:
|
85
|
+
T value_;
|
86
|
+
};
|
87
|
+
|
88
|
+
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
89
|
+
template<class T, unsigned N>
|
90
|
+
class empty_value<T, N, true>
|
91
|
+
: T {
|
92
|
+
public:
|
93
|
+
typedef T type;
|
94
|
+
|
95
|
+
#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
|
96
|
+
empty_value() = default;
|
97
|
+
#else
|
98
|
+
empty_value() { }
|
99
|
+
#endif
|
100
|
+
|
101
|
+
empty_value(boost::empty_init_t)
|
102
|
+
: T() { }
|
103
|
+
|
104
|
+
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
105
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
106
|
+
template<class... Args>
|
107
|
+
explicit empty_value(boost::empty_init_t, Args&&... args)
|
108
|
+
: T(std::forward<Args>(args)...) { }
|
109
|
+
#else
|
110
|
+
template<class U>
|
111
|
+
empty_value(boost::empty_init_t, U&& value)
|
112
|
+
: T(std::forward<U>(value)) { }
|
113
|
+
#endif
|
114
|
+
#else
|
115
|
+
template<class U>
|
116
|
+
empty_value(boost::empty_init_t, const U& value)
|
117
|
+
: T(value) { }
|
118
|
+
#endif
|
119
|
+
|
120
|
+
const T& get() const BOOST_NOEXCEPT {
|
121
|
+
return *this;
|
122
|
+
}
|
123
|
+
|
124
|
+
T& get() BOOST_NOEXCEPT {
|
125
|
+
return *this;
|
126
|
+
}
|
127
|
+
};
|
128
|
+
#endif
|
129
|
+
|
130
|
+
} /* empty_ */
|
131
|
+
|
132
|
+
using empty_::empty_value;
|
133
|
+
|
134
|
+
} /* boost */
|
135
|
+
|
136
|
+
#endif
|
@@ -0,0 +1,49 @@
|
|
1
|
+
/*
|
2
|
+
Copyright 2018 Glen Joseph Fernandes
|
3
|
+
(glenjofe@gmail.com)
|
4
|
+
|
5
|
+
Distributed under the Boost Software License, Version 1.0.
|
6
|
+
(http://www.boost.org/LICENSE_1_0.txt)
|
7
|
+
*/
|
8
|
+
#ifndef BOOST_CORE_EXCHANGE_HPP
|
9
|
+
#define BOOST_CORE_EXCHANGE_HPP
|
10
|
+
|
11
|
+
#include <boost/config.hpp>
|
12
|
+
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
13
|
+
#include <boost/config/workaround.hpp>
|
14
|
+
#include <utility>
|
15
|
+
#endif
|
16
|
+
|
17
|
+
namespace boost {
|
18
|
+
|
19
|
+
#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
20
|
+
template<class T, class U>
|
21
|
+
inline T exchange(T& t, const U& u)
|
22
|
+
{
|
23
|
+
T v = t;
|
24
|
+
t = u;
|
25
|
+
return v;
|
26
|
+
}
|
27
|
+
#else
|
28
|
+
#if BOOST_WORKAROUND(BOOST_MSVC, < 1800)
|
29
|
+
template<class T, class U>
|
30
|
+
inline T exchange(T& t, U&& u)
|
31
|
+
{
|
32
|
+
T v = std::move(t);
|
33
|
+
t = std::forward<U>(u);
|
34
|
+
return v;
|
35
|
+
}
|
36
|
+
#else
|
37
|
+
template<class T, class U = T>
|
38
|
+
BOOST_CXX14_CONSTEXPR inline T exchange(T& t, U&& u)
|
39
|
+
{
|
40
|
+
T v = std::move(t);
|
41
|
+
t = std::forward<U>(u);
|
42
|
+
return v;
|
43
|
+
}
|
44
|
+
#endif
|
45
|
+
#endif
|
46
|
+
|
47
|
+
} /* boost */
|
48
|
+
|
49
|
+
#endif
|