passenger 6.0.23 → 6.0.24
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.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG +26 -1
- data/Rakefile +7 -3
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +17 -2
- data/build/apache2.rb +1 -1
- data/build/basics.rb +10 -4
- data/build/cxx_tests.rb +18 -7
- data/build/support/cxx_dependency_map.rb +40 -6
- data/build/test_basics.rb +4 -12
- data/package.json +1 -1
- data/passenger.gemspec +1 -1
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group.h +15 -5
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -1
- data/src/agent/Core/ApplicationPool/Pool.h +0 -2
- data/src/agent/Core/ApplicationPool/Process.h +22 -6
- data/src/agent/Core/ApplicationPool/Session.h +6 -1
- data/src/agent/Core/Config.h +7 -3
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
- data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
- data/src/agent/Core/SpawningKit/Spawner.h +4 -0
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
- data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
- data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
- data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -3
- data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
- data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
- data/src/cxx_supportlib/ServerKit/Server.h +0 -6
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
- data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
- data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +21 -8
@@ -95,9 +95,57 @@ private:
|
|
95
95
|
};
|
96
96
|
|
97
97
|
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
98
|
+
#if defined(BOOST_MSVC)
|
99
|
+
/*
|
100
|
+
This is a workaround to an MSVC bug when T is a nested class:
|
101
|
+
https://developercommunity.visualstudio.com/t/Compiler-bug:-Incorrect-C2247-and-C2248/10690025
|
102
|
+
*/
|
103
|
+
namespace detail {
|
104
|
+
|
105
|
+
template<class T>
|
106
|
+
class empty_value_base
|
107
|
+
: public T {
|
108
|
+
public:
|
109
|
+
#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
|
110
|
+
empty_value_base() = default;
|
111
|
+
#else
|
112
|
+
BOOST_CONSTEXPR empty_value_base() { }
|
113
|
+
#endif
|
114
|
+
|
115
|
+
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
116
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
117
|
+
template<class U, class... Args>
|
118
|
+
BOOST_CONSTEXPR empty_value_base(U&& value, Args&&... args)
|
119
|
+
: T(std::forward<U>(value), std::forward<Args>(args)...) { }
|
120
|
+
#else
|
121
|
+
template<class U>
|
122
|
+
BOOST_CONSTEXPR empty_value_base(U&& value)
|
123
|
+
: T(std::forward<U>(value)) { }
|
124
|
+
#endif
|
125
|
+
#else
|
126
|
+
template<class U>
|
127
|
+
BOOST_CONSTEXPR empty_value_base(const U& value)
|
128
|
+
: T(value) { }
|
129
|
+
|
130
|
+
template<class U>
|
131
|
+
BOOST_CONSTEXPR empty_value_base(U& value)
|
132
|
+
: T(value) { }
|
133
|
+
#endif
|
134
|
+
};
|
135
|
+
|
136
|
+
} /* detail */
|
137
|
+
#endif
|
138
|
+
|
98
139
|
template<class T, unsigned N>
|
99
140
|
class empty_value<T, N, true>
|
141
|
+
#if defined(BOOST_MSVC)
|
142
|
+
: detail::empty_value_base<T> {
|
143
|
+
typedef detail::empty_value_base<T> empty_base_;
|
144
|
+
#else
|
100
145
|
: T {
|
146
|
+
typedef T empty_base_;
|
147
|
+
#endif
|
148
|
+
|
101
149
|
public:
|
102
150
|
typedef T type;
|
103
151
|
|
@@ -108,26 +156,26 @@ public:
|
|
108
156
|
#endif
|
109
157
|
|
110
158
|
BOOST_CONSTEXPR empty_value(boost::empty_init_t)
|
111
|
-
:
|
159
|
+
: empty_base_() { }
|
112
160
|
|
113
161
|
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
114
162
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
115
163
|
template<class U, class... Args>
|
116
164
|
BOOST_CONSTEXPR empty_value(boost::empty_init_t, U&& value, Args&&... args)
|
117
|
-
:
|
165
|
+
: empty_base_(std::forward<U>(value), std::forward<Args>(args)...) { }
|
118
166
|
#else
|
119
167
|
template<class U>
|
120
168
|
BOOST_CONSTEXPR empty_value(boost::empty_init_t, U&& value)
|
121
|
-
:
|
169
|
+
: empty_base_(std::forward<U>(value)) { }
|
122
170
|
#endif
|
123
171
|
#else
|
124
172
|
template<class U>
|
125
173
|
BOOST_CONSTEXPR empty_value(boost::empty_init_t, const U& value)
|
126
|
-
:
|
174
|
+
: empty_base_(value) { }
|
127
175
|
|
128
176
|
template<class U>
|
129
177
|
BOOST_CONSTEXPR empty_value(boost::empty_init_t, U& value)
|
130
|
-
:
|
178
|
+
: empty_base_(value) { }
|
131
179
|
#endif
|
132
180
|
|
133
181
|
BOOST_CONSTEXPR const T& get() const BOOST_NOEXCEPT {
|
@@ -153,6 +153,7 @@ inline void no_throw_failed_impl(const char* expr, const char* what, const char*
|
|
153
153
|
#elif defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406
|
154
154
|
# pragma GCC diagnostic push
|
155
155
|
# pragma GCC diagnostic ignored "-Wsign-compare"
|
156
|
+
# pragma GCC diagnostic ignored "-Wsign-conversion"
|
156
157
|
#endif
|
157
158
|
|
158
159
|
// specialize test output for char pointers to avoid printing as cstring
|
@@ -0,0 +1,49 @@
|
|
1
|
+
/*
|
2
|
+
Copyright 2024 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_POINTER_IN_RANGE_HPP
|
9
|
+
#define BOOST_CORE_POINTER_IN_RANGE_HPP
|
10
|
+
|
11
|
+
#include <boost/config.hpp>
|
12
|
+
#include <functional>
|
13
|
+
|
14
|
+
#if !defined(BOOST_NO_CXX14_CONSTEXPR)
|
15
|
+
#if defined(BOOST_MSVC) && BOOST_MSVC >= 1925
|
16
|
+
#define BOOST_CORE_DETAIL_HAS_IS_CONSTEVAL
|
17
|
+
#elif defined(__has_builtin)
|
18
|
+
#if __has_builtin(__builtin_is_constant_evaluated)
|
19
|
+
#define BOOST_CORE_DETAIL_HAS_IS_CONSTEVAL
|
20
|
+
#endif
|
21
|
+
#endif
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#if !defined(BOOST_CORE_DETAIL_HAS_IS_CONSTEVAL)
|
25
|
+
#define BOOST_CORE_NO_CONSTEXPR_POINTER_IN_RANGE
|
26
|
+
#endif
|
27
|
+
|
28
|
+
namespace boost {
|
29
|
+
|
30
|
+
template<class T>
|
31
|
+
inline BOOST_CONSTEXPR bool
|
32
|
+
pointer_in_range(const T* p, const T* b, const T* e)
|
33
|
+
{
|
34
|
+
#if defined(BOOST_CORE_DETAIL_HAS_IS_CONSTEVAL)
|
35
|
+
if ( __builtin_is_constant_evaluated()) {
|
36
|
+
for (; b != e; ++b) {
|
37
|
+
if (b == p) {
|
38
|
+
return true;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
return false;
|
42
|
+
}
|
43
|
+
#endif
|
44
|
+
return std::less_equal<const T*>()(b, p) && std::less<const T*>()(p, e);
|
45
|
+
}
|
46
|
+
|
47
|
+
} /* boost */
|
48
|
+
|
49
|
+
#endif
|
@@ -351,8 +351,10 @@ private:
|
|
351
351
|
detail::span_store<T, E> s_;
|
352
352
|
};
|
353
353
|
|
354
|
+
#if defined(BOOST_NO_CXX17_INLINE_VARIABLES)
|
354
355
|
template<class T, std::size_t E>
|
355
356
|
constexpr std::size_t span<T, E>::extent;
|
357
|
+
#endif
|
356
358
|
|
357
359
|
#ifdef __cpp_deduction_guides
|
358
360
|
template<class I, class L>
|
@@ -103,7 +103,8 @@ inline std::string fix_typeid_name( char const* n )
|
|
103
103
|
}
|
104
104
|
|
105
105
|
// class types can be incomplete
|
106
|
-
|
106
|
+
// but also abstract (T[1] doesn't form)
|
107
|
+
template<class T> std::string typeid_name_impl( int T::*, T(*)[1] )
|
107
108
|
{
|
108
109
|
std::string r = fix_typeid_name( typeid(T[1]).name() );
|
109
110
|
return r.substr( 0, r.size() - 4 ); // remove ' [1]' suffix
|
@@ -116,7 +117,7 @@ template<class T> std::string typeid_name_impl( ... )
|
|
116
117
|
|
117
118
|
template<class T> std::string typeid_name()
|
118
119
|
{
|
119
|
-
return typeid_name_impl<T>( 0 );
|
120
|
+
return typeid_name_impl<T>( 0, 0 );
|
120
121
|
}
|
121
122
|
|
122
123
|
// template names
|
@@ -345,6 +346,8 @@ template<> struct tn_holder<boost::uint128_type>
|
|
345
346
|
|
346
347
|
#endif
|
347
348
|
|
349
|
+
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
350
|
+
|
348
351
|
template<> struct tn_holder<wchar_t>
|
349
352
|
{
|
350
353
|
static std::string type_name( std::string const& suffix )
|
@@ -353,6 +356,8 @@ template<> struct tn_holder<wchar_t>
|
|
353
356
|
}
|
354
357
|
};
|
355
358
|
|
359
|
+
#endif
|
360
|
+
|
356
361
|
#if !defined(BOOST_NO_CXX11_CHAR16_T)
|
357
362
|
|
358
363
|
template<> struct tn_holder<char16_t>
|
@@ -15,17 +15,6 @@
|
|
15
15
|
#include <boost/function_equal.hpp>
|
16
16
|
#include <boost/core/typeinfo.hpp>
|
17
17
|
#include <boost/core/ref.hpp>
|
18
|
-
#include <boost/type_traits/has_trivial_copy.hpp>
|
19
|
-
#include <boost/type_traits/has_trivial_destructor.hpp>
|
20
|
-
#include <boost/type_traits/is_const.hpp>
|
21
|
-
#include <boost/type_traits/is_integral.hpp>
|
22
|
-
#include <boost/type_traits/is_volatile.hpp>
|
23
|
-
#include <boost/type_traits/composite_traits.hpp>
|
24
|
-
#include <boost/type_traits/conditional.hpp>
|
25
|
-
#include <boost/type_traits/alignment_of.hpp>
|
26
|
-
#include <boost/type_traits/enable_if.hpp>
|
27
|
-
#include <boost/type_traits/integral_constant.hpp>
|
28
|
-
#include <boost/type_traits/is_function.hpp>
|
29
18
|
#include <boost/assert.hpp>
|
30
19
|
#include <boost/config.hpp>
|
31
20
|
#include <boost/config/workaround.hpp>
|
@@ -33,6 +22,7 @@
|
|
33
22
|
#include <string>
|
34
23
|
#include <memory>
|
35
24
|
#include <new>
|
25
|
+
#include <type_traits>
|
36
26
|
|
37
27
|
#if defined(BOOST_MSVC)
|
38
28
|
# pragma warning( push )
|
@@ -43,10 +33,8 @@
|
|
43
33
|
// retained because used in a test
|
44
34
|
#define BOOST_FUNCTION_TARGET_FIX(x)
|
45
35
|
|
46
|
-
#
|
47
|
-
|
48
|
-
!(::boost::is_integral<Functor>::value), \
|
49
|
-
Type>::type
|
36
|
+
#define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \
|
37
|
+
typename std::enable_if< !std::is_integral<Functor>::value, Type>::type
|
50
38
|
|
51
39
|
namespace boost {
|
52
40
|
namespace detail {
|
@@ -131,15 +119,15 @@ namespace boost {
|
|
131
119
|
template<typename F>
|
132
120
|
class get_function_tag
|
133
121
|
{
|
134
|
-
typedef typename conditional<
|
122
|
+
typedef typename std::conditional<std::is_pointer<F>::value,
|
135
123
|
function_ptr_tag,
|
136
124
|
function_obj_tag>::type ptr_or_obj_tag;
|
137
125
|
|
138
|
-
typedef typename conditional<
|
126
|
+
typedef typename std::conditional<std::is_member_pointer<F>::value,
|
139
127
|
member_ptr_tag,
|
140
128
|
ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag;
|
141
129
|
|
142
|
-
typedef typename conditional<
|
130
|
+
typedef typename std::conditional<is_reference_wrapper<F>::value,
|
143
131
|
function_obj_ref_tag,
|
144
132
|
ptr_or_obj_or_mem_tag>::type or_ref_tag;
|
145
133
|
|
@@ -204,8 +192,8 @@ namespace boost {
|
|
204
192
|
BOOST_STATIC_CONSTANT
|
205
193
|
(bool,
|
206
194
|
value = ((sizeof(F) <= sizeof(function_buffer) &&
|
207
|
-
(alignment_of<function_buffer>::value
|
208
|
-
% alignment_of<F>::value == 0))));
|
195
|
+
(std::alignment_of<function_buffer>::value
|
196
|
+
% std::alignment_of<F>::value == 0))));
|
209
197
|
};
|
210
198
|
|
211
199
|
template <typename F,typename A>
|
@@ -306,7 +294,7 @@ namespace boost {
|
|
306
294
|
// Function objects that fit in the small-object buffer.
|
307
295
|
static inline void
|
308
296
|
manager(const function_buffer& in_buffer, function_buffer& out_buffer,
|
309
|
-
functor_manager_operation_type op, true_type)
|
297
|
+
functor_manager_operation_type op, std::true_type)
|
310
298
|
{
|
311
299
|
functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
|
312
300
|
}
|
@@ -314,7 +302,7 @@ namespace boost {
|
|
314
302
|
// Function objects that require heap allocation
|
315
303
|
static inline void
|
316
304
|
manager(const function_buffer& in_buffer, function_buffer& out_buffer,
|
317
|
-
functor_manager_operation_type op, false_type)
|
305
|
+
functor_manager_operation_type op, std::false_type)
|
318
306
|
{
|
319
307
|
if (op == clone_functor_tag) {
|
320
308
|
// Clone the functor
|
@@ -355,7 +343,7 @@ namespace boost {
|
|
355
343
|
functor_manager_operation_type op, function_obj_tag)
|
356
344
|
{
|
357
345
|
manager(in_buffer, out_buffer, op,
|
358
|
-
integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
|
346
|
+
std::integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
|
359
347
|
}
|
360
348
|
|
361
349
|
// For member pointers, we use the small-object optimization buffer.
|
@@ -363,7 +351,7 @@ namespace boost {
|
|
363
351
|
manager(const function_buffer& in_buffer, function_buffer& out_buffer,
|
364
352
|
functor_manager_operation_type op, member_ptr_tag)
|
365
353
|
{
|
366
|
-
manager(in_buffer, out_buffer, op, true_type());
|
354
|
+
manager(in_buffer, out_buffer, op, std::true_type());
|
367
355
|
}
|
368
356
|
|
369
357
|
public:
|
@@ -401,7 +389,7 @@ namespace boost {
|
|
401
389
|
// Function objects that fit in the small-object buffer.
|
402
390
|
static inline void
|
403
391
|
manager(const function_buffer& in_buffer, function_buffer& out_buffer,
|
404
|
-
functor_manager_operation_type op, true_type)
|
392
|
+
functor_manager_operation_type op, std::true_type)
|
405
393
|
{
|
406
394
|
functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
|
407
395
|
}
|
@@ -409,7 +397,7 @@ namespace boost {
|
|
409
397
|
// Function objects that require heap allocation
|
410
398
|
static inline void
|
411
399
|
manager(const function_buffer& in_buffer, function_buffer& out_buffer,
|
412
|
-
functor_manager_operation_type op, false_type)
|
400
|
+
functor_manager_operation_type op, std::false_type)
|
413
401
|
{
|
414
402
|
typedef functor_wrapper<Functor,Allocator> functor_wrapper_type;
|
415
403
|
|
@@ -460,7 +448,7 @@ namespace boost {
|
|
460
448
|
functor_manager_operation_type op, function_obj_tag)
|
461
449
|
{
|
462
450
|
manager(in_buffer, out_buffer, op,
|
463
|
-
integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
|
451
|
+
std::integral_constant<bool, (function_allows_small_object_optimization<functor_type>::value)>());
|
464
452
|
}
|
465
453
|
|
466
454
|
public:
|
@@ -529,8 +517,8 @@ public:
|
|
529
517
|
|
530
518
|
detail::function::function_buffer type_result;
|
531
519
|
type_result.members.type.type = &BOOST_CORE_TYPEID(Functor);
|
532
|
-
type_result.members.type.const_qualified = is_const<Functor>::value;
|
533
|
-
type_result.members.type.volatile_qualified = is_volatile<Functor>::value;
|
520
|
+
type_result.members.type.const_qualified = std::is_const<Functor>::value;
|
521
|
+
type_result.members.type.volatile_qualified = std::is_volatile<Functor>::value;
|
534
522
|
get_vtable()->manager(functor, type_result,
|
535
523
|
detail::function::check_functor_type_tag);
|
536
524
|
return static_cast<Functor*>(type_result.members.obj_ptr);
|
@@ -544,7 +532,7 @@ public:
|
|
544
532
|
detail::function::function_buffer type_result;
|
545
533
|
type_result.members.type.type = &BOOST_CORE_TYPEID(Functor);
|
546
534
|
type_result.members.type.const_qualified = true;
|
547
|
-
type_result.members.type.volatile_qualified = is_volatile<Functor>::value;
|
535
|
+
type_result.members.type.volatile_qualified = std::is_volatile<Functor>::value;
|
548
536
|
get_vtable()->manager(functor, type_result,
|
549
537
|
detail::function::check_functor_type_tag);
|
550
538
|
// GCC 2.95.3 gets the CV qualifiers wrong here, so we
|
@@ -553,8 +541,8 @@ public:
|
|
553
541
|
}
|
554
542
|
|
555
543
|
template<typename F>
|
556
|
-
typename
|
557
|
-
|
544
|
+
typename std::enable_if< !std::is_function<F>::value, bool >::type
|
545
|
+
contains(const F& f) const
|
558
546
|
{
|
559
547
|
if (const F* fp = this->template target<F>())
|
560
548
|
{
|
@@ -565,8 +553,8 @@ public:
|
|
565
553
|
}
|
566
554
|
|
567
555
|
template<typename Fn>
|
568
|
-
typename
|
569
|
-
|
556
|
+
typename std::enable_if< std::is_function<Fn>::value, bool >::type
|
557
|
+
contains(Fn& f) const
|
570
558
|
{
|
571
559
|
typedef Fn* F;
|
572
560
|
if (const F* fp = this->template target<F>())
|