passenger 5.1.4 → 5.1.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.editorconfig +9 -0
- data/CHANGELOG +9 -0
- data/build/cxx_tests.rb +11 -1
- data/build/documentation.rb +0 -32
- data/build/support/cxx_dependency_map.rb +602 -2
- data/build/test_basics.rb +3 -3
- data/dev/boost-patches/0001-Patch-boost-thread-so-that-oxt-thread-can-use-it.patch +48 -0
- data/dev/boost-patches/0002-Make-boost-thread_interrupted-derive-from-oxt-tracab.patch +33 -0
- data/dev/boost-patches/0003-Disable-a-Clang-pragma-to-prevent-warnings-on-OS-X.patch +25 -0
- data/dev/ci/README.md +121 -0
- data/dev/ci/lib/functions.sh +129 -0
- data/dev/ci/lib/set-container-envvars.sh +46 -0
- data/dev/ci/lib/setup-container.sh +43 -0
- data/dev/ci/run-tests-natively +24 -0
- data/dev/ci/run-tests-with-docker +42 -0
- data/dev/ci/scripts/debug-console-wrapper.sh +27 -0
- data/dev/ci/scripts/docker-entrypoint-stage2.sh +17 -0
- data/dev/ci/scripts/docker-entrypoint.sh +17 -0
- data/dev/ci/scripts/inituidgid +17 -0
- data/dev/ci/scripts/run-tests-natively-stage2.sh +17 -0
- data/dev/ci/scripts/setup-host-natively.sh +11 -0
- data/dev/ci/setup-host +50 -0
- data/dev/ci/tests/apache2/run +6 -0
- data/dev/ci/tests/apache2/setup +4 -0
- data/dev/ci/tests/cxx/run +9 -0
- data/dev/ci/tests/cxx/setup +4 -0
- data/dev/ci/tests/nginx-dynamic/run +20 -0
- data/dev/ci/tests/nginx-dynamic/setup +4 -0
- data/dev/ci/tests/nginx/run +5 -0
- data/dev/ci/tests/nginx/setup +4 -0
- data/dev/ci/tests/nodejs/run +4 -0
- data/dev/ci/tests/nodejs/setup +4 -0
- data/dev/ci/tests/ruby/run +4 -0
- data/dev/ci/tests/ruby/setup +4 -0
- data/dev/ci/tests/source-packaging/run +4 -0
- data/dev/ci/tests/source-packaging/setup +4 -0
- data/dev/ci/tests/standalone/run +4 -0
- data/dev/ci/tests/standalone/setup +4 -0
- data/dev/copy_boost_headers +8 -2
- data/src/agent/Core/ApiServer.h +11 -5
- data/src/agent/Core/Controller.h +12 -46
- data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
- data/src/agent/Core/Controller/Config.h +369 -0
- data/src/agent/Core/Controller/ForwardResponse.cpp +4 -4
- data/src/agent/Core/Controller/Hooks.cpp +15 -3
- data/src/agent/Core/Controller/Implementation.cpp +1 -1
- data/src/agent/Core/Controller/InitRequest.cpp +28 -39
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +25 -60
- data/src/agent/Core/Controller/InternalUtils.cpp +0 -16
- data/src/agent/Core/Controller/Miscellaneous.cpp +0 -17
- data/src/agent/Core/Controller/Request.h +2 -0
- data/src/agent/Core/Controller/SendRequest.cpp +4 -4
- data/src/agent/Core/Controller/{StateInspectionAndConfiguration.cpp → StateInspection.cpp} +0 -22
- data/src/agent/Core/Controller/TurboCaching.h +11 -10
- data/src/agent/Core/CoreMain.cpp +16 -6
- data/src/agent/Core/ResponseCache.h +3 -3
- data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -3
- data/src/agent/Core/SpawningKit/Spawner.h +7 -3
- data/src/agent/UstRouter/ApiServer.h +3 -2
- data/src/agent/UstRouter/Controller.h +66 -32
- data/src/agent/UstRouter/UstRouterMain.cpp +10 -2
- data/src/agent/Watchdog/ApiServer.h +3 -2
- data/src/agent/Watchdog/WatchdogMain.cpp +3 -1
- data/src/apache2_module/ConfigurationCommands.cpp +1 -1
- data/src/cxx_supportlib/ConfigKit/Common.h +125 -0
- data/src/cxx_supportlib/ConfigKit/ConfigKit.h +34 -0
- data/src/cxx_supportlib/ConfigKit/README.md +895 -0
- data/src/cxx_supportlib/ConfigKit/Schema.h +331 -0
- data/src/cxx_supportlib/ConfigKit/Store.h +385 -0
- data/src/cxx_supportlib/ConfigKit/TableTranslator.h +185 -0
- data/src/cxx_supportlib/ConfigKit/Utils.h +141 -0
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +81 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Crypto.cpp +2 -2
- data/src/cxx_supportlib/Logging.h +0 -35
- data/src/cxx_supportlib/ServerKit/HttpServer.h +35 -16
- data/src/cxx_supportlib/ServerKit/Server.h +65 -25
- data/src/cxx_supportlib/oxt/macros.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +53 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +28 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +90 -18
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +35 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/compaq_cxx.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +29 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sgi_mipspro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +44 -16
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +33 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -27
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +62 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +39 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +49 -32
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +175 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +223 -98
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +88 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +4 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +45 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +205 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +290 -181
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +320 -46
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +91 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +491 -120
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +399 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +19 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +117 -59
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +33 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +414 -70
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +134 -117
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +202 -99
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +217 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +29 -27
- data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +27 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +25 -3
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +114 -1
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +116 -142
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +57 -69
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +35 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +37 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +209 -72
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +58 -45
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +83 -57
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +70 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +22 -21
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +29 -28
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +33 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +19 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +21 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +103 -29
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +295 -211
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +20 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +22 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +43 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +96 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +102 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +48 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +20 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +167 -23
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +100 -46
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -27
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +30 -14
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +35 -36
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +6 -28
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +20 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +2437 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +127 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +637 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -116
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +227 -32
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +30 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +84 -80
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +14 -20
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +32 -33
- data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +49 -49
- data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +197 -255
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +1059 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +372 -554
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +16 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/cat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/to_list.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +102 -87
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +45 -21
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +5 -14
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +116 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1004 -159
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +4 -58
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +28 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +52 -144
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +120 -450
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +70 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +22 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +163 -55
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/locks.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_functors.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +265 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +272 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +21 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +40 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4986 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +1814 -1255
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1498 -1161
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -44
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/utility/compare_pointees.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +39 -22
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +690 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view_fwd.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/helper-scripts/crash-watch.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -12
- metadata +77 -38
- data/dev/ci/inituidgid +0 -24
- data/dev/ci/run_jenkins.sh +0 -70
- data/dev/ci/run_travis.sh +0 -314
- data/doc/Design and Architecture.html +0 -2421
- data/doc/Design and Architecture.txt +0 -511
- data/doc/Security of user switching support.html +0 -1833
- data/doc/Users guide Apache.html +0 -3101
- data/doc/Users guide Apache.idmap.txt +0 -451
- data/doc/Users guide Apache.txt +0 -534
- data/doc/Users guide Nginx.html +0 -3026
- data/doc/Users guide Nginx.idmap.txt +0 -431
- data/doc/Users guide Nginx.txt +0 -451
- data/doc/Users guide Standalone.html +0 -2092
- data/doc/Users guide Standalone.idmap.txt +0 -137
- data/doc/Users guide Standalone.txt +0 -81
- data/doc/Users guide.html +0 -1606
- data/doc/Users guide.txt +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -383
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +0 -318
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +0 -214
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +0 -1128
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +0 -928
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +0 -686
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +0 -188
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +0 -873
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +0 -628
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +0 -266
@@ -25,6 +25,7 @@
|
|
25
25
|
#endif
|
26
26
|
|
27
27
|
#include <boost/move/detail/config_begin.hpp>
|
28
|
+
#include <boost/move/detail/workaround.hpp> //forceinline
|
28
29
|
#include <boost/move/utility_core.hpp>
|
29
30
|
#include <boost/move/traits.hpp>
|
30
31
|
|
@@ -39,7 +40,7 @@
|
|
39
40
|
//////////////////////////////////////////////////////////////////////////////
|
40
41
|
|
41
42
|
template <class T>
|
42
|
-
|
43
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c
|
43
44
|
< enable_move_utility_emulation<T>::value && !has_move_emulation_enabled<T>::value
|
44
45
|
, typename ::boost::move_detail::add_const<T>::type &
|
45
46
|
>::type
|
@@ -49,7 +50,7 @@
|
|
49
50
|
}
|
50
51
|
|
51
52
|
template <class T>
|
52
|
-
|
53
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c
|
53
54
|
< enable_move_utility_emulation<T>::value && has_move_emulation_enabled<T>::value
|
54
55
|
&& ::boost::move_detail::is_nothrow_move_constructible_or_uncopyable<T>::value, rv<T>&>::type
|
55
56
|
move_if_noexcept(T& x) BOOST_NOEXCEPT
|
@@ -58,7 +59,7 @@
|
|
58
59
|
}
|
59
60
|
|
60
61
|
template <class T>
|
61
|
-
|
62
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c
|
62
63
|
< enable_move_utility_emulation<T>::value && has_move_emulation_enabled<T>::value
|
63
64
|
&& ::boost::move_detail::is_nothrow_move_constructible_or_uncopyable<T>::value
|
64
65
|
, rv<T>&
|
@@ -69,7 +70,7 @@
|
|
69
70
|
}
|
70
71
|
|
71
72
|
template <class T>
|
72
|
-
|
73
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c
|
73
74
|
< enable_move_utility_emulation<T>::value && has_move_emulation_enabled<T>::value
|
74
75
|
&& !::boost::move_detail::is_nothrow_move_constructible_or_uncopyable<T>::value
|
75
76
|
, typename ::boost::move_detail::add_const<T>::type &
|
@@ -80,7 +81,7 @@
|
|
80
81
|
}
|
81
82
|
|
82
83
|
template <class T>
|
83
|
-
|
84
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c
|
84
85
|
< enable_move_utility_emulation<T>::value && has_move_emulation_enabled<T>::value
|
85
86
|
&& !::boost::move_detail::is_nothrow_move_constructible_or_uncopyable<T>::value
|
86
87
|
, typename ::boost::move_detail::add_const<T>::type &
|
@@ -125,13 +126,13 @@
|
|
125
126
|
#else //BOOST_MOVE_DOXYGEN_INVOKED
|
126
127
|
|
127
128
|
template <class T>
|
128
|
-
typename ::boost::move_detail::enable_if_c
|
129
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c
|
129
130
|
< ::boost::move_detail::is_nothrow_move_constructible_or_uncopyable<T>::value, T&&>::type
|
130
131
|
move_if_noexcept(T& x) BOOST_NOEXCEPT
|
131
132
|
{ return ::boost::move(x); }
|
132
133
|
|
133
134
|
template <class T>
|
134
|
-
typename ::boost::move_detail::enable_if_c
|
135
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_c
|
135
136
|
< !::boost::move_detail::is_nothrow_move_constructible_or_uncopyable<T>::value, const T&>::type
|
136
137
|
move_if_noexcept(T& x) BOOST_NOEXCEPT
|
137
138
|
{ return x; }
|
@@ -26,6 +26,7 @@
|
|
26
26
|
#endif
|
27
27
|
|
28
28
|
#include <boost/move/detail/config_begin.hpp>
|
29
|
+
#include <boost/move/detail/workaround.hpp> //forceinline
|
29
30
|
#include <boost/move/core.hpp>
|
30
31
|
#include <boost/move/detail/meta_utils.hpp>
|
31
32
|
#include <boost/static_assert.hpp>
|
@@ -47,7 +48,7 @@
|
|
47
48
|
//////////////////////////////////////////////////////////////////////////////
|
48
49
|
|
49
50
|
template <class T>
|
50
|
-
|
51
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
51
52
|
< T &
|
52
53
|
, enable_move_utility_emulation<T>
|
53
54
|
, has_move_emulation_disabled<T>
|
@@ -58,7 +59,7 @@
|
|
58
59
|
}
|
59
60
|
|
60
61
|
template <class T>
|
61
|
-
|
62
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
62
63
|
< rv<T>&
|
63
64
|
, enable_move_utility_emulation<T>
|
64
65
|
, has_move_emulation_enabled<T>
|
@@ -69,7 +70,7 @@
|
|
69
70
|
}
|
70
71
|
|
71
72
|
template <class T>
|
72
|
-
|
73
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
73
74
|
< rv<T>&
|
74
75
|
, enable_move_utility_emulation<T>
|
75
76
|
, has_move_emulation_enabled<T>
|
@@ -86,7 +87,7 @@
|
|
86
87
|
//////////////////////////////////////////////////////////////////////////////
|
87
88
|
|
88
89
|
template <class T>
|
89
|
-
|
90
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
90
91
|
< T &
|
91
92
|
, enable_move_utility_emulation<T>
|
92
93
|
, ::boost::move_detail::is_rv<T>
|
@@ -97,7 +98,7 @@
|
|
97
98
|
}
|
98
99
|
|
99
100
|
template <class T>
|
100
|
-
|
101
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
101
102
|
< const T &
|
102
103
|
, enable_move_utility_emulation<T>
|
103
104
|
, ::boost::move_detail::is_not_rv<T>
|
@@ -114,7 +115,7 @@
|
|
114
115
|
//////////////////////////////////////////////////////////////////////////////
|
115
116
|
|
116
117
|
template <class T>
|
117
|
-
|
118
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
118
119
|
< T &
|
119
120
|
, enable_move_utility_emulation<T>
|
120
121
|
, ::boost::move_detail::is_rv<T>
|
@@ -125,7 +126,7 @@
|
|
125
126
|
}
|
126
127
|
|
127
128
|
template <class T>
|
128
|
-
|
129
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
129
130
|
< typename ::boost::move_detail::add_lvalue_reference<T>::type
|
130
131
|
, enable_move_utility_emulation<T>
|
131
132
|
, ::boost::move_detail::is_not_rv<T>
|
@@ -140,7 +141,7 @@
|
|
140
141
|
}
|
141
142
|
|
142
143
|
template <class T>
|
143
|
-
|
144
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::enable_if_and
|
144
145
|
< rv<T>&
|
145
146
|
, enable_move_utility_emulation<T>
|
146
147
|
, ::boost::move_detail::is_not_rv<T>
|
@@ -202,13 +203,13 @@
|
|
202
203
|
|
203
204
|
//Old move approach, lvalues could bind to rvalue references
|
204
205
|
template <class T>
|
205
|
-
|
206
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::remove_reference<T>::type && move(T&& t) BOOST_NOEXCEPT
|
206
207
|
{ return t; }
|
207
208
|
|
208
209
|
#else //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES
|
209
210
|
|
210
211
|
template <class T>
|
211
|
-
|
212
|
+
BOOST_MOVE_FORCEINLINE typename ::boost::move_detail::remove_reference<T>::type && move(T&& t) BOOST_NOEXCEPT
|
212
213
|
{ return static_cast<typename ::boost::move_detail::remove_reference<T>::type &&>(t); }
|
213
214
|
|
214
215
|
#endif //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES
|
@@ -238,17 +239,17 @@
|
|
238
239
|
//Old move approach, lvalues could bind to rvalue references
|
239
240
|
|
240
241
|
template <class T>
|
241
|
-
|
242
|
+
BOOST_MOVE_FORCEINLINE T&& forward(typename ::boost::move_detail::identity<T>::type&& t) BOOST_NOEXCEPT
|
242
243
|
{ return t; }
|
243
244
|
|
244
245
|
#else //Old move
|
245
246
|
|
246
247
|
template <class T>
|
247
|
-
|
248
|
+
BOOST_MOVE_FORCEINLINE T&& forward(typename ::boost::move_detail::remove_reference<T>::type& t) BOOST_NOEXCEPT
|
248
249
|
{ return static_cast<T&&>(t); }
|
249
250
|
|
250
251
|
template <class T>
|
251
|
-
|
252
|
+
BOOST_MOVE_FORCEINLINE T&& forward(typename ::boost::move_detail::remove_reference<T>::type&& t) BOOST_NOEXCEPT
|
252
253
|
{
|
253
254
|
//"boost::forward<T> error: 'T' is a lvalue reference, can't forward as rvalue.";
|
254
255
|
BOOST_STATIC_ASSERT(!boost::move_detail::is_lvalue_reference<T>::value);
|
@@ -273,17 +274,17 @@
|
|
273
274
|
//Old move approach, lvalues could bind to rvalue references
|
274
275
|
|
275
276
|
template <class T>
|
276
|
-
|
277
|
+
BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::identity<T>::type&& t) BOOST_NOEXCEPT
|
277
278
|
{ return t; }
|
278
279
|
|
279
280
|
#else //Old move
|
280
281
|
|
281
282
|
template <class T>
|
282
|
-
|
283
|
+
BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::remove_reference<T>::type& t) BOOST_NOEXCEPT
|
283
284
|
{ return static_cast<T&&>(t); }
|
284
285
|
|
285
286
|
template <class T>
|
286
|
-
|
287
|
+
BOOST_MOVE_FORCEINLINE T&& move_if_not_lvalue_reference(typename ::boost::move_detail::remove_reference<T>::type&& t) BOOST_NOEXCEPT
|
287
288
|
{
|
288
289
|
//"boost::forward<T> error: 'T' is a lvalue reference, can't forward as rvalue.";
|
289
290
|
BOOST_STATIC_ASSERT(!boost::move_detail::is_lvalue_reference<T>::value);
|
@@ -47,7 +47,10 @@ struct print
|
|
47
47
|
#endif
|
48
48
|
{
|
49
49
|
#if defined(__clang__)
|
50
|
+
# pragma clang diagnostic push
|
51
|
+
# pragma clang diagnostic ignored "-Wc++11-extensions"
|
50
52
|
const int m_x = 1 / (sizeof(T) - sizeof(T));
|
53
|
+
# pragma clang diagnostic pop
|
51
54
|
#elif defined(BOOST_MSVC)
|
52
55
|
enum { n = sizeof(T) + -1 };
|
53
56
|
#elif defined(__MWERKS__)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
|
2
|
-
// Copyright (C) 2014 Andrzej Krzemienski.
|
2
|
+
// Copyright (C) 2014, 2015 Andrzej Krzemienski.
|
3
3
|
//
|
4
4
|
// Distributed under the Boost Software License, Version 1.0.
|
5
5
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
@@ -1,5 +1,5 @@
|
|
1
1
|
// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
|
2
|
-
// Copyright (C) 2014 Andrzej Krzemienski.
|
2
|
+
// Copyright (C) 2014, 2015 Andrzej Krzemienski.
|
3
3
|
//
|
4
4
|
// Use, modification, and distribution is subject to the Boost Software
|
5
5
|
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
@@ -29,7 +29,7 @@ class none_t {};
|
|
29
29
|
struct none_t
|
30
30
|
{
|
31
31
|
struct init_tag{};
|
32
|
-
explicit none_t(init_tag){} // to
|
32
|
+
explicit none_t(init_tag){} // to disable default constructor
|
33
33
|
};
|
34
34
|
|
35
35
|
#endif // old implementation workarounds
|
@@ -37,4 +37,3 @@ struct none_t
|
|
37
37
|
} // namespace boost
|
38
38
|
|
39
39
|
#endif // header guard
|
40
|
-
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// Boost operators.hpp header file ----------------------------------------//
|
2
2
|
|
3
3
|
// (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
|
4
|
+
// (C) Copyright Daniel Frey 2002-2016.
|
4
5
|
// Distributed under the Boost Software License, Version 1.0. (See
|
5
6
|
// accompanying file LICENSE_1_0.txt or copy at
|
6
7
|
// http://www.boost.org/LICENSE_1_0.txt)
|
@@ -8,6 +9,8 @@
|
|
8
9
|
// See http://www.boost.org/libs/utility/operators.htm for documentation.
|
9
10
|
|
10
11
|
// Revision History
|
12
|
+
// 22 Feb 16 Added ADL protection, preserve old work-arounds in
|
13
|
+
// operators_v1.hpp and clean up this file. (Daniel Frey)
|
11
14
|
// 16 Dec 10 Limit warning suppression for 4284 to older versions of VC++
|
12
15
|
// (Matthew Bradbury, fixes #4432)
|
13
16
|
// 07 Aug 08 Added "euclidean" spelling. (Daniel Frey)
|
@@ -24,8 +27,8 @@
|
|
24
27
|
// additional classes for groups of related operators added;
|
25
28
|
// workaround for empty base class optimization
|
26
29
|
// bug of GCC 3.0 (Helmut Zeisel)
|
27
|
-
// 25 Jun 01 output_iterator_helper changes: removed default template
|
28
|
-
// parameters, added support for self-proxying, additional
|
30
|
+
// 25 Jun 01 output_iterator_helper changes: removed default template
|
31
|
+
// parameters, added support for self-proxying, additional
|
29
32
|
// documentation and tests (Aleksey Gurtovoy)
|
30
33
|
// 29 May 01 Added operator classes for << and >>. Added input and output
|
31
34
|
// iterator helper classes. Added classes to connect equality and
|
@@ -38,18 +41,18 @@
|
|
38
41
|
// 04 Jul 00 Fixed NO_OPERATORS_IN_NAMESPACE bugs, major cleanup and
|
39
42
|
// refactoring of compiler workarounds, additional documentation
|
40
43
|
// (Alexy Gurtovoy and Mark Rodgers with some help and prompting from
|
41
|
-
// Dave Abrahams)
|
44
|
+
// Dave Abrahams)
|
42
45
|
// 28 Jun 00 General cleanup and integration of bugfixes from Mark Rodgers and
|
43
46
|
// Jeremy Siek (Dave Abrahams)
|
44
47
|
// 20 Jun 00 Changes to accommodate Borland C++Builder 4 and Borland C++ 5.5
|
45
48
|
// (Mark Rodgers)
|
46
49
|
// 20 Jun 00 Minor fixes to the prior revision (Aleksey Gurtovoy)
|
47
50
|
// 10 Jun 00 Support for the base class chaining technique was added
|
48
|
-
// (Aleksey Gurtovoy). See documentation and the comments below
|
49
|
-
// for the details.
|
51
|
+
// (Aleksey Gurtovoy). See documentation and the comments below
|
52
|
+
// for the details.
|
50
53
|
// 12 Dec 99 Initial version with iterator operators (Jeremy Siek)
|
51
54
|
// 18 Nov 99 Change name "divideable" to "dividable", remove unnecessary
|
52
|
-
// specializations of dividable, subtractable, modable (Ed Brey)
|
55
|
+
// specializations of dividable, subtractable, modable (Ed Brey)
|
53
56
|
// 17 Nov 99 Add comments (Beman Dawes)
|
54
57
|
// Remove unnecessary specialization of operators<> (Ed Brey)
|
55
58
|
// 15 Nov 99 Fix less_than_comparable<T,U> second operand type for first two
|
@@ -60,8 +63,8 @@
|
|
60
63
|
// 10 Nov 99 Initial version
|
61
64
|
|
62
65
|
// 10 Jun 00:
|
63
|
-
// An additional optional template parameter was added to most of
|
64
|
-
// operator templates to support the base class chaining technique (see
|
66
|
+
// An additional optional template parameter was added to most of
|
67
|
+
// operator templates to support the base class chaining technique (see
|
65
68
|
// documentation for the details). Unfortunately, a straightforward
|
66
69
|
// implementation of this change would have broken compatibility with the
|
67
70
|
// previous version of the library by making it impossible to use the same
|
@@ -70,18 +73,24 @@
|
|
70
73
|
// issue at the cost of some simplicity.
|
71
74
|
//
|
72
75
|
// One of the complications is an existence of special auxiliary class template
|
73
|
-
// 'is_chained_base<>' (see '
|
76
|
+
// 'is_chained_base<>' (see 'operators_detail' namespace below), which is used
|
74
77
|
// to determine whether its template parameter is a library's operator template
|
75
|
-
// or not. You have to specialize 'is_chained_base<>' for each new
|
78
|
+
// or not. You have to specialize 'is_chained_base<>' for each new
|
76
79
|
// operator template you add to the library.
|
77
80
|
//
|
78
|
-
// However, most of the non-trivial implementation details are hidden behind
|
81
|
+
// However, most of the non-trivial implementation details are hidden behind
|
79
82
|
// several local macros defined below, and as soon as you understand them,
|
80
|
-
// you understand the whole library implementation.
|
83
|
+
// you understand the whole library implementation.
|
81
84
|
|
82
85
|
#ifndef BOOST_OPERATORS_HPP
|
83
86
|
#define BOOST_OPERATORS_HPP
|
84
87
|
|
88
|
+
// If old work-arounds are needed, refer to the preserved version without
|
89
|
+
// ADL protection.
|
90
|
+
#if defined(BOOST_NO_OPERATORS_IN_NAMESPACE) || defined(BOOST_USE_OPERATORS_V1)
|
91
|
+
#include "operators_v1.hpp"
|
92
|
+
#else
|
93
|
+
|
85
94
|
#include <cstddef>
|
86
95
|
#include <iterator>
|
87
96
|
|
@@ -93,35 +102,30 @@
|
|
93
102
|
#endif
|
94
103
|
|
95
104
|
#if BOOST_WORKAROUND(BOOST_MSVC, < 1600)
|
96
|
-
# pragma warning( disable : 4284 ) // complaint about return type of
|
105
|
+
# pragma warning( disable : 4284 ) // complaint about return type of
|
97
106
|
#endif // operator-> not begin a UDT
|
98
107
|
|
99
|
-
namespace boost {
|
100
|
-
namespace detail {
|
101
|
-
|
102
|
-
template <typename T> class empty_base {};
|
103
|
-
|
104
|
-
} // namespace detail
|
105
|
-
} // namespace boost
|
106
|
-
|
107
108
|
// In this section we supply the xxxx1 and xxxx2 forms of the operator
|
108
109
|
// templates, which are explicitly targeted at the 1-type-argument and
|
109
|
-
// 2-type-argument operator forms, respectively.
|
110
|
-
// when inline friend functions are overloaded in namespaces other than the
|
111
|
-
// global namespace. When BOOST_NO_OPERATORS_IN_NAMESPACE is defined, all of
|
112
|
-
// these templates must go in the global namespace.
|
110
|
+
// 2-type-argument operator forms, respectively.
|
113
111
|
|
114
|
-
#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
|
115
112
|
namespace boost
|
116
113
|
{
|
117
|
-
|
114
|
+
namespace operators_impl
|
115
|
+
{
|
116
|
+
namespace operators_detail
|
117
|
+
{
|
118
|
+
|
119
|
+
template <typename T> class empty_base {};
|
120
|
+
|
121
|
+
} // namespace operators_detail
|
118
122
|
|
119
123
|
// Basic operator classes (contributed by Dave Abrahams) ------------------//
|
120
124
|
|
121
125
|
// Note that friend functions defined in a class are implicitly inline.
|
122
126
|
// See the C++ std, 11.4 [class.friend] paragraph 5
|
123
127
|
|
124
|
-
template <class T, class U, class B = ::
|
128
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
125
129
|
struct less_than_comparable2 : B
|
126
130
|
{
|
127
131
|
friend bool operator<=(const T& x, const U& y) { return !static_cast<bool>(x > y); }
|
@@ -132,7 +136,7 @@ struct less_than_comparable2 : B
|
|
132
136
|
friend bool operator>=(const U& x, const T& y) { return !static_cast<bool>(y > x); }
|
133
137
|
};
|
134
138
|
|
135
|
-
template <class T, class B = ::
|
139
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
136
140
|
struct less_than_comparable1 : B
|
137
141
|
{
|
138
142
|
friend bool operator>(const T& x, const T& y) { return y < x; }
|
@@ -140,7 +144,7 @@ struct less_than_comparable1 : B
|
|
140
144
|
friend bool operator>=(const T& x, const T& y) { return !static_cast<bool>(x < y); }
|
141
145
|
};
|
142
146
|
|
143
|
-
template <class T, class U, class B = ::
|
147
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
144
148
|
struct equality_comparable2 : B
|
145
149
|
{
|
146
150
|
friend bool operator==(const U& y, const T& x) { return x == y; }
|
@@ -148,7 +152,7 @@ struct equality_comparable2 : B
|
|
148
152
|
friend bool operator!=(const T& y, const U& x) { return !static_cast<bool>(y == x); }
|
149
153
|
};
|
150
154
|
|
151
|
-
template <class T, class B = ::
|
155
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
152
156
|
struct equality_comparable1 : B
|
153
157
|
{
|
154
158
|
friend bool operator!=(const T& x, const T& y) { return !static_cast<bool>(x == y); }
|
@@ -166,39 +170,39 @@ struct equality_comparable1 : B
|
|
166
170
|
// If the compiler has no NRVO, this is the best symmetric
|
167
171
|
// implementation available.
|
168
172
|
|
169
|
-
#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP )
|
170
|
-
template <class T, class U, class B = ::
|
171
|
-
struct NAME##2 : B
|
172
|
-
{
|
173
|
-
friend T operator OP( const T& lhs, const U& rhs )
|
174
|
-
{ T nrv( lhs ); nrv OP##= rhs; return nrv; }
|
175
|
-
friend T operator OP( const U& lhs, const T& rhs )
|
176
|
-
{ T nrv( rhs ); nrv OP##= lhs; return nrv; }
|
177
|
-
};
|
178
|
-
|
179
|
-
template <class T, class B = ::
|
180
|
-
struct NAME##1 : B
|
181
|
-
{
|
182
|
-
friend T operator OP( const T& lhs, const T& rhs )
|
183
|
-
{ T nrv( lhs ); nrv OP##= rhs; return nrv; }
|
173
|
+
#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP ) \
|
174
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
175
|
+
struct NAME##2 : B \
|
176
|
+
{ \
|
177
|
+
friend T operator OP( const T& lhs, const U& rhs ) \
|
178
|
+
{ T nrv( lhs ); nrv OP##= rhs; return nrv; } \
|
179
|
+
friend T operator OP( const U& lhs, const T& rhs ) \
|
180
|
+
{ T nrv( rhs ); nrv OP##= lhs; return nrv; } \
|
181
|
+
}; \
|
182
|
+
\
|
183
|
+
template <class T, class B = operators_detail::empty_base<T> > \
|
184
|
+
struct NAME##1 : B \
|
185
|
+
{ \
|
186
|
+
friend T operator OP( const T& lhs, const T& rhs ) \
|
187
|
+
{ T nrv( lhs ); nrv OP##= rhs; return nrv; } \
|
184
188
|
};
|
185
189
|
|
186
190
|
#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP ) \
|
187
|
-
template <class T, class U, class B = ::
|
191
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
188
192
|
struct NAME##2 : B \
|
189
193
|
{ \
|
190
194
|
friend T operator OP( const T& lhs, const U& rhs ) \
|
191
195
|
{ T nrv( lhs ); nrv OP##= rhs; return nrv; } \
|
192
196
|
}; \
|
193
197
|
\
|
194
|
-
template <class T, class U, class B = ::
|
198
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
195
199
|
struct BOOST_OPERATOR2_LEFT(NAME) : B \
|
196
200
|
{ \
|
197
201
|
friend T operator OP( const U& lhs, const T& rhs ) \
|
198
202
|
{ T nrv( lhs ); nrv OP##= rhs; return nrv; } \
|
199
203
|
}; \
|
200
204
|
\
|
201
|
-
template <class T, class B = ::
|
205
|
+
template <class T, class B = operators_detail::empty_base<T> > \
|
202
206
|
struct NAME##1 : B \
|
203
207
|
{ \
|
204
208
|
friend T operator OP( const T& lhs, const T& rhs ) \
|
@@ -213,34 +217,34 @@ struct NAME##1 : B \
|
|
213
217
|
// optimization opportunities to the compiler :)
|
214
218
|
|
215
219
|
#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP ) \
|
216
|
-
template <class T, class U, class B = ::
|
220
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
217
221
|
struct NAME##2 : B \
|
218
222
|
{ \
|
219
223
|
friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
|
220
224
|
friend T operator OP( const U& lhs, T rhs ) { return rhs OP##= lhs; } \
|
221
225
|
}; \
|
222
226
|
\
|
223
|
-
template <class T, class B = ::
|
227
|
+
template <class T, class B = operators_detail::empty_base<T> > \
|
224
228
|
struct NAME##1 : B \
|
225
229
|
{ \
|
226
230
|
friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
|
227
231
|
};
|
228
232
|
|
229
233
|
#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP ) \
|
230
|
-
template <class T, class U, class B = ::
|
234
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
231
235
|
struct NAME##2 : B \
|
232
236
|
{ \
|
233
237
|
friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
|
234
238
|
}; \
|
235
239
|
\
|
236
|
-
template <class T, class U, class B = ::
|
240
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
237
241
|
struct BOOST_OPERATOR2_LEFT(NAME) : B \
|
238
242
|
{ \
|
239
243
|
friend T operator OP( const U& lhs, const T& rhs ) \
|
240
244
|
{ return T( lhs ) OP##= rhs; } \
|
241
245
|
}; \
|
242
246
|
\
|
243
|
-
template <class T, class B = ::
|
247
|
+
template <class T, class B = operators_detail::empty_base<T> > \
|
244
248
|
struct NAME##1 : B \
|
245
249
|
{ \
|
246
250
|
friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
|
@@ -263,7 +267,7 @@ BOOST_BINARY_OPERATOR_COMMUTATIVE( orable, | )
|
|
263
267
|
|
264
268
|
// incrementable and decrementable contributed by Jeremy Siek
|
265
269
|
|
266
|
-
template <class T, class B = ::
|
270
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
267
271
|
struct incrementable : B
|
268
272
|
{
|
269
273
|
friend T operator++(T& x, int)
|
@@ -276,7 +280,7 @@ private: // The use of this typedef works around a Borland bug
|
|
276
280
|
typedef T incrementable_type;
|
277
281
|
};
|
278
282
|
|
279
|
-
template <class T, class B = ::
|
283
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
280
284
|
struct decrementable : B
|
281
285
|
{
|
282
286
|
friend T operator--(T& x, int)
|
@@ -291,16 +295,16 @@ private: // The use of this typedef works around a Borland bug
|
|
291
295
|
|
292
296
|
// Iterator operator classes (contributed by Jeremy Siek) ------------------//
|
293
297
|
|
294
|
-
template <class T, class P, class B = ::
|
298
|
+
template <class T, class P, class B = operators_detail::empty_base<T> >
|
295
299
|
struct dereferenceable : B
|
296
300
|
{
|
297
301
|
P operator->() const
|
298
|
-
{
|
299
|
-
return &*static_cast<const T&>(*this);
|
302
|
+
{
|
303
|
+
return &*static_cast<const T&>(*this);
|
300
304
|
}
|
301
305
|
};
|
302
306
|
|
303
|
-
template <class T, class I, class R, class B = ::
|
307
|
+
template <class T, class I, class R, class B = operators_detail::empty_base<T> >
|
304
308
|
struct indexable : B
|
305
309
|
{
|
306
310
|
R operator[](I n) const
|
@@ -314,34 +318,34 @@ struct indexable : B
|
|
314
318
|
|
315
319
|
#if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
|
316
320
|
|
317
|
-
#define BOOST_BINARY_OPERATOR( NAME, OP )
|
318
|
-
template <class T, class U, class B = ::
|
319
|
-
struct NAME##2 : B
|
320
|
-
{
|
321
|
-
friend T operator OP( const T& lhs, const U& rhs )
|
322
|
-
{ T nrv( lhs ); nrv OP##= rhs; return nrv; }
|
323
|
-
};
|
324
|
-
|
325
|
-
template <class T, class B = ::
|
326
|
-
struct NAME##1 : B
|
327
|
-
{
|
328
|
-
friend T operator OP( const T& lhs, const T& rhs )
|
329
|
-
{ T nrv( lhs ); nrv OP##= rhs; return nrv; }
|
321
|
+
#define BOOST_BINARY_OPERATOR( NAME, OP ) \
|
322
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
323
|
+
struct NAME##2 : B \
|
324
|
+
{ \
|
325
|
+
friend T operator OP( const T& lhs, const U& rhs ) \
|
326
|
+
{ T nrv( lhs ); nrv OP##= rhs; return nrv; } \
|
327
|
+
}; \
|
328
|
+
\
|
329
|
+
template <class T, class B = operators_detail::empty_base<T> > \
|
330
|
+
struct NAME##1 : B \
|
331
|
+
{ \
|
332
|
+
friend T operator OP( const T& lhs, const T& rhs ) \
|
333
|
+
{ T nrv( lhs ); nrv OP##= rhs; return nrv; } \
|
330
334
|
};
|
331
335
|
|
332
336
|
#else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
|
333
337
|
|
334
|
-
#define BOOST_BINARY_OPERATOR( NAME, OP )
|
335
|
-
template <class T, class U, class B = ::
|
336
|
-
struct NAME##2 : B
|
337
|
-
{
|
338
|
-
friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; }
|
339
|
-
};
|
340
|
-
|
341
|
-
template <class T, class B = ::
|
342
|
-
struct NAME##1 : B
|
343
|
-
{
|
344
|
-
friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; }
|
338
|
+
#define BOOST_BINARY_OPERATOR( NAME, OP ) \
|
339
|
+
template <class T, class U, class B = operators_detail::empty_base<T> > \
|
340
|
+
struct NAME##2 : B \
|
341
|
+
{ \
|
342
|
+
friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
|
343
|
+
}; \
|
344
|
+
\
|
345
|
+
template <class T, class B = operators_detail::empty_base<T> > \
|
346
|
+
struct NAME##1 : B \
|
347
|
+
{ \
|
348
|
+
friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
|
345
349
|
};
|
346
350
|
|
347
351
|
#endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
|
@@ -351,7 +355,7 @@ BOOST_BINARY_OPERATOR( right_shiftable, >> )
|
|
351
355
|
|
352
356
|
#undef BOOST_BINARY_OPERATOR
|
353
357
|
|
354
|
-
template <class T, class U, class B = ::
|
358
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
355
359
|
struct equivalent2 : B
|
356
360
|
{
|
357
361
|
friend bool operator==(const T& x, const U& y)
|
@@ -360,7 +364,7 @@ struct equivalent2 : B
|
|
360
364
|
}
|
361
365
|
};
|
362
366
|
|
363
|
-
template <class T, class B = ::
|
367
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
364
368
|
struct equivalent1 : B
|
365
369
|
{
|
366
370
|
friend bool operator==(const T&x, const T&y)
|
@@ -369,7 +373,7 @@ struct equivalent1 : B
|
|
369
373
|
}
|
370
374
|
};
|
371
375
|
|
372
|
-
template <class T, class U, class B = ::
|
376
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
373
377
|
struct partially_ordered2 : B
|
374
378
|
{
|
375
379
|
friend bool operator<=(const T& x, const U& y)
|
@@ -386,7 +390,7 @@ struct partially_ordered2 : B
|
|
386
390
|
{ return static_cast<bool>(y < x) || static_cast<bool>(y == x); }
|
387
391
|
};
|
388
392
|
|
389
|
-
template <class T, class B = ::
|
393
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
390
394
|
struct partially_ordered1 : B
|
391
395
|
{
|
392
396
|
friend bool operator>(const T& x, const T& y)
|
@@ -399,161 +403,161 @@ struct partially_ordered1 : B
|
|
399
403
|
|
400
404
|
// Combined operator classes (contributed by Daryle Walker) ----------------//
|
401
405
|
|
402
|
-
template <class T, class U, class B = ::
|
406
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
403
407
|
struct totally_ordered2
|
404
408
|
: less_than_comparable2<T, U
|
405
409
|
, equality_comparable2<T, U, B
|
406
410
|
> > {};
|
407
411
|
|
408
|
-
template <class T, class B = ::
|
412
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
409
413
|
struct totally_ordered1
|
410
414
|
: less_than_comparable1<T
|
411
415
|
, equality_comparable1<T, B
|
412
416
|
> > {};
|
413
417
|
|
414
|
-
template <class T, class U, class B = ::
|
418
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
415
419
|
struct additive2
|
416
420
|
: addable2<T, U
|
417
421
|
, subtractable2<T, U, B
|
418
422
|
> > {};
|
419
423
|
|
420
|
-
template <class T, class B = ::
|
424
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
421
425
|
struct additive1
|
422
426
|
: addable1<T
|
423
427
|
, subtractable1<T, B
|
424
428
|
> > {};
|
425
429
|
|
426
|
-
template <class T, class U, class B = ::
|
430
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
427
431
|
struct multiplicative2
|
428
432
|
: multipliable2<T, U
|
429
433
|
, dividable2<T, U, B
|
430
434
|
> > {};
|
431
435
|
|
432
|
-
template <class T, class B = ::
|
436
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
433
437
|
struct multiplicative1
|
434
438
|
: multipliable1<T
|
435
439
|
, dividable1<T, B
|
436
440
|
> > {};
|
437
441
|
|
438
|
-
template <class T, class U, class B = ::
|
442
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
439
443
|
struct integer_multiplicative2
|
440
444
|
: multiplicative2<T, U
|
441
445
|
, modable2<T, U, B
|
442
446
|
> > {};
|
443
447
|
|
444
|
-
template <class T, class B = ::
|
448
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
445
449
|
struct integer_multiplicative1
|
446
450
|
: multiplicative1<T
|
447
451
|
, modable1<T, B
|
448
452
|
> > {};
|
449
453
|
|
450
|
-
template <class T, class U, class B = ::
|
454
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
451
455
|
struct arithmetic2
|
452
456
|
: additive2<T, U
|
453
457
|
, multiplicative2<T, U, B
|
454
458
|
> > {};
|
455
459
|
|
456
|
-
template <class T, class B = ::
|
460
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
457
461
|
struct arithmetic1
|
458
462
|
: additive1<T
|
459
463
|
, multiplicative1<T, B
|
460
464
|
> > {};
|
461
465
|
|
462
|
-
template <class T, class U, class B = ::
|
466
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
463
467
|
struct integer_arithmetic2
|
464
468
|
: additive2<T, U
|
465
469
|
, integer_multiplicative2<T, U, B
|
466
470
|
> > {};
|
467
471
|
|
468
|
-
template <class T, class B = ::
|
472
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
469
473
|
struct integer_arithmetic1
|
470
474
|
: additive1<T
|
471
475
|
, integer_multiplicative1<T, B
|
472
476
|
> > {};
|
473
477
|
|
474
|
-
template <class T, class U, class B = ::
|
478
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
475
479
|
struct bitwise2
|
476
480
|
: xorable2<T, U
|
477
481
|
, andable2<T, U
|
478
482
|
, orable2<T, U, B
|
479
483
|
> > > {};
|
480
484
|
|
481
|
-
template <class T, class B = ::
|
485
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
482
486
|
struct bitwise1
|
483
487
|
: xorable1<T
|
484
488
|
, andable1<T
|
485
489
|
, orable1<T, B
|
486
490
|
> > > {};
|
487
491
|
|
488
|
-
template <class T, class B = ::
|
492
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
489
493
|
struct unit_steppable
|
490
494
|
: incrementable<T
|
491
495
|
, decrementable<T, B
|
492
496
|
> > {};
|
493
497
|
|
494
|
-
template <class T, class U, class B = ::
|
498
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
495
499
|
struct shiftable2
|
496
500
|
: left_shiftable2<T, U
|
497
501
|
, right_shiftable2<T, U, B
|
498
502
|
> > {};
|
499
503
|
|
500
|
-
template <class T, class B = ::
|
504
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
501
505
|
struct shiftable1
|
502
506
|
: left_shiftable1<T
|
503
507
|
, right_shiftable1<T, B
|
504
508
|
> > {};
|
505
509
|
|
506
|
-
template <class T, class U, class B = ::
|
510
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
507
511
|
struct ring_operators2
|
508
512
|
: additive2<T, U
|
509
513
|
, subtractable2_left<T, U
|
510
514
|
, multipliable2<T, U, B
|
511
515
|
> > > {};
|
512
516
|
|
513
|
-
template <class T, class B = ::
|
517
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
514
518
|
struct ring_operators1
|
515
519
|
: additive1<T
|
516
520
|
, multipliable1<T, B
|
517
521
|
> > {};
|
518
522
|
|
519
|
-
template <class T, class U, class B = ::
|
523
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
520
524
|
struct ordered_ring_operators2
|
521
525
|
: ring_operators2<T, U
|
522
526
|
, totally_ordered2<T, U, B
|
523
527
|
> > {};
|
524
528
|
|
525
|
-
template <class T, class B = ::
|
529
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
526
530
|
struct ordered_ring_operators1
|
527
531
|
: ring_operators1<T
|
528
532
|
, totally_ordered1<T, B
|
529
533
|
> > {};
|
530
534
|
|
531
|
-
template <class T, class U, class B = ::
|
535
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
532
536
|
struct field_operators2
|
533
537
|
: ring_operators2<T, U
|
534
538
|
, dividable2<T, U
|
535
539
|
, dividable2_left<T, U, B
|
536
540
|
> > > {};
|
537
541
|
|
538
|
-
template <class T, class B = ::
|
542
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
539
543
|
struct field_operators1
|
540
544
|
: ring_operators1<T
|
541
545
|
, dividable1<T, B
|
542
546
|
> > {};
|
543
547
|
|
544
|
-
template <class T, class U, class B = ::
|
548
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
545
549
|
struct ordered_field_operators2
|
546
550
|
: field_operators2<T, U
|
547
551
|
, totally_ordered2<T, U, B
|
548
552
|
> > {};
|
549
553
|
|
550
|
-
template <class T, class B = ::
|
554
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
551
555
|
struct ordered_field_operators1
|
552
556
|
: field_operators1<T
|
553
557
|
, totally_ordered1<T, B
|
554
558
|
> > {};
|
555
559
|
|
556
|
-
template <class T, class U, class B = ::
|
560
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
557
561
|
struct euclidian_ring_operators2
|
558
562
|
: ring_operators2<T, U
|
559
563
|
, dividable2<T, U
|
@@ -562,26 +566,26 @@ struct euclidian_ring_operators2
|
|
562
566
|
, modable2_left<T, U, B
|
563
567
|
> > > > > {};
|
564
568
|
|
565
|
-
template <class T, class B = ::
|
569
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
566
570
|
struct euclidian_ring_operators1
|
567
571
|
: ring_operators1<T
|
568
572
|
, dividable1<T
|
569
573
|
, modable1<T, B
|
570
574
|
> > > {};
|
571
575
|
|
572
|
-
template <class T, class U, class B = ::
|
576
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
573
577
|
struct ordered_euclidian_ring_operators2
|
574
578
|
: totally_ordered2<T, U
|
575
579
|
, euclidian_ring_operators2<T, U, B
|
576
580
|
> > {};
|
577
581
|
|
578
|
-
template <class T, class B = ::
|
582
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
579
583
|
struct ordered_euclidian_ring_operators1
|
580
584
|
: totally_ordered1<T
|
581
585
|
, euclidian_ring_operators1<T, B
|
582
586
|
> > {};
|
583
587
|
|
584
|
-
template <class T, class U, class B = ::
|
588
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
585
589
|
struct euclidean_ring_operators2
|
586
590
|
: ring_operators2<T, U
|
587
591
|
, dividable2<T, U
|
@@ -590,43 +594,43 @@ struct euclidean_ring_operators2
|
|
590
594
|
, modable2_left<T, U, B
|
591
595
|
> > > > > {};
|
592
596
|
|
593
|
-
template <class T, class B = ::
|
597
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
594
598
|
struct euclidean_ring_operators1
|
595
599
|
: ring_operators1<T
|
596
600
|
, dividable1<T
|
597
601
|
, modable1<T, B
|
598
602
|
> > > {};
|
599
603
|
|
600
|
-
template <class T, class U, class B = ::
|
604
|
+
template <class T, class U, class B = operators_detail::empty_base<T> >
|
601
605
|
struct ordered_euclidean_ring_operators2
|
602
606
|
: totally_ordered2<T, U
|
603
607
|
, euclidean_ring_operators2<T, U, B
|
604
608
|
> > {};
|
605
609
|
|
606
|
-
template <class T, class B = ::
|
610
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
607
611
|
struct ordered_euclidean_ring_operators1
|
608
612
|
: totally_ordered1<T
|
609
613
|
, euclidean_ring_operators1<T, B
|
610
614
|
> > {};
|
611
615
|
|
612
|
-
template <class T, class P, class B = ::
|
616
|
+
template <class T, class P, class B = operators_detail::empty_base<T> >
|
613
617
|
struct input_iteratable
|
614
618
|
: equality_comparable1<T
|
615
619
|
, incrementable<T
|
616
620
|
, dereferenceable<T, P, B
|
617
621
|
> > > {};
|
618
622
|
|
619
|
-
template <class T, class B = ::
|
623
|
+
template <class T, class B = operators_detail::empty_base<T> >
|
620
624
|
struct output_iteratable
|
621
625
|
: incrementable<T, B
|
622
626
|
> {};
|
623
627
|
|
624
|
-
template <class T, class P, class B = ::
|
628
|
+
template <class T, class P, class B = operators_detail::empty_base<T> >
|
625
629
|
struct forward_iteratable
|
626
630
|
: input_iteratable<T, P, B
|
627
631
|
> {};
|
628
632
|
|
629
|
-
template <class T, class P, class B = ::
|
633
|
+
template <class T, class P, class B = operators_detail::empty_base<T> >
|
630
634
|
struct bidirectional_iteratable
|
631
635
|
: forward_iteratable<T, P
|
632
636
|
, decrementable<T, B
|
@@ -636,7 +640,7 @@ struct bidirectional_iteratable
|
|
636
640
|
// which is an indirect base class of bidirectional_iterable,
|
637
641
|
// random_access_iteratable must not be derived from totally_ordered1
|
638
642
|
// but from less_than_comparable1 only. (Helmut Zeisel, 02-Dec-2001)
|
639
|
-
template <class T, class P, class D, class R, class B = ::
|
643
|
+
template <class T, class P, class D, class R, class B = operators_detail::empty_base<T> >
|
640
644
|
struct random_access_iteratable
|
641
645
|
: bidirectional_iteratable<T, P
|
642
646
|
, less_than_comparable1<T
|
@@ -644,124 +648,64 @@ struct random_access_iteratable
|
|
644
648
|
, indexable<T, D, R, B
|
645
649
|
> > > > {};
|
646
650
|
|
647
|
-
#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
|
648
|
-
} // namespace boost
|
649
|
-
#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
|
650
|
-
|
651
651
|
|
652
|
-
// BOOST_IMPORT_TEMPLATE1 .. BOOST_IMPORT_TEMPLATE4 -
|
653
652
|
//
|
654
|
-
//
|
655
|
-
//
|
656
|
-
//
|
657
|
-
//
|
658
|
-
// boost.
|
659
|
-
|
660
|
-
#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
|
661
|
-
|
662
|
-
// The template is already in boost so we have nothing to do.
|
663
|
-
# define BOOST_IMPORT_TEMPLATE4(template_name)
|
664
|
-
# define BOOST_IMPORT_TEMPLATE3(template_name)
|
665
|
-
# define BOOST_IMPORT_TEMPLATE2(template_name)
|
666
|
-
# define BOOST_IMPORT_TEMPLATE1(template_name)
|
667
|
-
|
668
|
-
#else // BOOST_NO_OPERATORS_IN_NAMESPACE
|
669
|
-
|
670
|
-
# ifndef BOOST_NO_USING_TEMPLATE
|
671
|
-
|
672
|
-
// Bring the names in with a using-declaration
|
673
|
-
// to avoid stressing the compiler.
|
674
|
-
# define BOOST_IMPORT_TEMPLATE4(template_name) using ::template_name;
|
675
|
-
# define BOOST_IMPORT_TEMPLATE3(template_name) using ::template_name;
|
676
|
-
# define BOOST_IMPORT_TEMPLATE2(template_name) using ::template_name;
|
677
|
-
# define BOOST_IMPORT_TEMPLATE1(template_name) using ::template_name;
|
678
|
-
|
679
|
-
# else
|
680
|
-
|
681
|
-
// Otherwise, because a Borland C++ 5.5 bug prevents a using declaration
|
682
|
-
// from working, we are forced to use inheritance for that compiler.
|
683
|
-
# define BOOST_IMPORT_TEMPLATE4(template_name) \
|
684
|
-
template <class T, class U, class V, class W, class B = ::boost::detail::empty_base<T> > \
|
685
|
-
struct template_name : ::template_name<T, U, V, W, B> {};
|
686
|
-
|
687
|
-
# define BOOST_IMPORT_TEMPLATE3(template_name) \
|
688
|
-
template <class T, class U, class V, class B = ::boost::detail::empty_base<T> > \
|
689
|
-
struct template_name : ::template_name<T, U, V, B> {};
|
690
|
-
|
691
|
-
# define BOOST_IMPORT_TEMPLATE2(template_name) \
|
692
|
-
template <class T, class U, class B = ::boost::detail::empty_base<T> > \
|
693
|
-
struct template_name : ::template_name<T, U, B> {};
|
694
|
-
|
695
|
-
# define BOOST_IMPORT_TEMPLATE1(template_name) \
|
696
|
-
template <class T, class B = ::boost::detail::empty_base<T> > \
|
697
|
-
struct template_name : ::template_name<T, B> {};
|
653
|
+
// Here's where we put it all together, defining the xxxx forms of the templates.
|
654
|
+
// We also define specializations of is_chained_base<> for
|
655
|
+
// the xxxx, xxxx1, and xxxx2 templates.
|
656
|
+
//
|
698
657
|
|
699
|
-
|
658
|
+
namespace operators_detail
|
659
|
+
{
|
700
660
|
|
701
|
-
|
661
|
+
// A type parameter is used instead of a plain bool because Borland's compiler
|
662
|
+
// didn't cope well with the more obvious non-type template parameter.
|
663
|
+
struct true_t {};
|
664
|
+
struct false_t {};
|
702
665
|
|
703
|
-
//
|
704
|
-
// Here's where we put it all together, defining the xxxx forms of the templates
|
705
|
-
// in namespace boost. We also define specializations of is_chained_base<> for
|
706
|
-
// the xxxx, xxxx1, and xxxx2 templates, importing them into boost:: as
|
707
|
-
// necessary.
|
708
|
-
//
|
666
|
+
} // namespace operators_detail
|
709
667
|
|
710
668
|
// is_chained_base<> - a traits class used to distinguish whether an operator
|
711
669
|
// template argument is being used for base class chaining, or is specifying a
|
712
670
|
// 2nd argument type.
|
713
671
|
|
714
|
-
namespace boost {
|
715
|
-
// A type parameter is used instead of a plain bool because Borland's compiler
|
716
|
-
// didn't cope well with the more obvious non-type template parameter.
|
717
|
-
namespace detail {
|
718
|
-
struct true_t {};
|
719
|
-
struct false_t {};
|
720
|
-
} // namespace detail
|
721
|
-
|
722
672
|
// Unspecialized version assumes that most types are not being used for base
|
723
673
|
// class chaining. We specialize for the operator templates defined in this
|
724
674
|
// library.
|
725
675
|
template<class T> struct is_chained_base {
|
726
|
-
typedef ::
|
676
|
+
typedef operators_detail::false_t value;
|
727
677
|
};
|
728
678
|
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
template<class T, class U, class V, class W, class B> \
|
736
|
-
struct is_chained_base< ::boost::template_name4<T, U, V, W, B> > { \
|
737
|
-
typedef ::boost::detail::true_t value; \
|
679
|
+
// Provide a specialization of 'is_chained_base<>'
|
680
|
+
// for a 4-type-argument operator template.
|
681
|
+
# define BOOST_OPERATOR_TEMPLATE4(template_name4) \
|
682
|
+
template<class T, class U, class V, class W, class B> \
|
683
|
+
struct is_chained_base< template_name4<T, U, V, W, B> > { \
|
684
|
+
typedef operators_detail::true_t value; \
|
738
685
|
};
|
739
686
|
|
740
|
-
//
|
741
|
-
//
|
742
|
-
# define BOOST_OPERATOR_TEMPLATE3(template_name3)
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
typedef ::boost::detail::true_t value; \
|
687
|
+
// Provide a specialization of 'is_chained_base<>'
|
688
|
+
// for a 3-type-argument operator template.
|
689
|
+
# define BOOST_OPERATOR_TEMPLATE3(template_name3) \
|
690
|
+
template<class T, class U, class V, class B> \
|
691
|
+
struct is_chained_base< template_name3<T, U, V, B> > { \
|
692
|
+
typedef operators_detail::true_t value; \
|
747
693
|
};
|
748
694
|
|
749
|
-
//
|
750
|
-
//
|
751
|
-
# define BOOST_OPERATOR_TEMPLATE2(template_name2)
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
typedef ::boost::detail::true_t value; \
|
695
|
+
// Provide a specialization of 'is_chained_base<>'
|
696
|
+
// for a 2-type-argument operator template.
|
697
|
+
# define BOOST_OPERATOR_TEMPLATE2(template_name2) \
|
698
|
+
template<class T, class U, class B> \
|
699
|
+
struct is_chained_base< template_name2<T, U, B> > { \
|
700
|
+
typedef operators_detail::true_t value; \
|
756
701
|
};
|
757
702
|
|
758
|
-
//
|
759
|
-
//
|
760
|
-
# define BOOST_OPERATOR_TEMPLATE1(template_name1)
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
typedef ::boost::detail::true_t value; \
|
703
|
+
// Provide a specialization of 'is_chained_base<>'
|
704
|
+
// for a 1-type-argument operator template.
|
705
|
+
# define BOOST_OPERATOR_TEMPLATE1(template_name1) \
|
706
|
+
template<class T, class B> \
|
707
|
+
struct is_chained_base< template_name1<T, B> > { \
|
708
|
+
typedef operators_detail::true_t value; \
|
765
709
|
};
|
766
710
|
|
767
711
|
// BOOST_OPERATOR_TEMPLATE(template_name) defines template_name<> such that it
|
@@ -778,34 +722,34 @@ template<class T> struct is_chained_base {
|
|
778
722
|
// implementation in terms of either '<template_name>1' or '<template_name>2'.
|
779
723
|
//
|
780
724
|
|
781
|
-
# define BOOST_OPERATOR_TEMPLATE(template_name)
|
782
|
-
template <class T
|
783
|
-
,class U = T
|
784
|
-
,class B = ::
|
785
|
-
,class O = typename is_chained_base<U>::value
|
786
|
-
>
|
787
|
-
struct template_name
|
788
|
-
|
789
|
-
template<class T, class U, class B>
|
790
|
-
struct template_name<T, U, B, ::
|
791
|
-
: template_name##
|
792
|
-
|
793
|
-
template
|
794
|
-
struct template_name<T,
|
795
|
-
: template_name##1<T,
|
796
|
-
|
797
|
-
template<class T, class
|
798
|
-
struct
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
725
|
+
# define BOOST_OPERATOR_TEMPLATE(template_name) \
|
726
|
+
template <class T \
|
727
|
+
,class U = T \
|
728
|
+
,class B = operators_detail::empty_base<T> \
|
729
|
+
,class O = typename is_chained_base<U>::value \
|
730
|
+
> \
|
731
|
+
struct template_name; \
|
732
|
+
\
|
733
|
+
template<class T, class U, class B> \
|
734
|
+
struct template_name<T, U, B, operators_detail::false_t> \
|
735
|
+
: template_name##2<T, U, B> {}; \
|
736
|
+
\
|
737
|
+
template<class T, class U> \
|
738
|
+
struct template_name<T, U, operators_detail::empty_base<T>, operators_detail::true_t> \
|
739
|
+
: template_name##1<T, U> {}; \
|
740
|
+
\
|
741
|
+
template <class T, class B> \
|
742
|
+
struct template_name<T, T, B, operators_detail::false_t> \
|
743
|
+
: template_name##1<T, B> {}; \
|
744
|
+
\
|
745
|
+
template<class T, class U, class B, class O> \
|
746
|
+
struct is_chained_base< template_name<T, U, B, O> > { \
|
747
|
+
typedef operators_detail::true_t value; \
|
748
|
+
}; \
|
749
|
+
\
|
750
|
+
BOOST_OPERATOR_TEMPLATE2(template_name##2) \
|
803
751
|
BOOST_OPERATOR_TEMPLATE1(template_name##1)
|
804
752
|
|
805
|
-
|
806
|
-
|
807
|
-
namespace boost {
|
808
|
-
|
809
753
|
BOOST_OPERATOR_TEMPLATE(less_than_comparable)
|
810
754
|
BOOST_OPERATOR_TEMPLATE(equality_comparable)
|
811
755
|
BOOST_OPERATOR_TEMPLATE(multipliable)
|
@@ -859,13 +803,7 @@ BOOST_OPERATOR_TEMPLATE4(random_access_iteratable)
|
|
859
803
|
#undef BOOST_OPERATOR_TEMPLATE3
|
860
804
|
#undef BOOST_OPERATOR_TEMPLATE2
|
861
805
|
#undef BOOST_OPERATOR_TEMPLATE1
|
862
|
-
#undef BOOST_IMPORT_TEMPLATE1
|
863
|
-
#undef BOOST_IMPORT_TEMPLATE2
|
864
|
-
#undef BOOST_IMPORT_TEMPLATE3
|
865
|
-
#undef BOOST_IMPORT_TEMPLATE4
|
866
806
|
|
867
|
-
// The following 'operators' classes can only be used portably if the derived class
|
868
|
-
// declares ALL of the required member operators.
|
869
807
|
template <class T, class U>
|
870
808
|
struct operators2
|
871
809
|
: totally_ordered2<T,U
|
@@ -927,7 +865,7 @@ struct bidirectional_iterator_helper
|
|
927
865
|
> > {};
|
928
866
|
|
929
867
|
template <class T,
|
930
|
-
class V,
|
868
|
+
class V,
|
931
869
|
class D = std::ptrdiff_t,
|
932
870
|
class P = V*,
|
933
871
|
class R = V&>
|
@@ -941,10 +879,14 @@ struct random_access_iterator_helper
|
|
941
879
|
}
|
942
880
|
}; // random_access_iterator_helper
|
943
881
|
|
882
|
+
} // namespace operators_impl
|
883
|
+
using namespace operators_impl;
|
884
|
+
|
944
885
|
} // namespace boost
|
945
886
|
|
946
887
|
#if defined(__sgi) && !defined(__GNUC__)
|
947
888
|
#pragma reset woff 1234
|
948
889
|
#endif
|
949
890
|
|
891
|
+
#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
|
950
892
|
#endif // BOOST_OPERATORS_HPP
|