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
|
@@ -5,43 +5,33 @@
|
|
|
5
5
|
// accompanying file LICENSE_1_0.txt or copy at
|
|
6
6
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
7
7
|
#ifndef BOOST_INTEROPERABLE_23022003THW_HPP
|
|
8
|
-
#
|
|
8
|
+
#define BOOST_INTEROPERABLE_23022003THW_HPP
|
|
9
9
|
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
# include <boost/type_traits/is_convertible.hpp>
|
|
14
|
-
|
|
15
|
-
# include <boost/iterator/detail/config_def.hpp> // must appear last
|
|
10
|
+
#include <type_traits>
|
|
11
|
+
#include <boost/iterator/detail/type_traits/disjunction.hpp>
|
|
16
12
|
|
|
17
13
|
namespace boost {
|
|
18
14
|
namespace iterators {
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
: mpl::or_<
|
|
40
|
-
is_convertible< A, B >
|
|
41
|
-
, is_convertible< B, A > >
|
|
42
|
-
# endif
|
|
43
|
-
{
|
|
44
|
-
};
|
|
16
|
+
//
|
|
17
|
+
// Meta function that determines whether two
|
|
18
|
+
// iterator types are considered interoperable.
|
|
19
|
+
//
|
|
20
|
+
// Two iterator types A,B are considered interoperable if either
|
|
21
|
+
// A is convertible to B or vice versa.
|
|
22
|
+
// This interoperability definition is in sync with the
|
|
23
|
+
// standards requirements on constant/mutable container
|
|
24
|
+
// iterators (23.1 [lib.container.requirements]).
|
|
25
|
+
//
|
|
26
|
+
// For compilers that don't support is_convertible
|
|
27
|
+
// is_interoperable gives false positives. See comments
|
|
28
|
+
// on operator implementation for consequences.
|
|
29
|
+
//
|
|
30
|
+
template< typename A, typename B >
|
|
31
|
+
struct is_interoperable :
|
|
32
|
+
public detail::disjunction< std::is_convertible< A, B >, std::is_convertible< B, A > >
|
|
33
|
+
{
|
|
34
|
+
};
|
|
45
35
|
|
|
46
36
|
} // namespace iterators
|
|
47
37
|
|
|
@@ -49,6 +39,4 @@ using iterators::is_interoperable;
|
|
|
49
39
|
|
|
50
40
|
} // namespace boost
|
|
51
41
|
|
|
52
|
-
# include <boost/iterator/detail/config_undef.hpp>
|
|
53
|
-
|
|
54
42
|
#endif // BOOST_INTEROPERABLE_23022003THW_HPP
|
|
@@ -16,15 +16,15 @@
|
|
|
16
16
|
|
|
17
17
|
#include <cstddef>
|
|
18
18
|
#include <boost/config.hpp>
|
|
19
|
-
#include <boost/type_traits/integral_constant.hpp>
|
|
20
|
-
#include <boost/type_traits/negation.hpp>
|
|
21
|
-
#include <boost/type_traits/conjunction.hpp>
|
|
22
19
|
#include <boost/type_traits/is_complete.hpp>
|
|
23
|
-
#include <boost/type_traits/
|
|
20
|
+
#include <boost/iterator/detail/type_traits/conjunction.hpp>
|
|
21
|
+
#include <boost/iterator/detail/type_traits/negation.hpp>
|
|
24
22
|
#if !defined(BOOST_NO_CXX17_ITERATOR_TRAITS)
|
|
25
23
|
#include <iterator>
|
|
26
24
|
#endif
|
|
27
25
|
|
|
26
|
+
#include <type_traits>
|
|
27
|
+
|
|
28
28
|
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
29
29
|
#pragma once
|
|
30
30
|
#endif
|
|
@@ -59,56 +59,56 @@ no_type check(...);
|
|
|
59
59
|
|
|
60
60
|
template< typename T >
|
|
61
61
|
struct is_iterator_impl :
|
|
62
|
-
public
|
|
62
|
+
public std::integral_constant<
|
|
63
63
|
bool,
|
|
64
|
-
sizeof(has_iterator_category_detail::check<
|
|
64
|
+
sizeof(has_iterator_category_detail::check<T>(0)) == sizeof(has_iterator_category_detail::yes_type)
|
|
65
65
|
>
|
|
66
66
|
{
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
template< typename T >
|
|
70
70
|
struct is_iterator_impl< T* > :
|
|
71
|
-
public
|
|
72
|
-
boost::is_complete<
|
|
73
|
-
|
|
71
|
+
public conjunction<
|
|
72
|
+
boost::is_complete<T>,
|
|
73
|
+
negation< std::is_function< T > >
|
|
74
74
|
>::type
|
|
75
75
|
{
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
template< typename T, typename U >
|
|
79
79
|
struct is_iterator_impl< T U::* > :
|
|
80
|
-
public
|
|
80
|
+
public std::false_type
|
|
81
81
|
{
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
template< typename T >
|
|
85
|
-
struct is_iterator_impl<
|
|
86
|
-
public
|
|
85
|
+
struct is_iterator_impl<T&> :
|
|
86
|
+
public std::false_type
|
|
87
87
|
{
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
template< typename T, std::size_t N >
|
|
91
91
|
struct is_iterator_impl< T[N] > :
|
|
92
|
-
public
|
|
92
|
+
public std::false_type
|
|
93
93
|
{
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
#if !defined(BOOST_TT_HAS_WORKING_IS_COMPLETE)
|
|
97
97
|
template< typename T >
|
|
98
98
|
struct is_iterator_impl< T[] > :
|
|
99
|
-
public
|
|
99
|
+
public std::false_type
|
|
100
100
|
{
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
template< >
|
|
104
104
|
struct is_iterator_impl< void > :
|
|
105
|
-
public
|
|
105
|
+
public std::false_type
|
|
106
106
|
{
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
template< >
|
|
110
110
|
struct is_iterator_impl< void* > :
|
|
111
|
-
public
|
|
111
|
+
public std::false_type
|
|
112
112
|
{
|
|
113
113
|
};
|
|
114
114
|
#endif // !defined(BOOST_TT_HAS_WORKING_IS_COMPLETE)
|
|
@@ -7,349 +7,202 @@
|
|
|
7
7
|
#ifndef BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
|
|
8
8
|
#define BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
|
|
9
9
|
|
|
10
|
-
#include <
|
|
10
|
+
#include <type_traits>
|
|
11
11
|
|
|
12
12
|
#include <boost/core/use_default.hpp>
|
|
13
13
|
|
|
14
14
|
#include <boost/iterator/iterator_categories.hpp>
|
|
15
15
|
#include <boost/iterator/iterator_facade.hpp>
|
|
16
|
-
#include <boost/iterator/
|
|
16
|
+
#include <boost/iterator/iterator_traits.hpp>
|
|
17
|
+
#include <boost/iterator/enable_if_convertible.hpp> // for backward compatibility; remove once downstream users are updated
|
|
18
|
+
#include <boost/iterator/detail/eval_if_default.hpp>
|
|
19
|
+
|
|
20
|
+
#include <boost/iterator/detail/config_def.hpp>
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
#include <boost/mpl/or.hpp>
|
|
22
|
+
namespace boost {
|
|
23
|
+
namespace iterators {
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
// Used as a default template argument internally, merely to
|
|
26
|
+
// indicate "use the default", this can also be passed by users
|
|
27
|
+
// explicitly in order to specify that the default should be used.
|
|
28
|
+
using boost::use_default;
|
|
29
|
+
|
|
30
|
+
namespace detail {
|
|
31
|
+
|
|
32
|
+
// A metafunction which computes an iterator_adaptor's base class,
|
|
33
|
+
// a specialization of iterator_facade.
|
|
34
|
+
template<
|
|
35
|
+
typename Derived,
|
|
36
|
+
typename Base,
|
|
37
|
+
typename Value,
|
|
38
|
+
typename Traversal,
|
|
39
|
+
typename Reference,
|
|
40
|
+
typename Difference
|
|
41
|
+
>
|
|
42
|
+
using iterator_adaptor_base_t = iterator_facade<
|
|
43
|
+
Derived,
|
|
24
44
|
|
|
25
45
|
#ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
|
|
26
|
-
|
|
46
|
+
detail::eval_if_default_t<
|
|
47
|
+
Value,
|
|
48
|
+
detail::eval_if_default<
|
|
49
|
+
Reference,
|
|
50
|
+
iterator_value< Base >,
|
|
51
|
+
std::remove_reference< Reference >
|
|
52
|
+
>
|
|
53
|
+
>,
|
|
54
|
+
#else
|
|
55
|
+
detail::eval_if_default_t<
|
|
56
|
+
Value,
|
|
57
|
+
iterator_value< Base >
|
|
58
|
+
>,
|
|
27
59
|
#endif
|
|
28
60
|
|
|
29
|
-
|
|
30
|
-
|
|
61
|
+
detail::eval_if_default_t<
|
|
62
|
+
Traversal,
|
|
63
|
+
iterator_traversal< Base >
|
|
64
|
+
>,
|
|
65
|
+
|
|
66
|
+
detail::eval_if_default_t<
|
|
67
|
+
Reference,
|
|
68
|
+
detail::eval_if_default<
|
|
69
|
+
Value,
|
|
70
|
+
iterator_reference< Base >,
|
|
71
|
+
std::add_lvalue_reference< Value >
|
|
72
|
+
>
|
|
73
|
+
>,
|
|
31
74
|
|
|
32
|
-
|
|
75
|
+
detail::eval_if_default_t<
|
|
76
|
+
Difference,
|
|
77
|
+
iterator_difference< Base >
|
|
78
|
+
>
|
|
79
|
+
>;
|
|
80
|
+
|
|
81
|
+
} // namespace detail
|
|
82
|
+
|
|
83
|
+
//
|
|
84
|
+
// Iterator Adaptor
|
|
85
|
+
//
|
|
86
|
+
// The parameter ordering changed slightly with respect to former
|
|
87
|
+
// versions of iterator_adaptor The idea is that when the user needs
|
|
88
|
+
// to fiddle with the reference type it is highly likely that the
|
|
89
|
+
// iterator category has to be adjusted as well. Any of the
|
|
90
|
+
// following four template arguments may be omitted or explicitly
|
|
91
|
+
// replaced by use_default.
|
|
92
|
+
//
|
|
93
|
+
// Value - if supplied, the value_type of the resulting iterator, unless
|
|
94
|
+
// const. If const, a conforming compiler strips constness for the
|
|
95
|
+
// value_type. If not supplied, iterator_traits<Base>::value_type is used
|
|
96
|
+
//
|
|
97
|
+
// Category - the traversal category of the resulting iterator. If not
|
|
98
|
+
// supplied, iterator_traversal<Base>::type is used.
|
|
99
|
+
//
|
|
100
|
+
// Reference - the reference type of the resulting iterator, and in
|
|
101
|
+
// particular, the result type of operator*(). If not supplied but
|
|
102
|
+
// Value is supplied, Value& is used. Otherwise
|
|
103
|
+
// iterator_traits<Base>::reference is used.
|
|
104
|
+
//
|
|
105
|
+
// Difference - the difference_type of the resulting iterator. If not
|
|
106
|
+
// supplied, iterator_traits<Base>::difference_type is used.
|
|
107
|
+
//
|
|
108
|
+
template<
|
|
109
|
+
typename Derived,
|
|
110
|
+
typename Base,
|
|
111
|
+
typename Value = use_default,
|
|
112
|
+
typename Traversal = use_default,
|
|
113
|
+
typename Reference = use_default,
|
|
114
|
+
typename Difference = use_default
|
|
115
|
+
>
|
|
116
|
+
class iterator_adaptor :
|
|
117
|
+
public detail::iterator_adaptor_base_t<
|
|
118
|
+
Derived, Base, Value, Traversal, Reference, Difference
|
|
119
|
+
>
|
|
120
|
+
{
|
|
121
|
+
friend class iterator_core_access;
|
|
33
122
|
|
|
34
|
-
|
|
35
|
-
|
|
123
|
+
protected:
|
|
124
|
+
using super_t = detail::iterator_adaptor_base_t<
|
|
125
|
+
Derived, Base, Value, Traversal, Reference, Difference
|
|
126
|
+
>;
|
|
36
127
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// explicitly in order to specify that the default should be used.
|
|
40
|
-
using boost::use_default;
|
|
128
|
+
public:
|
|
129
|
+
using base_type = Base;
|
|
41
130
|
|
|
42
|
-
|
|
131
|
+
iterator_adaptor() = default;
|
|
43
132
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
struct is_convertible<use_default,To>
|
|
49
|
-
: mpl::false_ {};
|
|
133
|
+
explicit iterator_adaptor(Base const& iter) :
|
|
134
|
+
m_iterator(iter)
|
|
135
|
+
{
|
|
136
|
+
}
|
|
50
137
|
|
|
51
|
-
|
|
138
|
+
base_type const& base() const { return m_iterator; }
|
|
52
139
|
|
|
53
|
-
|
|
54
|
-
|
|
140
|
+
protected:
|
|
141
|
+
// for convenience in derived classes
|
|
142
|
+
using iterator_adaptor_ = iterator_adaptor< Derived, Base, Value, Traversal, Reference, Difference >;
|
|
55
143
|
|
|
56
144
|
//
|
|
57
|
-
//
|
|
58
|
-
// This can be an incomplete type, as only pointers to
|
|
59
|
-
// enable_if_convertible< ... >::type are used.
|
|
60
|
-
// We could have used void for this, but conversion to
|
|
61
|
-
// void* is just to easy.
|
|
145
|
+
// lvalue access to the Base object for Derived
|
|
62
146
|
//
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
// {
|
|
78
|
-
// public:
|
|
79
|
-
//
|
|
80
|
-
// ...
|
|
81
|
-
//
|
|
82
|
-
// template <class OtherIterator>
|
|
83
|
-
// adapted_iterator(
|
|
84
|
-
// OtherIterator const& it
|
|
85
|
-
// , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0);
|
|
86
|
-
//
|
|
87
|
-
// ...
|
|
88
|
-
// };
|
|
89
|
-
//
|
|
90
|
-
// enable_if_convertible is used to remove those overloads from the overload
|
|
91
|
-
// set that cannot be instantiated. For all practical purposes only overloads
|
|
92
|
-
// for constant/mutable interaction will remain. This has the advantage that
|
|
93
|
-
// meta functions like boost::is_convertible do not return false positives,
|
|
94
|
-
// as they can only look at the signature of the conversion constructor
|
|
95
|
-
// and not at the actual instantiation.
|
|
96
|
-
//
|
|
97
|
-
// enable_if_interoperable can be safely used in user code. It falls back to
|
|
98
|
-
// always enabled for compilers that don't support enable_if or is_convertible.
|
|
99
|
-
// There is no need for compiler specific workarounds in user code.
|
|
100
|
-
//
|
|
101
|
-
// The operators implementation relies on boost::is_convertible not returning
|
|
102
|
-
// false positives for user/library defined iterator types. See comments
|
|
103
|
-
// on operator implementation for consequences.
|
|
104
|
-
//
|
|
105
|
-
# if defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_SFINAE)
|
|
106
|
-
|
|
107
|
-
template <class From, class To>
|
|
108
|
-
struct enable_if_convertible
|
|
109
|
-
{
|
|
110
|
-
typedef boost::iterators::detail::enable_type type;
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
# elif BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292))
|
|
114
|
-
|
|
115
|
-
// For some reason vc7.1 needs us to "cut off" instantiation
|
|
116
|
-
// of is_convertible in a few cases.
|
|
117
|
-
template<typename From, typename To>
|
|
118
|
-
struct enable_if_convertible
|
|
119
|
-
: iterators::enable_if<
|
|
120
|
-
mpl::or_<
|
|
121
|
-
is_same<From,To>
|
|
122
|
-
, is_convertible<From, To>
|
|
123
|
-
>
|
|
124
|
-
, boost::iterators::detail::enable_type
|
|
125
|
-
>
|
|
126
|
-
{};
|
|
127
|
-
|
|
128
|
-
# else
|
|
129
|
-
|
|
130
|
-
template<typename From, typename To>
|
|
131
|
-
struct enable_if_convertible
|
|
132
|
-
: iterators::enable_if<
|
|
133
|
-
is_convertible<From, To>
|
|
134
|
-
, boost::iterators::detail::enable_type
|
|
135
|
-
>
|
|
136
|
-
{};
|
|
137
|
-
|
|
138
|
-
# endif
|
|
139
|
-
|
|
140
|
-
//
|
|
141
|
-
// Default template argument handling for iterator_adaptor
|
|
142
|
-
//
|
|
143
|
-
namespace detail
|
|
144
|
-
{
|
|
145
|
-
// If T is use_default, return the result of invoking
|
|
146
|
-
// DefaultNullaryFn, otherwise return T.
|
|
147
|
-
template <class T, class DefaultNullaryFn>
|
|
148
|
-
struct ia_dflt_help
|
|
149
|
-
: mpl::eval_if<
|
|
150
|
-
is_same<T, use_default>
|
|
151
|
-
, DefaultNullaryFn
|
|
152
|
-
, mpl::identity<T>
|
|
153
|
-
>
|
|
147
|
+
Base& base_reference() { return m_iterator; }
|
|
148
|
+
Base const& base_reference() const { return m_iterator; }
|
|
149
|
+
|
|
150
|
+
private:
|
|
151
|
+
//
|
|
152
|
+
// Core iterator interface for iterator_facade. This is private
|
|
153
|
+
// to prevent temptation for Derived classes to use it, which
|
|
154
|
+
// will often result in an error. Derived classes should use
|
|
155
|
+
// base_reference(), above, to get direct access to m_iterator.
|
|
156
|
+
//
|
|
157
|
+
typename super_t::reference dereference() const { return *m_iterator; }
|
|
158
|
+
|
|
159
|
+
template< typename OtherDerived, typename OtherIterator, typename V, typename C, typename R, typename D >
|
|
160
|
+
bool equal(iterator_adaptor< OtherDerived, OtherIterator, V, C, R, D > const& x) const
|
|
154
161
|
{
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
, class Difference
|
|
166
|
-
>
|
|
167
|
-
struct iterator_adaptor_base
|
|
162
|
+
// Maybe readd with same_distance
|
|
163
|
+
// BOOST_STATIC_ASSERT(
|
|
164
|
+
// (detail::same_category_and_difference<Derived,OtherDerived>::value)
|
|
165
|
+
// );
|
|
166
|
+
return m_iterator == x.base();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
using my_traversal = typename iterator_category_to_traversal< typename super_t::iterator_category >::type;
|
|
170
|
+
|
|
171
|
+
void advance(typename super_t::difference_type n)
|
|
168
172
|
{
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
, mpl::eval_if<
|
|
176
|
-
is_same<Reference,use_default>
|
|
177
|
-
, iterator_value<Base>
|
|
178
|
-
, remove_reference<Reference>
|
|
179
|
-
>
|
|
180
|
-
>::type
|
|
181
|
-
# else
|
|
182
|
-
, typename boost::iterators::detail::ia_dflt_help<
|
|
183
|
-
Value, iterator_value<Base>
|
|
184
|
-
>::type
|
|
185
|
-
# endif
|
|
186
|
-
|
|
187
|
-
, typename boost::iterators::detail::ia_dflt_help<
|
|
188
|
-
Traversal
|
|
189
|
-
, iterator_traversal<Base>
|
|
190
|
-
>::type
|
|
191
|
-
|
|
192
|
-
, typename boost::iterators::detail::ia_dflt_help<
|
|
193
|
-
Reference
|
|
194
|
-
, mpl::eval_if<
|
|
195
|
-
is_same<Value,use_default>
|
|
196
|
-
, iterator_reference<Base>
|
|
197
|
-
, add_reference<Value>
|
|
198
|
-
>
|
|
199
|
-
>::type
|
|
200
|
-
|
|
201
|
-
, typename boost::iterators::detail::ia_dflt_help<
|
|
202
|
-
Difference, iterator_difference<Base>
|
|
203
|
-
>::type
|
|
204
|
-
>
|
|
205
|
-
type;
|
|
206
|
-
};
|
|
173
|
+
static_assert(detail::is_traversal_at_least< my_traversal, random_access_traversal_tag >::value,
|
|
174
|
+
"Iterator must support random access traversal.");
|
|
175
|
+
m_iterator += n;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
void increment() { ++m_iterator; }
|
|
207
179
|
|
|
208
|
-
|
|
209
|
-
template <class Tr1, class Tr2>
|
|
210
|
-
inline void iterator_adaptor_assert_traversal ()
|
|
180
|
+
void decrement()
|
|
211
181
|
{
|
|
212
|
-
|
|
182
|
+
static_assert(detail::is_traversal_at_least< my_traversal, bidirectional_traversal_tag >::value,
|
|
183
|
+
"Iterator must support bidirectional traversal.");
|
|
184
|
+
--m_iterator;
|
|
213
185
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
// versions of iterator_adaptor The idea is that when the user needs
|
|
221
|
-
// to fiddle with the reference type it is highly likely that the
|
|
222
|
-
// iterator category has to be adjusted as well. Any of the
|
|
223
|
-
// following four template arguments may be ommitted or explicitly
|
|
224
|
-
// replaced by use_default.
|
|
225
|
-
//
|
|
226
|
-
// Value - if supplied, the value_type of the resulting iterator, unless
|
|
227
|
-
// const. If const, a conforming compiler strips constness for the
|
|
228
|
-
// value_type. If not supplied, iterator_traits<Base>::value_type is used
|
|
229
|
-
//
|
|
230
|
-
// Category - the traversal category of the resulting iterator. If not
|
|
231
|
-
// supplied, iterator_traversal<Base>::type is used.
|
|
232
|
-
//
|
|
233
|
-
// Reference - the reference type of the resulting iterator, and in
|
|
234
|
-
// particular, the result type of operator*(). If not supplied but
|
|
235
|
-
// Value is supplied, Value& is used. Otherwise
|
|
236
|
-
// iterator_traits<Base>::reference is used.
|
|
237
|
-
//
|
|
238
|
-
// Difference - the difference_type of the resulting iterator. If not
|
|
239
|
-
// supplied, iterator_traits<Base>::difference_type is used.
|
|
240
|
-
//
|
|
241
|
-
template <
|
|
242
|
-
class Derived
|
|
243
|
-
, class Base
|
|
244
|
-
, class Value = use_default
|
|
245
|
-
, class Traversal = use_default
|
|
246
|
-
, class Reference = use_default
|
|
247
|
-
, class Difference = use_default
|
|
248
|
-
>
|
|
249
|
-
class iterator_adaptor
|
|
250
|
-
: public boost::iterators::detail::iterator_adaptor_base<
|
|
251
|
-
Derived, Base, Value, Traversal, Reference, Difference
|
|
252
|
-
>::type
|
|
253
|
-
{
|
|
254
|
-
friend class iterator_core_access;
|
|
255
|
-
|
|
256
|
-
protected:
|
|
257
|
-
typedef typename boost::iterators::detail::iterator_adaptor_base<
|
|
258
|
-
Derived, Base, Value, Traversal, Reference, Difference
|
|
259
|
-
>::type super_t;
|
|
260
|
-
public:
|
|
261
|
-
iterator_adaptor() {}
|
|
262
|
-
|
|
263
|
-
explicit iterator_adaptor(Base const &iter)
|
|
264
|
-
: m_iterator(iter)
|
|
265
|
-
{
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
typedef Base base_type;
|
|
269
|
-
|
|
270
|
-
Base const& base() const
|
|
271
|
-
{ return m_iterator; }
|
|
272
|
-
|
|
273
|
-
protected:
|
|
274
|
-
// for convenience in derived classes
|
|
275
|
-
typedef iterator_adaptor<Derived,Base,Value,Traversal,Reference,Difference> iterator_adaptor_;
|
|
276
|
-
|
|
277
|
-
//
|
|
278
|
-
// lvalue access to the Base object for Derived
|
|
279
|
-
//
|
|
280
|
-
Base const& base_reference() const
|
|
281
|
-
{ return m_iterator; }
|
|
282
|
-
|
|
283
|
-
Base& base_reference()
|
|
284
|
-
{ return m_iterator; }
|
|
285
|
-
|
|
286
|
-
private:
|
|
287
|
-
//
|
|
288
|
-
// Core iterator interface for iterator_facade. This is private
|
|
289
|
-
// to prevent temptation for Derived classes to use it, which
|
|
290
|
-
// will often result in an error. Derived classes should use
|
|
291
|
-
// base_reference(), above, to get direct access to m_iterator.
|
|
292
|
-
//
|
|
293
|
-
typename super_t::reference dereference() const
|
|
294
|
-
{ return *m_iterator; }
|
|
295
|
-
|
|
296
|
-
template <
|
|
297
|
-
class OtherDerived, class OtherIterator, class V, class C, class R, class D
|
|
298
|
-
>
|
|
299
|
-
bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& x) const
|
|
300
|
-
{
|
|
186
|
+
|
|
187
|
+
template< typename OtherDerived, typename OtherIterator, typename V, typename C, typename R, typename D >
|
|
188
|
+
typename super_t::difference_type distance_to(iterator_adaptor< OtherDerived, OtherIterator, V, C, R, D > const& y) const
|
|
189
|
+
{
|
|
190
|
+
static_assert(detail::is_traversal_at_least< my_traversal, random_access_traversal_tag >::value,
|
|
191
|
+
"Super iterator must support random access traversal.");
|
|
301
192
|
// Maybe readd with same_distance
|
|
302
193
|
// BOOST_STATIC_ASSERT(
|
|
303
194
|
// (detail::same_category_and_difference<Derived,OtherDerived>::value)
|
|
304
195
|
// );
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
# define BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(cat) \
|
|
313
|
-
boost::iterators::detail::iterator_adaptor_assert_traversal<my_traversal, cat>();
|
|
314
|
-
|
|
315
|
-
void advance(typename super_t::difference_type n)
|
|
316
|
-
{
|
|
317
|
-
BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag)
|
|
318
|
-
m_iterator += n;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
void increment() { ++m_iterator; }
|
|
322
|
-
|
|
323
|
-
void decrement()
|
|
324
|
-
{
|
|
325
|
-
BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(bidirectional_traversal_tag)
|
|
326
|
-
--m_iterator;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
template <
|
|
330
|
-
class OtherDerived, class OtherIterator, class V, class C, class R, class D
|
|
331
|
-
>
|
|
332
|
-
typename super_t::difference_type distance_to(
|
|
333
|
-
iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& y) const
|
|
334
|
-
{
|
|
335
|
-
BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag)
|
|
336
|
-
// Maybe readd with same_distance
|
|
337
|
-
// BOOST_STATIC_ASSERT(
|
|
338
|
-
// (detail::same_category_and_difference<Derived,OtherDerived>::value)
|
|
339
|
-
// );
|
|
340
|
-
return y.base() - m_iterator;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
# undef BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL
|
|
344
|
-
|
|
345
|
-
private: // data members
|
|
346
|
-
Base m_iterator;
|
|
347
|
-
};
|
|
196
|
+
return y.base() - m_iterator;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
private: // data members
|
|
200
|
+
Base m_iterator;
|
|
201
|
+
};
|
|
348
202
|
|
|
349
203
|
} // namespace iterators
|
|
350
204
|
|
|
351
205
|
using iterators::iterator_adaptor;
|
|
352
|
-
using iterators::enable_if_convertible;
|
|
353
206
|
|
|
354
207
|
} // namespace boost
|
|
355
208
|
|