passenger 6.1.0 → 6.1.1
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 +32 -2
- data/Rakefile +6 -13
- data/bin/passenger-install-apache2-module +15 -19
- data/bin/passenger-install-nginx-module +42 -44
- data/bin/passenger-status +9 -10
- data/build/common_library.rb +4 -4
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
- data/build/test_basics.rb +4 -3
- data/dev/copy_boost_headers +54 -40
- data/dev/ruby_server.rb +1 -1
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
- data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
- data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
- data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
- data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
- data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
- data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
- 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/buffer_view.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
- 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 +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
- 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 +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
- data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
- data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
- data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
- data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/nginx_module/ContentHandler.c +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +8 -8
- metadata +26 -99
- data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
|
@@ -2,30 +2,17 @@
|
|
|
2
2
|
// subject to the Boost Software License, Version 1.0. (See accompanying
|
|
3
3
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
4
4
|
#ifndef FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
|
|
5
|
-
#
|
|
5
|
+
#define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
|
|
6
6
|
|
|
7
|
-
#
|
|
7
|
+
#include <iterator>
|
|
8
|
+
#include <type_traits>
|
|
8
9
|
|
|
9
|
-
#
|
|
10
|
+
#include <boost/mp11/utility.hpp>
|
|
10
11
|
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# include <boost/mpl/identity.hpp>
|
|
16
|
-
|
|
17
|
-
# include <boost/static_assert.hpp>
|
|
18
|
-
|
|
19
|
-
# include <boost/type_traits/is_same.hpp>
|
|
20
|
-
# include <boost/type_traits/is_const.hpp>
|
|
21
|
-
# include <boost/type_traits/is_reference.hpp>
|
|
22
|
-
# include <boost/type_traits/is_convertible.hpp>
|
|
23
|
-
|
|
24
|
-
# include <boost/iterator/detail/config_def.hpp> // try to keep this last
|
|
25
|
-
|
|
26
|
-
# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
|
|
27
|
-
# include <boost/detail/indirect_traits.hpp>
|
|
28
|
-
# endif
|
|
12
|
+
#include <boost/iterator/iterator_categories.hpp>
|
|
13
|
+
#include <boost/iterator/detail/type_traits/conjunction.hpp>
|
|
14
|
+
#include <boost/iterator/detail/type_traits/disjunction.hpp>
|
|
15
|
+
#include <boost/iterator/detail/config_def.hpp> // try to keep this last
|
|
29
16
|
|
|
30
17
|
//
|
|
31
18
|
// iterator_category deduction for iterator_facade
|
|
@@ -33,45 +20,49 @@
|
|
|
33
20
|
|
|
34
21
|
namespace boost {
|
|
35
22
|
namespace iterators {
|
|
23
|
+
namespace detail {
|
|
36
24
|
|
|
37
|
-
|
|
25
|
+
#ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
|
|
38
26
|
|
|
39
|
-
|
|
27
|
+
template< typename T >
|
|
28
|
+
struct is_const_lvalue_reference :
|
|
29
|
+
public std::false_type
|
|
30
|
+
{};
|
|
40
31
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// output_iterator_tag, as STLPort does, in its __valid_range
|
|
48
|
-
// function. I claim it's better to avoid the ambiguity in these
|
|
49
|
-
// cases.
|
|
50
|
-
operator std::output_iterator_tag() const
|
|
51
|
-
{
|
|
52
|
-
return std::output_iterator_tag();
|
|
53
|
-
}
|
|
54
|
-
};
|
|
32
|
+
template< typename T >
|
|
33
|
+
struct is_const_lvalue_reference< T const& > :
|
|
34
|
+
public std::true_type
|
|
35
|
+
{};
|
|
36
|
+
|
|
37
|
+
#endif // BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
|
|
55
38
|
|
|
56
39
|
//
|
|
57
40
|
// True iff the user has explicitly disabled writability of this
|
|
58
41
|
// iterator. Pass the iterator_facade's Value parameter and its
|
|
59
42
|
// nested ::reference type.
|
|
60
43
|
//
|
|
61
|
-
template
|
|
62
|
-
struct iterator_writability_disabled
|
|
44
|
+
template< typename ValueParam, typename Reference >
|
|
45
|
+
struct iterator_writability_disabled :
|
|
63
46
|
# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY // Adding Thomas' logic?
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
47
|
+
public detail::disjunction<
|
|
48
|
+
detail::is_const_lvalue_reference< Reference >,
|
|
49
|
+
std::is_const< Reference >,
|
|
50
|
+
std::is_const< ValueParam >
|
|
68
51
|
>
|
|
69
52
|
# else
|
|
70
|
-
|
|
53
|
+
public std::is_const< ValueParam >
|
|
71
54
|
# endif
|
|
72
55
|
{};
|
|
73
56
|
|
|
74
57
|
|
|
58
|
+
template< typename Traversal, typename ValueParam, typename Reference >
|
|
59
|
+
using is_traversal_of_input_iterator = detail::conjunction<
|
|
60
|
+
std::is_convertible< Traversal, single_pass_traversal_tag >,
|
|
61
|
+
|
|
62
|
+
// check for readability
|
|
63
|
+
std::is_convertible< Reference, ValueParam >
|
|
64
|
+
>;
|
|
65
|
+
|
|
75
66
|
//
|
|
76
67
|
// Convert an iterator_facade's traversal category, Value parameter,
|
|
77
68
|
// and ::reference type to an appropriate old-style category.
|
|
@@ -80,114 +71,109 @@ struct iterator_writability_disabled
|
|
|
80
71
|
// to output_iterator_tag.
|
|
81
72
|
//
|
|
82
73
|
// Change at: https://svn.boost.org/trac/boost/changeset/21683
|
|
83
|
-
template
|
|
74
|
+
template< typename Traversal, typename ValueParam, typename Reference >
|
|
84
75
|
struct iterator_facade_default_category
|
|
85
|
-
: mpl::eval_if<
|
|
86
|
-
mpl::and_<
|
|
87
|
-
is_reference<Reference>
|
|
88
|
-
, is_convertible<Traversal,forward_traversal_tag>
|
|
89
|
-
>
|
|
90
|
-
, mpl::eval_if<
|
|
91
|
-
is_convertible<Traversal,random_access_traversal_tag>
|
|
92
|
-
, mpl::identity<std::random_access_iterator_tag>
|
|
93
|
-
, mpl::if_<
|
|
94
|
-
is_convertible<Traversal,bidirectional_traversal_tag>
|
|
95
|
-
, std::bidirectional_iterator_tag
|
|
96
|
-
, std::forward_iterator_tag
|
|
97
|
-
>
|
|
98
|
-
>
|
|
99
|
-
, typename mpl::eval_if<
|
|
100
|
-
mpl::and_<
|
|
101
|
-
is_convertible<Traversal, single_pass_traversal_tag>
|
|
102
|
-
|
|
103
|
-
// check for readability
|
|
104
|
-
, is_convertible<Reference, ValueParam>
|
|
105
|
-
>
|
|
106
|
-
, mpl::identity<std::input_iterator_tag>
|
|
107
|
-
, mpl::identity<Traversal>
|
|
108
|
-
>
|
|
109
|
-
>
|
|
110
76
|
{
|
|
77
|
+
using type = typename std::conditional<
|
|
78
|
+
detail::is_traversal_of_input_iterator< Traversal, ValueParam, Reference >::value,
|
|
79
|
+
std::input_iterator_tag,
|
|
80
|
+
Traversal
|
|
81
|
+
>::type;
|
|
111
82
|
};
|
|
112
83
|
|
|
113
|
-
//
|
|
114
|
-
template
|
|
115
|
-
struct
|
|
116
|
-
: mpl::or_<
|
|
117
|
-
is_convertible<T,std::input_iterator_tag>
|
|
118
|
-
, is_convertible<T,std::output_iterator_tag>
|
|
119
|
-
>
|
|
84
|
+
// Specialization for the (typical) case when the reference type is an actual reference
|
|
85
|
+
template< typename Traversal, typename ValueParam, typename Referenced >
|
|
86
|
+
struct iterator_facade_default_category< Traversal, ValueParam, Referenced& >
|
|
120
87
|
{
|
|
88
|
+
using type = mp11::mp_cond<
|
|
89
|
+
std::is_convertible< Traversal, random_access_traversal_tag >, std::random_access_iterator_tag,
|
|
90
|
+
std::is_convertible< Traversal, bidirectional_traversal_tag >, std::bidirectional_iterator_tag,
|
|
91
|
+
std::is_convertible< Traversal, forward_traversal_tag >, std::forward_iterator_tag,
|
|
92
|
+
detail::is_traversal_of_input_iterator< Traversal, ValueParam, Referenced& >, std::input_iterator_tag,
|
|
93
|
+
std::true_type, Traversal
|
|
94
|
+
>;
|
|
121
95
|
};
|
|
122
96
|
|
|
123
|
-
template
|
|
124
|
-
|
|
125
|
-
|
|
97
|
+
template< typename Traversal, typename ValueParam, typename Reference >
|
|
98
|
+
using iterator_facade_default_category_t = typename iterator_facade_default_category< Traversal, ValueParam, Reference >::type;
|
|
99
|
+
|
|
100
|
+
// True iff T is convertible to an old-style iterator category.
|
|
101
|
+
template< typename T >
|
|
102
|
+
struct is_iterator_category :
|
|
103
|
+
public detail::disjunction<
|
|
104
|
+
std::is_convertible< T, std::input_iterator_tag >,
|
|
105
|
+
std::is_convertible< T, std::output_iterator_tag >
|
|
106
|
+
>
|
|
107
|
+
{};
|
|
108
|
+
|
|
109
|
+
template< typename T >
|
|
110
|
+
struct is_iterator_traversal :
|
|
111
|
+
public std::is_convertible< T, incrementable_traversal_tag >
|
|
126
112
|
{};
|
|
127
113
|
|
|
114
|
+
|
|
128
115
|
//
|
|
129
116
|
// A composite iterator_category tag convertible to Category (a pure
|
|
130
117
|
// old-style category) and Traversal (a pure traversal tag).
|
|
131
118
|
// Traversal must be a strict increase of the traversal power given by
|
|
132
119
|
// Category.
|
|
133
120
|
//
|
|
134
|
-
template
|
|
135
|
-
struct iterator_category_with_traversal
|
|
136
|
-
|
|
121
|
+
template< typename Category, typename Traversal >
|
|
122
|
+
struct iterator_category_with_traversal :
|
|
123
|
+
public Category,
|
|
124
|
+
public Traversal
|
|
137
125
|
{
|
|
138
126
|
// Make sure this isn't used to build any categories where
|
|
139
127
|
// convertibility to Traversal is redundant. Should just use the
|
|
140
128
|
// Category element in that case.
|
|
141
|
-
|
|
142
|
-
!is_convertible<
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
# if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
|
|
151
|
-
BOOST_STATIC_ASSERT(is_iterator_traversal<Traversal>::value);
|
|
152
|
-
# endif
|
|
129
|
+
static_assert(
|
|
130
|
+
!std::is_convertible< iterator_category_to_traversal_t< Category >, Traversal >::value,
|
|
131
|
+
"Category transformed to corresponding traversal must be convertible to Traversal."
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
static_assert(is_iterator_category< Category >::value, "Category must be an STL iterator category.");
|
|
135
|
+
static_assert(!is_iterator_category< Traversal >::value, "Traversal must not be an STL iterator category.");
|
|
136
|
+
static_assert(!is_iterator_traversal< Category >::value, "Category must not be a traversal tag.");
|
|
137
|
+
static_assert(is_iterator_traversal< Traversal >::value, "Traversal must be a traversal tag.");
|
|
153
138
|
};
|
|
154
139
|
|
|
155
140
|
// Computes an iterator_category tag whose traversal is Traversal and
|
|
156
141
|
// which is appropriate for an iterator
|
|
157
|
-
template
|
|
142
|
+
template< typename Traversal, typename ValueParam, typename Reference >
|
|
158
143
|
struct facade_iterator_category_impl
|
|
159
144
|
{
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
>
|
|
171
|
-
|
|
172
|
-
, iterator_category_with_traversal<category,Traversal>
|
|
173
|
-
>::type type;
|
|
145
|
+
static_assert(!is_iterator_category< Traversal >::value, "Traversal must not be an STL iterator category.");
|
|
146
|
+
|
|
147
|
+
using category = iterator_facade_default_category_t< Traversal, ValueParam, Reference >;
|
|
148
|
+
|
|
149
|
+
using type = typename std::conditional<
|
|
150
|
+
std::is_same<
|
|
151
|
+
Traversal,
|
|
152
|
+
typename iterator_category_to_traversal< category >::type
|
|
153
|
+
>::value,
|
|
154
|
+
category,
|
|
155
|
+
iterator_category_with_traversal< category, Traversal >
|
|
156
|
+
>::type;
|
|
174
157
|
};
|
|
175
158
|
|
|
159
|
+
template< typename Traversal, typename ValueParam, typename Reference >
|
|
160
|
+
using facade_iterator_category_impl_t = typename facade_iterator_category_impl< Traversal, ValueParam, Reference >::type;
|
|
161
|
+
|
|
176
162
|
//
|
|
177
163
|
// Compute an iterator_category for iterator_facade
|
|
178
164
|
//
|
|
179
|
-
template
|
|
165
|
+
template< typename CategoryOrTraversal, typename ValueParam, typename Reference >
|
|
180
166
|
struct facade_iterator_category
|
|
181
|
-
: mpl::eval_if<
|
|
182
|
-
is_iterator_category<CategoryOrTraversal>
|
|
183
|
-
, mpl::identity<CategoryOrTraversal> // old-style categories are fine as-is
|
|
184
|
-
, facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference>
|
|
185
|
-
>
|
|
186
167
|
{
|
|
168
|
+
using type = mp11::mp_eval_if<
|
|
169
|
+
is_iterator_category< CategoryOrTraversal >,
|
|
170
|
+
CategoryOrTraversal, // old-style categories are fine as-is
|
|
171
|
+
facade_iterator_category_impl_t, CategoryOrTraversal, ValueParam, Reference
|
|
172
|
+
>;
|
|
187
173
|
};
|
|
188
174
|
|
|
189
175
|
}}} // namespace boost::iterators::detail
|
|
190
176
|
|
|
191
|
-
#
|
|
177
|
+
#include <boost/iterator/detail/config_undef.hpp>
|
|
192
178
|
|
|
193
179
|
#endif // FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* https://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2024 Georgiy Guminov
|
|
7
|
+
*/
|
|
8
|
+
/*!
|
|
9
|
+
* \file iterator/detail/type_traits/conjunction.hpp
|
|
10
|
+
*
|
|
11
|
+
* This header contains definition of \c conjunction type trait.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_CONJUNCTION_HPP_INCLUDED_
|
|
15
|
+
#define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_CONJUNCTION_HPP_INCLUDED_
|
|
16
|
+
|
|
17
|
+
#include <type_traits>
|
|
18
|
+
#include <boost/config.hpp>
|
|
19
|
+
|
|
20
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
21
|
+
#pragma once
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#if (defined(__cpp_lib_logical_traits) && (__cpp_lib_logical_traits >= 201510l)) || \
|
|
25
|
+
(defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 140) && (_MSC_FULL_VER >= 190023918) && (BOOST_CXX_VERSION >= 201703l))
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace iterators {
|
|
29
|
+
namespace detail {
|
|
30
|
+
|
|
31
|
+
using std::conjunction;
|
|
32
|
+
|
|
33
|
+
} // namespace detail
|
|
34
|
+
} // namespace iterator
|
|
35
|
+
} // namespace boost
|
|
36
|
+
|
|
37
|
+
#else
|
|
38
|
+
|
|
39
|
+
#include <boost/type_traits/conjunction.hpp>
|
|
40
|
+
|
|
41
|
+
namespace boost {
|
|
42
|
+
namespace iterators {
|
|
43
|
+
namespace detail {
|
|
44
|
+
|
|
45
|
+
using boost::conjunction;
|
|
46
|
+
|
|
47
|
+
} // namespace detail
|
|
48
|
+
} // namespace iterator
|
|
49
|
+
} // namespace boost
|
|
50
|
+
|
|
51
|
+
#endif
|
|
52
|
+
|
|
53
|
+
#endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_CONJUNCTION_HPP_INCLUDED_
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* https://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2024 Georgiy Guminov
|
|
7
|
+
*/
|
|
8
|
+
/*!
|
|
9
|
+
* \file iterator/detail/type_traits/disjunction.hpp
|
|
10
|
+
*
|
|
11
|
+
* This header contains definition of \c disjunction type trait.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_DISJUNCTION_HPP_INCLUDED_
|
|
15
|
+
#define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_DISJUNCTION_HPP_INCLUDED_
|
|
16
|
+
|
|
17
|
+
#include <type_traits>
|
|
18
|
+
#include <boost/config.hpp>
|
|
19
|
+
|
|
20
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
21
|
+
#pragma once
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#if (defined(__cpp_lib_logical_traits) && (__cpp_lib_logical_traits >= 201510l)) || \
|
|
25
|
+
(defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 140) && (_MSC_FULL_VER >= 190023918) && (BOOST_CXX_VERSION >= 201703l))
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace iterators {
|
|
29
|
+
namespace detail {
|
|
30
|
+
|
|
31
|
+
using std::disjunction;
|
|
32
|
+
|
|
33
|
+
} // namespace detail
|
|
34
|
+
} // namespace iterator
|
|
35
|
+
} // namespace boost
|
|
36
|
+
|
|
37
|
+
#else
|
|
38
|
+
|
|
39
|
+
#include <boost/type_traits/disjunction.hpp>
|
|
40
|
+
|
|
41
|
+
namespace boost {
|
|
42
|
+
namespace iterators {
|
|
43
|
+
namespace detail {
|
|
44
|
+
|
|
45
|
+
using boost::disjunction;
|
|
46
|
+
|
|
47
|
+
} // namespace detail
|
|
48
|
+
} // namespace iterator
|
|
49
|
+
} // namespace boost
|
|
50
|
+
|
|
51
|
+
#endif
|
|
52
|
+
|
|
53
|
+
#endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_DISJUNCTION_HPP_INCLUDED_
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* https://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2024 Georgiy Guminov
|
|
7
|
+
*/
|
|
8
|
+
/*!
|
|
9
|
+
* \file iterator/detail/type_traits/negation.hpp
|
|
10
|
+
*
|
|
11
|
+
* This header contains definition of \c negation type trait.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_NEGATION_HPP_INCLUDED_
|
|
15
|
+
#define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_NEGATION_HPP_INCLUDED_
|
|
16
|
+
|
|
17
|
+
#include <type_traits>
|
|
18
|
+
#include <boost/config.hpp>
|
|
19
|
+
|
|
20
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
21
|
+
#pragma once
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#if (defined(__cpp_lib_logical_traits) && (__cpp_lib_logical_traits >= 201510l)) || \
|
|
25
|
+
(defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 140) && (_MSC_FULL_VER >= 190023918) && (BOOST_CXX_VERSION >= 201703l))
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace iterators {
|
|
29
|
+
namespace detail {
|
|
30
|
+
|
|
31
|
+
using std::negation;
|
|
32
|
+
|
|
33
|
+
} // namespace detail
|
|
34
|
+
} // namespace iterator
|
|
35
|
+
} // namespace boost
|
|
36
|
+
|
|
37
|
+
#else
|
|
38
|
+
|
|
39
|
+
#include <boost/type_traits/negation.hpp>
|
|
40
|
+
|
|
41
|
+
namespace boost {
|
|
42
|
+
namespace iterators {
|
|
43
|
+
namespace detail {
|
|
44
|
+
|
|
45
|
+
using boost::negation;
|
|
46
|
+
|
|
47
|
+
} // namespace detail
|
|
48
|
+
} // namespace iterator
|
|
49
|
+
} // namespace boost
|
|
50
|
+
|
|
51
|
+
#endif
|
|
52
|
+
|
|
53
|
+
#endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_NEGATION_HPP_INCLUDED_
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* https://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 Andrey Semashev
|
|
7
|
+
*/
|
|
8
|
+
/*!
|
|
9
|
+
* \file iterator/detail/type_traits/type_identity.hpp
|
|
10
|
+
*
|
|
11
|
+
* This header contains definition of \c negation type trait.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_ITERATOR_DETAIL_TYPE_TRAITS_TYPE_IDENTITY_HPP_INCLUDED_
|
|
15
|
+
#define BOOST_ITERATOR_DETAIL_TYPE_TRAITS_TYPE_IDENTITY_HPP_INCLUDED_
|
|
16
|
+
|
|
17
|
+
#include <type_traits>
|
|
18
|
+
#include <boost/config.hpp>
|
|
19
|
+
|
|
20
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
21
|
+
#pragma once
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#if (defined(__cpp_lib_type_identity) && (__cpp_lib_type_identity >= 201806l)) || \
|
|
25
|
+
/* Note: MSVC 19.21 does not define _MSVC_LANG to 202002 in c++latest (C++20) mode but to a value larger than 201703 */ \
|
|
26
|
+
(defined(BOOST_MSSTL_VERSION) && (BOOST_MSSTL_VERSION >= 142) && (_MSC_VER >= 1921) && (BOOST_CXX_VERSION > 201703l))
|
|
27
|
+
|
|
28
|
+
namespace boost {
|
|
29
|
+
namespace iterators {
|
|
30
|
+
namespace detail {
|
|
31
|
+
|
|
32
|
+
using std::type_identity;
|
|
33
|
+
|
|
34
|
+
} // namespace detail
|
|
35
|
+
} // namespace iterator
|
|
36
|
+
} // namespace boost
|
|
37
|
+
|
|
38
|
+
#else
|
|
39
|
+
|
|
40
|
+
#include <boost/type_traits/type_identity.hpp>
|
|
41
|
+
|
|
42
|
+
namespace boost {
|
|
43
|
+
namespace iterators {
|
|
44
|
+
namespace detail {
|
|
45
|
+
|
|
46
|
+
using boost::type_identity;
|
|
47
|
+
|
|
48
|
+
} // namespace detail
|
|
49
|
+
} // namespace iterator
|
|
50
|
+
} // namespace boost
|
|
51
|
+
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
#endif // BOOST_ITERATOR_DETAIL_TYPE_TRAITS_TYPE_IDENTITY_HPP_INCLUDED_
|
|
@@ -13,48 +13,42 @@
|
|
|
13
13
|
|
|
14
14
|
namespace boost {
|
|
15
15
|
namespace iterators {
|
|
16
|
+
namespace detail {
|
|
17
|
+
|
|
18
|
+
template< typename SinglePassIterator >
|
|
19
|
+
inline BOOST_CXX14_CONSTEXPR typename iterator_difference< SinglePassIterator >::type
|
|
20
|
+
distance_impl(SinglePassIterator first, SinglePassIterator last, single_pass_traversal_tag)
|
|
21
|
+
{
|
|
22
|
+
typename iterator_difference< SinglePassIterator >::type n = 0;
|
|
23
|
+
while (first != last)
|
|
24
|
+
{
|
|
25
|
+
++first;
|
|
26
|
+
++n;
|
|
27
|
+
}
|
|
28
|
+
return n;
|
|
29
|
+
}
|
|
16
30
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
, single_pass_traversal_tag
|
|
24
|
-
)
|
|
25
|
-
{
|
|
26
|
-
typename iterator_difference<SinglePassIterator>::type n = 0;
|
|
27
|
-
while (first != last) {
|
|
28
|
-
++first;
|
|
29
|
-
++n;
|
|
30
|
-
}
|
|
31
|
-
return n;
|
|
32
|
-
}
|
|
31
|
+
template< typename RandomAccessIterator >
|
|
32
|
+
inline BOOST_CXX14_CONSTEXPR typename iterator_difference< RandomAccessIterator >::type
|
|
33
|
+
distance_impl(RandomAccessIterator first, RandomAccessIterator last, random_access_traversal_tag)
|
|
34
|
+
{
|
|
35
|
+
return last - first;
|
|
36
|
+
}
|
|
33
37
|
|
|
34
|
-
|
|
35
|
-
inline BOOST_CXX14_CONSTEXPR typename iterator_difference<RandomAccessIterator>::type
|
|
36
|
-
distance_impl(
|
|
37
|
-
RandomAccessIterator first
|
|
38
|
-
, RandomAccessIterator last
|
|
39
|
-
, random_access_traversal_tag
|
|
40
|
-
)
|
|
41
|
-
{
|
|
42
|
-
return last - first;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
38
|
+
} // namespace detail
|
|
45
39
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
40
|
+
namespace distance_adl_barrier {
|
|
41
|
+
|
|
42
|
+
template< typename SinglePassIterator >
|
|
43
|
+
inline BOOST_CXX14_CONSTEXPR typename iterator_difference< SinglePassIterator >::type
|
|
44
|
+
distance(SinglePassIterator first, SinglePassIterator last)
|
|
45
|
+
{
|
|
46
|
+
return detail::distance_impl(first, last, typename iterator_traversal< SinglePassIterator >::type());
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
} // namespace distance_adl_barrier
|
|
56
50
|
|
|
57
|
-
|
|
51
|
+
using namespace distance_adl_barrier;
|
|
58
52
|
|
|
59
53
|
} // namespace iterators
|
|
60
54
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* https://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 Andrey Semashev
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef BOOST_ITERATOR_ENABLE_IF_CONVERTIBLE_HPP_INCLUDED_
|
|
10
|
+
#define BOOST_ITERATOR_ENABLE_IF_CONVERTIBLE_HPP_INCLUDED_
|
|
11
|
+
|
|
12
|
+
#include <type_traits>
|
|
13
|
+
|
|
14
|
+
namespace boost {
|
|
15
|
+
namespace iterators {
|
|
16
|
+
namespace detail {
|
|
17
|
+
|
|
18
|
+
//
|
|
19
|
+
// Result type used in enable_if_convertible meta function.
|
|
20
|
+
// This can be an incomplete type, as only pointers to
|
|
21
|
+
// enable_if_convertible< ... >::type are used.
|
|
22
|
+
// We could have used void for this, but conversion to
|
|
23
|
+
// void* is just too easy.
|
|
24
|
+
//
|
|
25
|
+
struct enable_type;
|
|
26
|
+
|
|
27
|
+
} // namespace detail
|
|
28
|
+
|
|
29
|
+
//
|
|
30
|
+
// enable_if for use in adapted iterators constructors.
|
|
31
|
+
//
|
|
32
|
+
// In order to provide interoperability between adapted constant and
|
|
33
|
+
// mutable iterators, adapted iterators will usually provide templated
|
|
34
|
+
// conversion constructors of the following form
|
|
35
|
+
//
|
|
36
|
+
// template <class BaseIterator>
|
|
37
|
+
// class adapted_iterator :
|
|
38
|
+
// public iterator_adaptor< adapted_iterator<Iterator>, Iterator >
|
|
39
|
+
// {
|
|
40
|
+
// public:
|
|
41
|
+
//
|
|
42
|
+
// ...
|
|
43
|
+
//
|
|
44
|
+
// template <class OtherIterator>
|
|
45
|
+
// adapted_iterator(
|
|
46
|
+
// OtherIterator const& it
|
|
47
|
+
// , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0);
|
|
48
|
+
//
|
|
49
|
+
// ...
|
|
50
|
+
// };
|
|
51
|
+
//
|
|
52
|
+
// enable_if_convertible is used to remove those overloads from the overload
|
|
53
|
+
// set that cannot be instantiated. For all practical purposes only overloads
|
|
54
|
+
// for constant/mutable interaction will remain. This has the advantage that
|
|
55
|
+
// meta functions like boost::is_convertible do not return false positives,
|
|
56
|
+
// as they can only look at the signature of the conversion constructor
|
|
57
|
+
// and not at the actual instantiation.
|
|
58
|
+
//
|
|
59
|
+
// enable_if_interoperable can be safely used in user code. It falls back to
|
|
60
|
+
// always enabled for compilers that don't support enable_if or is_convertible.
|
|
61
|
+
// There is no need for compiler specific workarounds in user code.
|
|
62
|
+
//
|
|
63
|
+
// The operators implementation relies on boost::is_convertible not returning
|
|
64
|
+
// false positives for user/library defined iterator types. See comments
|
|
65
|
+
// on operator implementation for consequences.
|
|
66
|
+
//
|
|
67
|
+
template< typename From, typename To >
|
|
68
|
+
struct enable_if_convertible :
|
|
69
|
+
public std::enable_if<
|
|
70
|
+
std::is_convertible< From, To >::value,
|
|
71
|
+
boost::iterators::detail::enable_type
|
|
72
|
+
>
|
|
73
|
+
{};
|
|
74
|
+
|
|
75
|
+
template< typename From, typename To >
|
|
76
|
+
using enable_if_convertible_t = typename enable_if_convertible< From, To >::type;
|
|
77
|
+
|
|
78
|
+
} // namespace iterators
|
|
79
|
+
|
|
80
|
+
using iterators::enable_if_convertible;
|
|
81
|
+
|
|
82
|
+
} // namespace boost
|
|
83
|
+
|
|
84
|
+
#endif // BOOST_ITERATOR_ENABLE_IF_CONVERTIBLE_HPP_INCLUDED_
|