From 5a2f4f417449751daa302d1601f19d288c446f3d Mon Sep 17 00:00:00 2001 From: Dirk Eddelbuettel Date: Wed, 13 Dec 2023 20:45:08 -0600 Subject: [PATCH 1/6] Boost 1.84.0 (unmodified) --- .../framework/accumulator_set.hpp | 7 +- .../accumulators/droppable_accumulator.hpp | 11 +- .../accumulators/framework/depends_on.hpp | 6 + .../boost/accumulators/statistics/count.hpp | 4 +- .../statistics/extended_p_square_quantile.hpp | 1 + .../boost/accumulators/statistics/max.hpp | 4 +- .../boost/accumulators/statistics/mean.hpp | 6 +- .../boost/accumulators/statistics/min.hpp | 4 +- .../boost/accumulators/statistics/moment.hpp | 4 +- .../boost/accumulators/statistics/sum.hpp | 4 +- .../boost/accumulators/statistics/tail.hpp | 4 +- .../accumulators/statistics/variance.hpp | 6 +- .../accumulators/statistics/weighted_mean.hpp | 2 +- .../accumulators/statistics/weighted_sum.hpp | 2 +- inst/include/boost/algorithm/gather.hpp | 12 +- inst/include/boost/any.hpp | 297 +- inst/include/boost/any/bad_any_cast.hpp | 6 +- inst/include/boost/any/basic_any.hpp | 318 +- inst/include/boost/any/detail/placeholder.hpp | 33 + inst/include/boost/any/fwd.hpp | 27 +- inst/include/boost/any/unique_any.hpp | 308 +- inst/include/boost/archive/basic_archive.hpp | 2 +- .../boost/archive/basic_binary_iarchive.hpp | 4 +- .../boost/archive/basic_binary_iprimitive.hpp | 4 +- .../boost/archive/basic_binary_oarchive.hpp | 10 +- .../boost/archive/basic_binary_oprimitive.hpp | 6 +- .../boost/archive/basic_text_oprimitive.hpp | 9 +- .../include/boost/archive/binary_iarchive.hpp | 2 +- .../include/boost/archive/binary_oarchive.hpp | 2 +- .../boost/archive/binary_woarchive.hpp | 2 +- inst/include/boost/archive/codecvt_null.hpp | 8 +- .../archive/detail/archive_serializer_map.hpp | 4 +- .../archive/detail/basic_iserializer.hpp | 4 +- .../archive/detail/basic_oserializer.hpp | 2 +- .../detail/basic_pointer_iserializer.hpp | 2 +- .../detail/basic_pointer_oserializer.hpp | 2 +- .../boost/archive/detail/basic_serializer.hpp | 2 +- .../archive/detail/basic_serializer_map.hpp | 2 +- inst/include/boost/archive/detail/check.hpp | 2 +- .../archive/detail/helper_collection.hpp | 3 +- .../archive/detail/interface_oarchive.hpp | 3 +- .../boost/archive/detail/iserializer.hpp | 12 +- .../boost/archive/detail/oserializer.hpp | 2 +- .../boost/archive/impl/basic_xml_iarchive.ipp | 6 +- .../boost/archive/impl/basic_xml_oarchive.ipp | 2 +- .../boost/archive/impl/xml_oarchive_impl.ipp | 5 +- .../archive/iterators/base64_from_binary.hpp | 2 +- .../archive/iterators/binary_from_base64.hpp | 2 +- .../archive/iterators/dataflow_exception.hpp | 2 +- .../boost/archive/iterators/escape.hpp | 2 +- .../archive/iterators/insert_linebreaks.hpp | 2 +- .../boost/archive/iterators/mb_from_wchar.hpp | 9 +- .../archive/iterators/remove_whitespace.hpp | 2 +- .../archive/iterators/transform_width.hpp | 2 +- .../boost/archive/iterators/wchar_from_mb.hpp | 2 +- .../boost/archive/iterators/xml_escape.hpp | 2 + .../boost/archive/iterators/xml_unescape.hpp | 2 +- inst/include/boost/array.hpp | 94 +- inst/include/boost/asio.hpp | 25 +- .../boost/asio/any_completion_executor.hpp | 58 +- .../boost/asio/any_completion_handler.hpp | 250 +- inst/include/boost/asio/any_io_executor.hpp | 76 +- inst/include/boost/asio/append.hpp | 33 +- inst/include/boost/asio/as_tuple.hpp | 55 +- .../boost/asio/associated_allocator.hpp | 71 +- .../asio/associated_cancellation_slot.hpp | 69 +- .../boost/asio/associated_executor.hpp | 82 +- .../asio/associated_immediate_executor.hpp | 282 + inst/include/boost/asio/associator.hpp | 2 +- inst/include/boost/asio/async_result.hpp | 978 +--- inst/include/boost/asio/awaitable.hpp | 2 +- .../boost/asio/basic_datagram_socket.hpp | 162 +- .../boost/asio/basic_deadline_timer.hpp | 39 +- inst/include/boost/asio/basic_file.hpp | 41 +- inst/include/boost/asio/basic_io_object.hpp | 12 +- .../boost/asio/basic_random_access_file.hpp | 72 +- inst/include/boost/asio/basic_raw_socket.hpp | 161 +- .../boost/asio/basic_readable_pipe.hpp | 49 +- .../boost/asio/basic_seq_packet_socket.hpp | 84 +- inst/include/boost/asio/basic_serial_port.hpp | 75 +- inst/include/boost/asio/basic_signal_set.hpp | 96 +- inst/include/boost/asio/basic_socket.hpp | 79 +- .../boost/asio/basic_socket_acceptor.hpp | 259 +- .../boost/asio/basic_socket_iostream.hpp | 88 +- .../boost/asio/basic_socket_streambuf.hpp | 57 +- inst/include/boost/asio/basic_stream_file.hpp | 70 +- .../boost/asio/basic_stream_socket.hpp | 126 +- inst/include/boost/asio/basic_streambuf.hpp | 28 +- .../boost/asio/basic_streambuf_fwd.hpp | 6 +- .../boost/asio/basic_waitable_timer.hpp | 55 +- .../boost/asio/basic_writable_pipe.hpp | 49 +- inst/include/boost/asio/bind_allocator.hpp | 384 +- .../boost/asio/bind_cancellation_slot.hpp | 369 +- inst/include/boost/asio/bind_executor.hpp | 356 +- .../boost/asio/bind_immediate_executor.hpp | 545 ++ inst/include/boost/asio/buffer.hpp | 651 ++- .../boost/asio/buffer_registration.hpp | 68 +- .../boost/asio/buffered_read_stream.hpp | 66 +- .../boost/asio/buffered_read_stream_fwd.hpp | 2 +- inst/include/boost/asio/buffered_stream.hpp | 82 +- .../boost/asio/buffered_stream_fwd.hpp | 2 +- .../boost/asio/buffered_write_stream.hpp | 66 +- .../boost/asio/buffered_write_stream_fwd.hpp | 2 +- inst/include/boost/asio/buffers_iterator.hpp | 8 +- .../boost/asio/cancellation_signal.hpp | 110 +- .../include/boost/asio/cancellation_state.hpp | 32 +- inst/include/boost/asio/cancellation_type.hpp | 33 +- inst/include/boost/asio/co_spawn.hpp | 34 +- .../boost/asio/completion_condition.hpp | 2 +- inst/include/boost/asio/compose.hpp | 332 +- inst/include/boost/asio/connect.hpp | 131 +- inst/include/boost/asio/connect_pipe.hpp | 2 +- inst/include/boost/asio/consign.hpp | 35 +- inst/include/boost/asio/coroutine.hpp | 2 +- inst/include/boost/asio/deadline_timer.hpp | 2 +- inst/include/boost/asio/defer.hpp | 71 +- inst/include/boost/asio/deferred.hpp | 564 +- inst/include/boost/asio/detached.hpp | 32 +- inst/include/boost/asio/detail/array.hpp | 12 +- inst/include/boost/asio/detail/array_fwd.hpp | 6 +- inst/include/boost/asio/detail/assert.hpp | 2 +- .../boost/asio/detail/atomic_count.hpp | 18 +- .../detail/base_from_cancellation_state.hpp | 41 +- .../asio/detail/base_from_completion_cond.hpp | 4 +- .../boost/asio/detail/bind_handler.hpp | 692 +-- .../asio/detail/blocking_executor_op.hpp | 6 +- .../boost/asio/detail/buffer_resize_guard.hpp | 2 +- .../asio/detail/buffer_sequence_adapter.hpp | 10 +- .../asio/detail/buffered_stream_storage.hpp | 2 +- .../boost/asio/detail/bulk_executor_op.hpp | 90 - inst/include/boost/asio/detail/call_stack.hpp | 2 +- inst/include/boost/asio/detail/chrono.hpp | 25 +- .../boost/asio/detail/chrono_time_traits.hpp | 2 +- .../boost/asio/detail/completion_handler.hpp | 8 +- .../boost/asio/detail/composed_work.hpp | 118 +- .../boost/asio/detail/concurrency_hint.hpp | 2 +- .../detail/conditionally_enabled_event.hpp | 2 +- .../detail/conditionally_enabled_mutex.hpp | 2 +- inst/include/boost/asio/detail/config.hpp | 1110 +--- .../boost/asio/detail/consuming_buffers.hpp | 14 +- inst/include/boost/asio/detail/cstddef.hpp | 6 +- inst/include/boost/asio/detail/cstdint.hpp | 26 +- .../boost/asio/detail/date_time_fwd.hpp | 2 +- .../asio/detail/deadline_timer_service.hpp | 8 +- .../boost/asio/detail/dependent_type.hpp | 2 +- .../boost/asio/detail/descriptor_ops.hpp | 2 +- .../boost/asio/detail/descriptor_read_op.hpp | 44 +- .../boost/asio/detail/descriptor_write_op.hpp | 43 +- .../boost/asio/detail/dev_poll_reactor.hpp | 23 +- .../boost/asio/detail/epoll_reactor.hpp | 23 +- inst/include/boost/asio/detail/event.hpp | 8 +- .../detail/eventfd_select_interrupter.hpp | 2 +- inst/include/boost/asio/detail/exception.hpp | 15 +- .../boost/asio/detail/executor_function.hpp | 68 +- .../include/boost/asio/detail/executor_op.hpp | 12 +- .../boost/asio/detail/fd_set_adapter.hpp | 2 +- .../boost/asio/detail/fenced_block.hpp | 46 +- inst/include/boost/asio/detail/functional.hpp | 13 +- inst/include/boost/asio/detail/future.hpp | 19 +- .../asio/detail/gcc_arm_fenced_block.hpp | 93 - .../asio/detail/gcc_hppa_fenced_block.hpp | 70 - .../asio/detail/gcc_sync_fenced_block.hpp | 67 - .../asio/detail/gcc_x86_fenced_block.hpp | 101 - inst/include/boost/asio/detail/global.hpp | 8 +- .../asio/detail/handler_alloc_helpers.hpp | 145 +- .../asio/detail/handler_cont_helpers.hpp | 2 +- .../asio/detail/handler_invoke_helpers.hpp | 80 - .../boost/asio/detail/handler_tracking.hpp | 6 +- .../asio/detail/handler_type_requirements.hpp | 24 +- .../boost/asio/detail/handler_work.hpp | 224 +- inst/include/boost/asio/detail/hash_map.hpp | 2 +- .../detail/impl/buffer_sequence_adapter.ipp | 2 +- .../boost/asio/detail/impl/descriptor_ops.ipp | 6 +- .../asio/detail/impl/dev_poll_reactor.hpp | 4 +- .../asio/detail/impl/dev_poll_reactor.ipp | 17 +- .../boost/asio/detail/impl/epoll_reactor.hpp | 4 +- .../boost/asio/detail/impl/epoll_reactor.ipp | 25 +- .../impl/eventfd_select_interrupter.ipp | 2 +- .../asio/detail/impl/handler_tracking.ipp | 10 +- .../impl/io_uring_descriptor_service.ipp | 4 +- .../detail/impl/io_uring_file_service.ipp | 2 +- .../asio/detail/impl/io_uring_service.hpp | 2 +- .../asio/detail/impl/io_uring_service.ipp | 104 +- .../impl/io_uring_socket_service_base.ipp | 4 +- .../boost/asio/detail/impl/kqueue_reactor.hpp | 4 +- .../boost/asio/detail/impl/kqueue_reactor.ipp | 21 +- .../boost/asio/detail/impl/null_event.ipp | 2 +- .../detail/impl/pipe_select_interrupter.ipp | 2 +- .../boost/asio/detail/impl/posix_event.ipp | 2 +- .../boost/asio/detail/impl/posix_mutex.ipp | 2 +- .../detail/impl/posix_serial_port_service.ipp | 2 +- .../boost/asio/detail/impl/posix_thread.ipp | 2 +- .../boost/asio/detail/impl/posix_tss_ptr.ipp | 2 +- .../impl/reactive_descriptor_service.ipp | 18 +- .../impl/reactive_socket_service_base.ipp | 44 +- .../detail/impl/resolver_service_base.ipp | 6 +- .../boost/asio/detail/impl/scheduler.ipp | 3 +- .../boost/asio/detail/impl/select_reactor.hpp | 4 +- .../boost/asio/detail/impl/select_reactor.ipp | 16 +- .../asio/detail/impl/service_registry.hpp | 5 +- .../asio/detail/impl/service_registry.ipp | 2 +- .../asio/detail/impl/signal_set_service.ipp | 61 +- .../boost/asio/detail/impl/socket_ops.ipp | 2 +- .../detail/impl/socket_select_interrupter.ipp | 2 +- .../detail/impl/strand_executor_service.hpp | 115 +- .../detail/impl/strand_executor_service.ipp | 2 +- .../boost/asio/detail/impl/strand_service.hpp | 5 +- .../boost/asio/detail/impl/strand_service.ipp | 2 +- .../boost/asio/detail/impl/thread_context.ipp | 2 +- .../boost/asio/detail/impl/throw_error.ipp | 2 +- .../asio/detail/impl/timer_queue_ptime.ipp | 24 +- .../asio/detail/impl/timer_queue_set.ipp | 2 +- .../boost/asio/detail/impl/win_event.ipp | 2 +- .../detail/impl/win_iocp_file_service.ipp | 5 +- .../detail/impl/win_iocp_handle_service.ipp | 2 +- .../asio/detail/impl/win_iocp_io_context.hpp | 3 +- .../asio/detail/impl/win_iocp_io_context.ipp | 12 +- .../impl/win_iocp_serial_port_service.ipp | 2 +- .../impl/win_iocp_socket_service_base.ipp | 4 +- .../boost/asio/detail/impl/win_mutex.ipp | 2 +- .../detail/impl/win_object_handle_service.ipp | 2 +- .../asio/detail/impl/win_static_mutex.ipp | 2 +- .../boost/asio/detail/impl/win_thread.ipp | 2 +- .../boost/asio/detail/impl/win_tss_ptr.ipp | 2 +- .../impl/winrt_ssocket_service_base.ipp | 4 +- .../detail/impl/winrt_timer_scheduler.hpp | 2 +- .../detail/impl/winrt_timer_scheduler.ipp | 2 +- .../boost/asio/detail/impl/winsock_init.ipp | 2 +- .../boost/asio/detail/initiate_defer.hpp | 209 + .../boost/asio/detail/initiate_dispatch.hpp | 195 + .../boost/asio/detail/initiate_post.hpp | 209 + inst/include/boost/asio/detail/io_control.hpp | 2 +- .../boost/asio/detail/io_object_impl.hpp | 12 +- .../detail/io_uring_descriptor_read_at_op.hpp | 9 +- .../detail/io_uring_descriptor_read_op.hpp | 9 +- .../detail/io_uring_descriptor_service.hpp | 26 +- .../io_uring_descriptor_write_at_op.hpp | 9 +- .../detail/io_uring_descriptor_write_op.hpp | 9 +- .../asio/detail/io_uring_file_service.hpp | 5 +- .../asio/detail/io_uring_null_buffers_op.hpp | 9 +- .../boost/asio/detail/io_uring_operation.hpp | 2 +- .../boost/asio/detail/io_uring_service.hpp | 7 +- .../asio/detail/io_uring_socket_accept_op.hpp | 23 +- .../detail/io_uring_socket_connect_op.hpp | 9 +- .../asio/detail/io_uring_socket_recv_op.hpp | 9 +- .../detail/io_uring_socket_recvfrom_op.hpp | 9 +- .../detail/io_uring_socket_recvmsg_op.hpp | 9 +- .../asio/detail/io_uring_socket_send_op.hpp | 9 +- .../asio/detail/io_uring_socket_sendto_op.hpp | 9 +- .../asio/detail/io_uring_socket_service.hpp | 24 +- .../detail/io_uring_socket_service_base.hpp | 18 +- .../boost/asio/detail/io_uring_wait_op.hpp | 9 +- .../boost/asio/detail/is_buffer_sequence.hpp | 56 +- .../include/boost/asio/detail/is_executor.hpp | 2 +- .../boost/asio/detail/keyword_tss_ptr.hpp | 2 +- .../boost/asio/detail/kqueue_reactor.hpp | 23 +- inst/include/boost/asio/detail/limits.hpp | 7 +- .../boost/asio/detail/macos_fenced_block.hpp | 64 - inst/include/boost/asio/detail/memory.hpp | 67 +- inst/include/boost/asio/detail/mutex.hpp | 8 +- .../boost/asio/detail/non_const_lvalue.hpp | 19 +- .../include/boost/asio/detail/noncopyable.hpp | 2 +- inst/include/boost/asio/detail/null_event.hpp | 2 +- .../boost/asio/detail/null_fenced_block.hpp | 2 +- .../include/boost/asio/detail/null_global.hpp | 2 +- inst/include/boost/asio/detail/null_mutex.hpp | 2 +- .../boost/asio/detail/null_reactor.hpp | 2 +- .../boost/asio/detail/null_signal_blocker.hpp | 2 +- .../boost/asio/detail/null_socket_service.hpp | 6 +- .../boost/asio/detail/null_static_mutex.hpp | 2 +- .../include/boost/asio/detail/null_thread.hpp | 2 +- .../boost/asio/detail/null_tss_ptr.hpp | 2 +- .../include/boost/asio/detail/object_pool.hpp | 2 +- .../boost/asio/detail/old_win_sdk_compat.hpp | 2 +- inst/include/boost/asio/detail/op_queue.hpp | 2 +- inst/include/boost/asio/detail/operation.hpp | 2 +- .../asio/detail/pipe_select_interrupter.hpp | 2 +- .../include/boost/asio/detail/pop_options.hpp | 2 +- .../include/boost/asio/detail/posix_event.hpp | 2 +- .../asio/detail/posix_fd_set_adapter.hpp | 2 +- .../boost/asio/detail/posix_global.hpp | 2 +- .../include/boost/asio/detail/posix_mutex.hpp | 2 +- .../asio/detail/posix_serial_port_service.hpp | 2 +- .../asio/detail/posix_signal_blocker.hpp | 2 +- .../boost/asio/detail/posix_static_mutex.hpp | 2 +- .../boost/asio/detail/posix_thread.hpp | 2 +- .../boost/asio/detail/posix_tss_ptr.hpp | 2 +- .../boost/asio/detail/push_options.hpp | 12 +- .../detail/reactive_descriptor_service.hpp | 86 +- .../asio/detail/reactive_null_buffers_op.hpp | 41 +- .../asio/detail/reactive_socket_accept_op.hpp | 101 +- .../detail/reactive_socket_connect_op.hpp | 45 +- .../asio/detail/reactive_socket_recv_op.hpp | 44 +- .../detail/reactive_socket_recvfrom_op.hpp | 45 +- .../detail/reactive_socket_recvmsg_op.hpp | 45 +- .../asio/detail/reactive_socket_send_op.hpp | 45 +- .../asio/detail/reactive_socket_sendto_op.hpp | 44 +- .../asio/detail/reactive_socket_service.hpp | 40 +- .../detail/reactive_socket_service_base.hpp | 173 +- .../boost/asio/detail/reactive_wait_op.hpp | 41 +- inst/include/boost/asio/detail/reactor.hpp | 2 +- inst/include/boost/asio/detail/reactor_op.hpp | 2 +- .../boost/asio/detail/reactor_op_queue.hpp | 2 +- .../boost/asio/detail/recycling_allocator.hpp | 4 +- inst/include/boost/asio/detail/regex_fwd.hpp | 17 +- .../boost/asio/detail/resolve_endpoint_op.hpp | 8 +- inst/include/boost/asio/detail/resolve_op.hpp | 2 +- .../boost/asio/detail/resolve_query_op.hpp | 8 +- .../boost/asio/detail/resolver_service.hpp | 6 +- .../asio/detail/resolver_service_base.hpp | 2 +- inst/include/boost/asio/detail/scheduler.hpp | 2 +- .../boost/asio/detail/scheduler_operation.hpp | 2 +- .../boost/asio/detail/scheduler_task.hpp | 2 +- .../asio/detail/scheduler_thread_info.hpp | 2 +- .../include/boost/asio/detail/scoped_lock.hpp | 2 +- inst/include/boost/asio/detail/scoped_ptr.hpp | 2 +- .../boost/asio/detail/select_interrupter.hpp | 2 +- .../boost/asio/detail/select_reactor.hpp | 23 +- .../boost/asio/detail/service_registry.hpp | 5 +- .../boost/asio/detail/signal_blocker.hpp | 2 +- .../boost/asio/detail/signal_handler.hpp | 6 +- .../include/boost/asio/detail/signal_init.hpp | 2 +- inst/include/boost/asio/detail/signal_op.hpp | 2 +- .../boost/asio/detail/signal_set_service.hpp | 15 +- .../boost/asio/detail/socket_holder.hpp | 2 +- inst/include/boost/asio/detail/socket_ops.hpp | 2 +- .../boost/asio/detail/socket_option.hpp | 2 +- .../asio/detail/socket_select_interrupter.hpp | 2 +- .../boost/asio/detail/socket_types.hpp | 12 +- .../asio/detail/solaris_fenced_block.hpp | 64 - .../boost/asio/detail/source_location.hpp | 2 +- .../boost/asio/detail/static_mutex.hpp | 8 +- inst/include/boost/asio/detail/std_event.hpp | 7 +- .../boost/asio/detail/std_fenced_block.hpp | 7 +- inst/include/boost/asio/detail/std_global.hpp | 7 +- inst/include/boost/asio/detail/std_mutex.hpp | 7 +- .../boost/asio/detail/std_static_mutex.hpp | 7 +- inst/include/boost/asio/detail/std_thread.hpp | 7 +- .../asio/detail/strand_executor_service.hpp | 26 +- .../boost/asio/detail/strand_service.hpp | 2 +- .../include/boost/asio/detail/string_view.hpp | 2 +- inst/include/boost/asio/detail/thread.hpp | 8 +- .../boost/asio/detail/thread_context.hpp | 2 +- .../boost/asio/detail/thread_group.hpp | 2 +- .../boost/asio/detail/thread_info_base.hpp | 34 +- .../include/boost/asio/detail/throw_error.hpp | 2 +- .../boost/asio/detail/throw_exception.hpp | 2 +- .../include/boost/asio/detail/timer_queue.hpp | 2 +- .../boost/asio/detail/timer_queue_base.hpp | 2 +- .../boost/asio/detail/timer_queue_ptime.hpp | 4 +- .../boost/asio/detail/timer_queue_set.hpp | 2 +- .../boost/asio/detail/timer_scheduler.hpp | 2 +- .../boost/asio/detail/timer_scheduler_fwd.hpp | 2 +- inst/include/boost/asio/detail/tss_ptr.hpp | 2 +- .../include/boost/asio/detail/type_traits.hpp | 194 +- inst/include/boost/asio/detail/utility.hpp | 8 +- .../boost/asio/detail/variadic_templates.hpp | 294 - .../boost/asio/detail/wait_handler.hpp | 6 +- inst/include/boost/asio/detail/wait_op.hpp | 2 +- inst/include/boost/asio/detail/win_event.hpp | 2 +- .../boost/asio/detail/win_fd_set_adapter.hpp | 2 +- .../boost/asio/detail/win_fenced_block.hpp | 92 - inst/include/boost/asio/detail/win_global.hpp | 2 +- .../asio/detail/win_iocp_file_service.hpp | 2 +- .../asio/detail/win_iocp_handle_read_op.hpp | 8 +- .../asio/detail/win_iocp_handle_service.hpp | 10 +- .../asio/detail/win_iocp_handle_write_op.hpp | 8 +- .../boost/asio/detail/win_iocp_io_context.hpp | 4 +- .../asio/detail/win_iocp_null_buffers_op.hpp | 8 +- .../boost/asio/detail/win_iocp_operation.hpp | 2 +- .../asio/detail/win_iocp_overlapped_op.hpp | 8 +- .../asio/detail/win_iocp_overlapped_ptr.hpp | 14 +- .../detail/win_iocp_serial_port_service.hpp | 2 +- .../asio/detail/win_iocp_socket_accept_op.hpp | 21 +- .../detail/win_iocp_socket_connect_op.hpp | 9 +- .../asio/detail/win_iocp_socket_recv_op.hpp | 8 +- .../detail/win_iocp_socket_recvfrom_op.hpp | 8 +- .../detail/win_iocp_socket_recvmsg_op.hpp | 8 +- .../asio/detail/win_iocp_socket_send_op.hpp | 8 +- .../asio/detail/win_iocp_socket_service.hpp | 23 +- .../detail/win_iocp_socket_service_base.hpp | 17 +- .../asio/detail/win_iocp_thread_info.hpp | 2 +- .../boost/asio/detail/win_iocp_wait_op.hpp | 8 +- inst/include/boost/asio/detail/win_mutex.hpp | 2 +- .../asio/detail/win_object_handle_service.hpp | 3 +- .../boost/asio/detail/win_static_mutex.hpp | 2 +- inst/include/boost/asio/detail/win_thread.hpp | 2 +- .../include/boost/asio/detail/win_tss_ptr.hpp | 2 +- .../boost/asio/detail/winapp_thread.hpp | 2 +- .../boost/asio/detail/wince_thread.hpp | 2 +- .../boost/asio/detail/winrt_async_manager.hpp | 2 +- .../boost/asio/detail/winrt_async_op.hpp | 2 +- .../boost/asio/detail/winrt_resolve_op.hpp | 8 +- .../asio/detail/winrt_resolver_service.hpp | 6 +- .../asio/detail/winrt_socket_recv_op.hpp | 8 +- .../asio/detail/winrt_socket_send_op.hpp | 8 +- .../detail/winrt_ssocket_service_base.hpp | 4 +- .../asio/detail/winrt_timer_scheduler.hpp | 2 +- .../include/boost/asio/detail/winrt_utils.hpp | 2 +- .../boost/asio/detail/winsock_init.hpp | 2 +- .../boost/asio/detail/work_dispatcher.hpp | 54 +- .../boost/asio/detail/wrapped_handler.hpp | 124 +- inst/include/boost/asio/dispatch.hpp | 70 +- inst/include/boost/asio/error.hpp | 2 +- inst/include/boost/asio/execution.hpp | 17 +- .../boost/asio/execution/allocator.hpp | 146 +- .../boost/asio/execution/any_executor.hpp | 1259 +---- .../boost/asio/execution/bad_executor.hpp | 7 +- .../include/boost/asio/execution/blocking.hpp | 832 +-- .../asio/execution/blocking_adaptation.hpp | 641 +-- .../boost/asio/execution/bulk_execute.hpp | 406 -- .../boost/asio/execution/bulk_guarantee.hpp | 1254 ----- inst/include/boost/asio/execution/connect.hpp | 498 -- inst/include/boost/asio/execution/context.hpp | 93 +- .../boost/asio/execution/context_as.hpp | 102 +- .../asio/execution/detail/as_invocable.hpp | 154 - .../asio/execution/detail/as_operation.hpp | 111 - .../asio/execution/detail/as_receiver.hpp | 130 - .../asio/execution/detail/bulk_sender.hpp | 263 - .../asio/execution/detail/submit_receiver.hpp | 235 - .../asio/execution/detail/void_receiver.hpp | 92 - inst/include/boost/asio/execution/execute.hpp | 296 - .../include/boost/asio/execution/executor.hpp | 194 +- .../asio/execution/impl/bad_executor.ipp | 6 +- .../impl/receiver_invocation_error.ipp | 38 - .../asio/execution/invocable_archetype.hpp | 32 +- inst/include/boost/asio/execution/mapping.hpp | 638 +-- .../boost/asio/execution/occupancy.hpp | 93 +- .../boost/asio/execution/operation_state.hpp | 101 - .../boost/asio/execution/outstanding_work.hpp | 445 +- .../boost/asio/execution/prefer_only.hpp | 115 +- .../include/boost/asio/execution/receiver.hpp | 287 - .../execution/receiver_invocation_error.hpp | 50 - .../boost/asio/execution/relationship.hpp | 445 +- .../include/boost/asio/execution/schedule.hpp | 296 - .../boost/asio/execution/scheduler.hpp | 93 - inst/include/boost/asio/execution/sender.hpp | 318 -- .../include/boost/asio/execution/set_done.hpp | 259 - .../boost/asio/execution/set_error.hpp | 259 - .../boost/asio/execution/set_value.hpp | 492 -- inst/include/boost/asio/execution/start.hpp | 256 - inst/include/boost/asio/execution/submit.hpp | 459 -- inst/include/boost/asio/execution_context.hpp | 26 +- inst/include/boost/asio/executor.hpp | 102 +- .../boost/asio/executor_work_guard.hpp | 117 +- .../experimental/cancellation_condition.hpp | 53 +- .../boost/asio/experimental/channel_error.hpp | 2 +- .../asio/experimental/impl/channel_error.ipp | 4 +- .../asio/experimental/impl/parallel_group.hpp | 113 +- .../asio/experimental/parallel_group.hpp | 57 +- inst/include/boost/asio/file_base.hpp | 2 +- .../boost/asio/generic/basic_endpoint.hpp | 8 +- .../boost/asio/generic/datagram_protocol.hpp | 8 +- .../boost/asio/generic/detail/endpoint.hpp | 2 +- .../asio/generic/detail/impl/endpoint.ipp | 2 +- .../boost/asio/generic/raw_protocol.hpp | 8 +- .../asio/generic/seq_packet_protocol.hpp | 8 +- .../boost/asio/generic/stream_protocol.hpp | 8 +- .../include/boost/asio/handler_alloc_hook.hpp | 106 - .../boost/asio/handler_continuation_hook.hpp | 2 +- .../boost/asio/handler_invoke_hook.hpp | 113 - .../boost/asio/high_resolution_timer.hpp | 7 +- .../asio/impl/any_completion_executor.ipp | 24 +- .../boost/asio/impl/any_io_executor.ipp | 27 +- inst/include/boost/asio/impl/append.hpp | 137 +- inst/include/boost/asio/impl/as_tuple.hpp | 206 +- inst/include/boost/asio/impl/awaitable.hpp | 86 +- .../boost/asio/impl/buffered_read_stream.hpp | 233 +- .../boost/asio/impl/buffered_write_stream.hpp | 233 +- .../boost/asio/impl/cancellation_signal.ipp | 2 +- inst/include/boost/asio/impl/co_spawn.hpp | 201 +- inst/include/boost/asio/impl/connect.hpp | 318 +- inst/include/boost/asio/impl/connect_pipe.hpp | 2 +- inst/include/boost/asio/impl/connect_pipe.ipp | 2 +- inst/include/boost/asio/impl/consign.hpp | 129 +- inst/include/boost/asio/impl/defer.hpp | 300 - inst/include/boost/asio/impl/deferred.hpp | 104 +- inst/include/boost/asio/impl/detached.hpp | 63 +- inst/include/boost/asio/impl/dispatch.hpp | 275 - inst/include/boost/asio/impl/error.ipp | 8 +- .../boost/asio/impl/execution_context.hpp | 38 +- .../boost/asio/impl/execution_context.ipp | 2 +- inst/include/boost/asio/impl/executor.hpp | 103 +- inst/include/boost/asio/impl/executor.ipp | 6 +- .../boost/asio/impl/handler_alloc_hook.ipp | 64 - inst/include/boost/asio/impl/io_context.hpp | 95 +- inst/include/boost/asio/impl/io_context.ipp | 3 +- .../boost/asio/impl/multiple_exceptions.ipp | 12 +- inst/include/boost/asio/impl/post.hpp | 300 - inst/include/boost/asio/impl/prepend.hpp | 134 +- inst/include/boost/asio/impl/read.hpp | 635 +-- inst/include/boost/asio/impl/read_at.hpp | 266 +- inst/include/boost/asio/impl/read_until.hpp | 1426 ++--- .../boost/asio/impl/redirect_error.hpp | 454 +- .../boost/asio/impl/serial_port_base.hpp | 2 +- .../boost/asio/impl/serial_port_base.ipp | 2 +- inst/include/boost/asio/impl/spawn.hpp | 630 +-- inst/include/boost/asio/impl/src.hpp | 4 +- .../boost/asio/impl/system_context.hpp | 4 +- .../boost/asio/impl/system_context.ipp | 4 +- .../boost/asio/impl/system_executor.hpp | 44 +- inst/include/boost/asio/impl/thread_pool.hpp | 141 +- inst/include/boost/asio/impl/thread_pool.ipp | 9 +- .../include/boost/asio/impl/use_awaitable.hpp | 4 +- inst/include/boost/asio/impl/use_future.hpp | 504 +- inst/include/boost/asio/impl/write.hpp | 640 +-- inst/include/boost/asio/impl/write_at.hpp | 252 +- inst/include/boost/asio/io_context.hpp | 207 +- inst/include/boost/asio/io_context_strand.hpp | 47 +- inst/include/boost/asio/io_service.hpp | 2 +- inst/include/boost/asio/io_service_strand.hpp | 2 +- inst/include/boost/asio/ip/address.hpp | 61 +- inst/include/boost/asio/ip/address_v4.hpp | 64 +- .../boost/asio/ip/address_v4_iterator.hpp | 32 +- .../boost/asio/ip/address_v4_range.hpp | 38 +- inst/include/boost/asio/ip/address_v6.hpp | 75 +- .../boost/asio/ip/address_v6_iterator.hpp | 31 +- .../boost/asio/ip/address_v6_range.hpp | 35 +- .../boost/asio/ip/bad_address_cast.hpp | 16 +- inst/include/boost/asio/ip/basic_endpoint.hpp | 61 +- inst/include/boost/asio/ip/basic_resolver.hpp | 122 +- .../boost/asio/ip/basic_resolver_entry.hpp | 2 +- .../boost/asio/ip/basic_resolver_iterator.hpp | 12 +- .../boost/asio/ip/basic_resolver_query.hpp | 2 +- .../boost/asio/ip/basic_resolver_results.hpp | 22 +- .../include/boost/asio/ip/detail/endpoint.hpp | 34 +- .../boost/asio/ip/detail/impl/endpoint.ipp | 24 +- .../boost/asio/ip/detail/socket_option.hpp | 2 +- inst/include/boost/asio/ip/host_name.hpp | 2 +- inst/include/boost/asio/ip/icmp.hpp | 14 +- inst/include/boost/asio/ip/impl/address.hpp | 2 +- inst/include/boost/asio/ip/impl/address.ipp | 40 +- .../include/boost/asio/ip/impl/address_v4.hpp | 2 +- .../include/boost/asio/ip/impl/address_v4.ipp | 22 +- .../include/boost/asio/ip/impl/address_v6.hpp | 2 +- .../include/boost/asio/ip/impl/address_v6.ipp | 56 +- .../boost/asio/ip/impl/basic_endpoint.hpp | 2 +- inst/include/boost/asio/ip/impl/host_name.ipp | 2 +- .../include/boost/asio/ip/impl/network_v4.hpp | 2 +- .../include/boost/asio/ip/impl/network_v4.ipp | 6 +- .../include/boost/asio/ip/impl/network_v6.hpp | 2 +- .../include/boost/asio/ip/impl/network_v6.ipp | 6 +- inst/include/boost/asio/ip/multicast.hpp | 2 +- inst/include/boost/asio/ip/network_v4.hpp | 36 +- inst/include/boost/asio/ip/network_v6.hpp | 32 +- inst/include/boost/asio/ip/resolver_base.hpp | 2 +- .../boost/asio/ip/resolver_query_base.hpp | 2 +- inst/include/boost/asio/ip/tcp.hpp | 14 +- inst/include/boost/asio/ip/udp.hpp | 14 +- inst/include/boost/asio/ip/unicast.hpp | 2 +- inst/include/boost/asio/ip/v6_only.hpp | 2 +- .../boost/asio/is_applicable_property.hpp | 12 +- .../boost/asio/is_contiguous_iterator.hpp | 4 +- inst/include/boost/asio/is_executor.hpp | 2 +- inst/include/boost/asio/is_read_buffered.hpp | 2 +- inst/include/boost/asio/is_write_buffered.hpp | 2 +- .../boost/asio/local/basic_endpoint.hpp | 8 +- .../include/boost/asio/local/connect_pair.hpp | 2 +- .../boost/asio/local/datagram_protocol.hpp | 8 +- .../boost/asio/local/detail/endpoint.hpp | 2 +- .../boost/asio/local/detail/impl/endpoint.ipp | 2 +- .../boost/asio/local/seq_packet_protocol.hpp | 86 + .../boost/asio/local/stream_protocol.hpp | 8 +- .../boost/asio/multiple_exceptions.hpp | 12 +- inst/include/boost/asio/packaged_task.hpp | 62 +- inst/include/boost/asio/placeholders.hpp | 134 +- .../boost/asio/posix/basic_descriptor.hpp | 50 +- .../asio/posix/basic_stream_descriptor.hpp | 58 +- inst/include/boost/asio/posix/descriptor.hpp | 2 +- .../boost/asio/posix/descriptor_base.hpp | 2 +- .../boost/asio/posix/stream_descriptor.hpp | 2 +- inst/include/boost/asio/post.hpp | 70 +- inst/include/boost/asio/prefer.hpp | 509 +- inst/include/boost/asio/prepend.hpp | 34 +- inst/include/boost/asio/query.hpp | 127 +- .../include/boost/asio/random_access_file.hpp | 2 +- inst/include/boost/asio/read.hpp | 304 +- inst/include/boost/asio/read_at.hpp | 87 +- inst/include/boost/asio/read_until.hpp | 554 +- inst/include/boost/asio/readable_pipe.hpp | 2 +- .../boost/asio/recycling_allocator.hpp | 30 +- inst/include/boost/asio/redirect_error.hpp | 16 +- inst/include/boost/asio/registered_buffer.hpp | 82 +- inst/include/boost/asio/require.hpp | 354 +- inst/include/boost/asio/require_concept.hpp | 149 +- inst/include/boost/asio/serial_port.hpp | 2 +- inst/include/boost/asio/serial_port_base.hpp | 2 +- inst/include/boost/asio/signal_set.hpp | 2 +- inst/include/boost/asio/signal_set_base.hpp | 173 + inst/include/boost/asio/socket_base.hpp | 2 +- inst/include/boost/asio/spawn.hpp | 288 +- inst/include/boost/asio/ssl.hpp | 2 +- inst/include/boost/asio/ssl/context.hpp | 4 +- inst/include/boost/asio/ssl/context_base.hpp | 48 +- .../asio/ssl/detail/buffered_handshake_op.hpp | 6 +- inst/include/boost/asio/ssl/detail/engine.hpp | 10 +- .../boost/asio/ssl/detail/handshake_op.hpp | 6 +- .../boost/asio/ssl/detail/impl/engine.ipp | 10 +- .../asio/ssl/detail/impl/openssl_init.ipp | 4 +- inst/include/boost/asio/ssl/detail/io.hpp | 91 +- .../boost/asio/ssl/detail/openssl_init.hpp | 2 +- .../boost/asio/ssl/detail/openssl_types.hpp | 2 +- .../asio/ssl/detail/password_callback.hpp | 2 +- .../include/boost/asio/ssl/detail/read_op.hpp | 6 +- .../boost/asio/ssl/detail/shutdown_op.hpp | 8 +- .../boost/asio/ssl/detail/stream_core.hpp | 34 +- .../boost/asio/ssl/detail/verify_callback.hpp | 2 +- .../boost/asio/ssl/detail/write_op.hpp | 6 +- inst/include/boost/asio/ssl/error.hpp | 2 +- .../boost/asio/ssl/host_name_verification.hpp | 2 +- inst/include/boost/asio/ssl/impl/context.hpp | 2 +- inst/include/boost/asio/ssl/impl/context.ipp | 6 +- inst/include/boost/asio/ssl/impl/error.ipp | 6 +- .../asio/ssl/impl/host_name_verification.ipp | 2 +- .../asio/ssl/impl/rfc2818_verification.ipp | 2 +- inst/include/boost/asio/ssl/impl/src.hpp | 2 +- .../boost/asio/ssl/rfc2818_verification.hpp | 2 +- inst/include/boost/asio/ssl/stream.hpp | 129 +- inst/include/boost/asio/ssl/stream_base.hpp | 2 +- .../include/boost/asio/ssl/verify_context.hpp | 2 +- inst/include/boost/asio/ssl/verify_mode.hpp | 2 +- .../include/boost/asio/static_thread_pool.hpp | 2 +- inst/include/boost/asio/steady_timer.hpp | 7 +- inst/include/boost/asio/strand.hpp | 209 +- inst/include/boost/asio/stream_file.hpp | 2 +- inst/include/boost/asio/streambuf.hpp | 2 +- inst/include/boost/asio/system_context.hpp | 6 +- inst/include/boost/asio/system_executor.hpp | 124 +- inst/include/boost/asio/system_timer.hpp | 7 +- inst/include/boost/asio/this_coro.hpp | 83 +- inst/include/boost/asio/thread_pool.hpp | 364 +- inst/include/boost/asio/time_traits.hpp | 2 +- .../boost/asio/traits/bulk_execute_free.hpp | 116 - .../boost/asio/traits/bulk_execute_member.hpp | 116 - .../boost/asio/traits/connect_free.hpp | 114 - .../boost/asio/traits/connect_member.hpp | 114 - .../boost/asio/traits/equality_comparable.hpp | 32 +- .../boost/asio/traits/execute_free.hpp | 110 - .../boost/asio/traits/execute_member.hpp | 36 +- .../include/boost/asio/traits/prefer_free.hpp | 36 +- .../boost/asio/traits/prefer_member.hpp | 36 +- inst/include/boost/asio/traits/query_free.hpp | 36 +- .../boost/asio/traits/query_member.hpp | 36 +- .../traits/query_static_constexpr_member.hpp | 37 +- .../asio/traits/require_concept_free.hpp | 36 +- .../asio/traits/require_concept_member.hpp | 36 +- .../boost/asio/traits/require_free.hpp | 36 +- .../boost/asio/traits/require_member.hpp | 36 +- .../boost/asio/traits/schedule_free.hpp | 110 - .../boost/asio/traits/schedule_member.hpp | 110 - .../boost/asio/traits/set_done_free.hpp | 110 - .../boost/asio/traits/set_done_member.hpp | 110 - .../boost/asio/traits/set_error_free.hpp | 114 - .../boost/asio/traits/set_error_member.hpp | 114 - .../boost/asio/traits/set_value_free.hpp | 236 - .../boost/asio/traits/set_value_member.hpp | 236 - inst/include/boost/asio/traits/start_free.hpp | 110 - .../boost/asio/traits/start_member.hpp | 110 - .../boost/asio/traits/static_query.hpp | 46 +- .../boost/asio/traits/static_require.hpp | 52 +- .../asio/traits/static_require_concept.hpp | 52 +- .../include/boost/asio/traits/submit_free.hpp | 114 - .../boost/asio/traits/submit_member.hpp | 114 - inst/include/boost/asio/ts/netfwd.hpp | 30 +- inst/include/boost/asio/unyield.hpp | 2 +- inst/include/boost/asio/use_awaitable.hpp | 36 +- inst/include/boost/asio/use_future.hpp | 20 +- inst/include/boost/asio/uses_executor.hpp | 8 +- inst/include/boost/asio/version.hpp | 4 +- inst/include/boost/asio/wait_traits.hpp | 2 +- .../asio/windows/basic_object_handle.hpp | 48 +- .../asio/windows/basic_overlapped_handle.hpp | 31 +- .../windows/basic_random_access_handle.hpp | 58 +- .../asio/windows/basic_stream_handle.hpp | 56 +- .../boost/asio/windows/object_handle.hpp | 2 +- .../boost/asio/windows/overlapped_handle.hpp | 2 +- .../boost/asio/windows/overlapped_ptr.hpp | 34 +- .../asio/windows/random_access_handle.hpp | 2 +- .../boost/asio/windows/stream_handle.hpp | 2 +- inst/include/boost/asio/writable_pipe.hpp | 2 +- inst/include/boost/asio/write.hpp | 268 +- inst/include/boost/asio/write_at.hpp | 84 +- inst/include/boost/asio/yield.hpp | 2 +- inst/include/boost/assert/source_location.hpp | 7 +- inst/include/boost/atomic/atomic.hpp | 18 +- inst/include/boost/atomic/atomic_ref.hpp | 5 +- .../boost/atomic/detail/atomic_ref_impl.hpp | 8 +- .../boost/atomic/detail/bitwise_cast.hpp | 12 +- inst/include/boost/atomic/detail/config.hpp | 49 - .../atomic/detail/core_arch_ops_gcc_x86.hpp | 147 +- .../atomic/detail/core_arch_ops_msvc_x86.hpp | 37 +- .../detail/core_operations_emulated.hpp | 25 +- .../atomic/detail/extra_fp_ops_emulated.hpp | 15 +- .../atomic/detail/extra_fp_ops_generic.hpp | 2 +- .../atomic/detail/extra_ops_emulated.hpp | 53 +- .../boost/atomic/detail/float_sizes.hpp | 157 +- .../boost/atomic/detail/fp_ops_emulated.hpp | 5 +- inst/include/boost/atomic/detail/header.hpp | 8 +- .../atomic/detail/type_traits/remove_cv.hpp | 42 + .../boost/atomic/detail/wait_on_address.hpp | 3 +- .../boost/atomic/detail/wait_ops_emulated.hpp | 7 +- inst/include/boost/atomic/ipc_atomic.hpp | 5 +- inst/include/boost/atomic/ipc_atomic_ref.hpp | 5 +- .../beast/_experimental/http/icy_stream.hpp | 24 +- .../beast/_experimental/test/handler.hpp | 4 +- .../_experimental/test/immediate_executor.hpp | 71 + .../beast/_experimental/test/impl/stream.hpp | 12 +- .../beast/_experimental/test/impl/stream.ipp | 4 +- .../boost/beast/_experimental/test/stream.hpp | 29 +- inst/include/boost/beast/core/async_base.hpp | 78 +- .../include/boost/beast/core/basic_stream.hpp | 90 +- .../boost/beast/core/buffered_read_stream.hpp | 24 +- .../boost/beast/core/buffers_generator.hpp | 9 +- .../core/detail/bind_default_executor.hpp | 131 - .../boost/beast/core/detail/bind_handler.hpp | 67 +- .../boost/beast/core/detail/config.hpp | 10 +- inst/include/boost/beast/core/detail/read.hpp | 5 +- .../boost/beast/core/detail/type_traits.hpp | 3 +- .../boost/beast/core/detail/work_guard.hpp | 9 + inst/include/boost/beast/core/detect_ssl.hpp | 25 +- inst/include/boost/beast/core/file_base.hpp | 6 +- inst/include/boost/beast/core/flat_stream.hpp | 24 +- .../boost/beast/core/impl/async_base.hpp | 42 - .../boost/beast/core/impl/basic_stream.hpp | 14 +- .../beast/core/impl/buffered_read_stream.hpp | 14 +- .../boost/beast/core/impl/buffers_cat.hpp | 38 +- inst/include/boost/beast/core/impl/error.ipp | 6 + .../boost/beast/http/basic_file_body.hpp | 40 +- .../include/boost/beast/http/basic_parser.hpp | 1 + inst/include/boost/beast/http/buffer_body.hpp | 2 + .../boost/beast/http/detail/basic_parser.ipp | 86 +- .../boost/beast/http/detail/rfc7230.hpp | 1 + inst/include/boost/beast/http/empty_body.hpp | 2 + inst/include/boost/beast/http/error.hpp | 2 +- .../boost/beast/http/impl/basic_parser.ipp | 70 +- inst/include/boost/beast/http/impl/error.ipp | 2 + inst/include/boost/beast/http/impl/field.ipp | 1 + .../boost/beast/http/impl/file_body_win32.hpp | 37 +- inst/include/boost/beast/http/impl/read.hpp | 14 +- inst/include/boost/beast/http/impl/write.hpp | 21 +- inst/include/boost/beast/http/parser.hpp | 1 + inst/include/boost/beast/http/read.hpp | 20 +- inst/include/boost/beast/http/type_traits.hpp | 1 + inst/include/boost/beast/http/write.hpp | 25 +- inst/include/boost/beast/ssl/ssl_stream.hpp | 16 +- inst/include/boost/beast/version.hpp | 2 +- .../beast/websocket/detail/decorator.hpp | 3 +- .../boost/beast/websocket/impl/accept.hpp | 3 +- .../boost/beast/websocket/impl/close.hpp | 8 +- .../boost/beast/websocket/impl/error.ipp | 6 + .../boost/beast/websocket/impl/ping.hpp | 23 +- .../boost/beast/websocket/impl/read.hpp | 19 +- .../beast/websocket/impl/stream_impl.hpp | 7 +- .../boost/beast/websocket/impl/teardown.hpp | 5 +- .../boost/beast/websocket/impl/write.hpp | 3 +- inst/include/boost/beast/websocket/ssl.hpp | 5 +- inst/include/boost/beast/websocket/stream.hpp | 176 +- .../boost/beast/websocket/teardown.hpp | 10 +- .../beast/zlib/detail/deflate_stream.ipp | 16 +- .../beast/zlib/detail/inflate_stream.ipp | 22 +- inst/include/boost/bimap/bimap.hpp | 2 +- .../boost/bimap/detail/map_view_iterator.hpp | 22 +- .../boost/bimap/detail/set_view_iterator.hpp | 19 +- .../boost/bimap/relation/mutant_relation.hpp | 2 +- inst/include/boost/bind.hpp | 2 +- inst/include/boost/bind/apply.hpp | 1 + inst/include/boost/bind/bind.hpp | 7 +- inst/include/boost/bind/bind_mf_cc.hpp | 36 +- inst/include/boost/bind/detail/is_same.hpp | 36 + .../boost/bind/detail/requires_cxx11.hpp | 22 + .../boost/bind/detail/result_traits.hpp | 1 + inst/include/boost/bind/mem_fn.hpp | 5 +- inst/include/boost/bind/protect.hpp | 1 + inst/include/boost/bind/std_placeholders.hpp | 1 + inst/include/boost/bind/storage.hpp | 1 + inst/include/boost/chrono/config.hpp | 1 + .../chrono/detail/is_evenly_divisible_by.hpp | 8 +- .../boost/chrono/detail/requires_cxx11.hpp | 23 + inst/include/boost/chrono/duration.hpp | 3 +- inst/include/boost/chrono/io/duration_get.hpp | 2 +- .../boost/chrono/io/duration_units.hpp | 1 + inst/include/boost/chrono/io_v1/chrono_io.hpp | 6 +- inst/include/boost/chrono/system_clocks.hpp | 1 + .../compat/detail/throw_system_error.hpp | 25 + inst/include/boost/compat/latch.hpp | 86 + inst/include/boost/compat/shared_lock.hpp | 131 + inst/include/boost/concept/detail/general.hpp | 6 +- inst/include/boost/concept/usage.hpp | 2 +- inst/include/boost/config/assert_cxx03.hpp | 2 +- inst/include/boost/config/assert_cxx11.hpp | 5 +- inst/include/boost/config/assert_cxx14.hpp | 2 +- inst/include/boost/config/assert_cxx17.hpp | 2 +- inst/include/boost/config/assert_cxx20.hpp | 2 +- inst/include/boost/config/assert_cxx23.hpp | 41 + .../include/boost/config/compiler/borland.hpp | 1 + inst/include/boost/config/compiler/clang.hpp | 4 + .../boost/config/compiler/clang_version.hpp | 10 +- .../boost/config/compiler/codegear.hpp | 1 + .../boost/config/compiler/common_edg.hpp | 1 + inst/include/boost/config/compiler/cray.hpp | 1 + .../boost/config/compiler/digitalmars.hpp | 1 + inst/include/boost/config/compiler/gcc.hpp | 1 + .../include/boost/config/compiler/gcc_xml.hpp | 1 + inst/include/boost/config/compiler/hp_acc.hpp | 1 + inst/include/boost/config/compiler/intel.hpp | 1 + .../boost/config/compiler/metrowerks.hpp | 1 + inst/include/boost/config/compiler/mpw.hpp | 1 + .../boost/config/compiler/pathscale.hpp | 1 + .../boost/config/compiler/sunpro_cc.hpp | 1 + inst/include/boost/config/compiler/vacpp.hpp | 1 + .../include/boost/config/compiler/visualc.hpp | 13 +- inst/include/boost/config/compiler/xlcpp.hpp | 4 + .../boost/config/compiler/xlcpp_zos.hpp | 1 + .../boost/config/detail/cxx_composite.hpp | 16 +- inst/include/boost/config/detail/suffix.hpp | 56 + .../boost/config/stdlib/dinkumware.hpp | 32 + .../boost/config/stdlib/libstdcpp3.hpp | 17 +- .../boost/container/allocator_traits.hpp | 2 +- .../include/boost/container/container_fwd.hpp | 29 - inst/include/boost/container/deque.hpp | 65 +- .../detail/adaptive_node_pool_impl.hpp | 9 +- .../container/detail/advanced_insert_int.hpp | 17 +- .../detail/allocator_version_traits.hpp | 29 +- .../boost/container/detail/config_begin.hpp | 3 +- .../boost/container/detail/copy_move_algo.hpp | 91 +- .../detail/dispatch_uses_allocator.hpp | 66 +- .../boost/container/detail/flat_tree.hpp | 62 +- .../boost/container/detail/hash_table.hpp | 1278 ----- .../boost/container/detail/is_container.hpp | 2 +- .../detail/is_contiguous_container.hpp | 2 +- inst/include/boost/container/detail/mutex.hpp | 60 +- .../container/detail/node_alloc_holder.hpp | 28 +- .../boost/container/detail/node_pool_impl.hpp | 21 +- .../boost/container/detail/placement_new.hpp | 8 - inst/include/boost/container/detail/tree.hpp | 13 +- .../boost/container/detail/workaround.hpp | 33 + inst/include/boost/container/devector.hpp | 10 +- inst/include/boost/container/flat_map.hpp | 2 - inst/include/boost/container/flat_set.hpp | 2 +- inst/include/boost/container/map.hpp | 1 - inst/include/boost/container/node_handle.hpp | 20 +- .../boost/container/pmr/memory_resource.hpp | 2 +- .../container/pmr/polymorphic_allocator.hpp | 1 + .../boost/container/scoped_allocator.hpp | 2 - inst/include/boost/container/slist.hpp | 2 - inst/include/boost/container/small_vector.hpp | 59 +- .../include/boost/container/stable_vector.hpp | 19 +- inst/include/boost/container/string.hpp | 39 +- .../boost/container/throw_exception.hpp | 9 +- inst/include/boost/container/vector.hpp | 138 +- .../container_hash/detail/hash_integral.hpp | 146 + .../boost/container_hash/detail/hash_mix.hpp | 12 +- .../container_hash/detail/hash_range.hpp | 357 +- .../container_hash/detail/hash_tuple.hpp | 133 - .../container_hash/detail/hash_tuple_like.hpp | 62 + .../boost/container_hash/detail/mulx.hpp | 79 + inst/include/boost/container_hash/hash.hpp | 162 +- .../include/boost/container_hash/hash_fwd.hpp | 1 + .../container_hash/is_contiguous_range.hpp | 47 +- .../container_hash/is_described_class.hpp | 9 +- .../include/boost/container_hash/is_range.hpp | 44 +- .../boost/container_hash/is_tuple_like.hpp | 36 + .../container_hash/is_unordered_range.hpp | 13 +- .../boost/context/continuation_ucontext.hpp | 42 +- inst/include/boost/context/fiber_fcontext.hpp | 2 +- inst/include/boost/context/fiber_ucontext.hpp | 42 +- inst/include/boost/core/alignof.hpp | 57 + inst/include/boost/core/allocator_access.hpp | 8 +- inst/include/boost/core/bit.hpp | 375 +- inst/include/boost/core/checked_delete.hpp | 23 +- inst/include/boost/core/data.hpp | 46 + .../boost/core/{ => detail}/is_same.hpp | 21 +- .../boost/core/detail/lwt_unattended.hpp | 66 + .../boost/core/detail/sp_thread_pause.hpp | 71 + .../boost/core/detail/sp_thread_sleep.hpp | 122 + .../boost/core/detail/sp_thread_yield.hpp | 100 + .../detail/sp_win32_sleep.hpp | 23 +- .../include/boost/core/detail/string_view.hpp | 14 +- inst/include/boost/core/identity.hpp | 61 + inst/include/boost/core/invoke_swap.hpp | 93 + inst/include/boost/core/lightweight_test.hpp | 73 +- .../boost/core/lightweight_test_trait.hpp | 6 +- inst/include/boost/core/max_align.hpp | 82 + inst/include/boost/core/ref.hpp | 39 +- inst/include/boost/core/serialization.hpp | 131 + inst/include/boost/core/span.hpp | 34 +- inst/include/boost/core/swap.hpp | 50 +- inst/include/boost/core/type_name.hpp | 34 +- inst/include/boost/core/yield_primitives.hpp | 12 + inst/include/boost/crc.hpp | 16 +- inst/include/boost/date_time/c_time.hpp | 2 +- .../boost/describe/enum_from_string.hpp | 24 + inst/include/boost/describe/members.hpp | 2 + .../include/boost/detail/basic_pointerbuf.hpp | 5 - inst/include/boost/detail/lcast_precision.hpp | 89 +- inst/include/boost/endian/arithmetic.hpp | 155 +- inst/include/boost/endian/buffers.hpp | 181 +- inst/include/boost/endian/conversion.hpp | 276 +- .../boost/endian/detail/endian_load.hpp | 154 +- .../boost/endian/detail/endian_reverse.hpp | 51 +- .../boost/endian/detail/endian_store.hpp | 109 +- .../boost/endian/detail/integral_by_size.hpp | 15 +- .../boost/endian/detail/is_integral.hpp | 37 + .../boost/endian/detail/is_scoped_enum.hpp | 14 +- .../endian/detail/is_trivially_copyable.hpp | 19 +- inst/include/boost/endian/detail/order.hpp | 7 +- .../boost/endian/detail/static_assert.hpp | 10 + .../boost/exception/detail/exception_ptr.hpp | 28 +- .../exception/diagnostic_information.hpp | 6 +- inst/include/boost/exception/to_string.hpp | 2 +- inst/include/boost/filesystem.hpp | 3 - inst/include/boost/filesystem/config.hpp | 52 +- .../boost/filesystem/detail/header.hpp | 9 +- .../boost/filesystem/detail/path_traits.hpp | 265 +- inst/include/boost/filesystem/directory.hpp | 478 +- inst/include/boost/filesystem/file_status.hpp | 47 +- inst/include/boost/filesystem/fstream.hpp | 118 +- inst/include/boost/filesystem/operations.hpp | 92 +- inst/include/boost/filesystem/path.hpp | 669 ++- inst/include/boost/filesystem/string_file.hpp | 70 - .../flyweight/detail/archive_constructed.hpp | 6 +- .../flyweight/detail/recursive_lw_mutex.hpp | 74 +- .../flyweight/detail/serialization_helper.hpp | 1 - inst/include/boost/flyweight/flyweight.hpp | 9 +- inst/include/boost/flyweight/refcounted.hpp | 6 +- inst/include/boost/flyweight/serialize.hpp | 19 +- inst/include/boost/function.hpp | 2 + .../boost/function/detail/epilogue.hpp | 39 + .../boost/function/detail/prologue.hpp | 1 + .../boost/function/detail/requires_cxx11.hpp | 22 + inst/include/boost/function/function_base.hpp | 79 +- .../boost/function/function_template.hpp | 22 +- inst/include/boost/functional.hpp | 7 - inst/include/boost/functional/identity.hpp | 54 +- .../adapted/struct/detail/adapt_base.hpp | 2 +- .../boost/fusion/sequence/io/detail/in.hpp | 1 - .../boost/fusion/sequence/io/detail/manip.hpp | 11 +- .../boost/fusion/sequence/io/detail/out.hpp | 1 - inst/include/boost/fusion/sequence/io/in.hpp | 2 +- inst/include/boost/fusion/sequence/io/out.hpp | 2 +- inst/include/boost/fusion/support/pair.hpp | 11 + inst/include/boost/fusion/support/tag_of.hpp | 8 +- .../boost/geometry/algorithms/append.hpp | 12 +- .../boost/geometry/algorithms/area.hpp | 9 +- .../boost/geometry/algorithms/area_result.hpp | 11 +- .../boost/geometry/algorithms/assign.hpp | 62 +- .../boost/geometry/algorithms/azimuth.hpp | 14 +- .../boost/geometry/algorithms/centroid.hpp | 48 +- .../boost/geometry/algorithms/clear.hpp | 6 +- .../boost/geometry/algorithms/convert.hpp | 35 +- .../boost/geometry/algorithms/correct.hpp | 12 +- .../geometry/algorithms/correct_closure.hpp | 11 +- .../boost/geometry/algorithms/crosses.hpp | 8 +- .../boost/geometry/algorithms/densify.hpp | 28 +- .../detail/buffer/buffer_inserter.hpp | 41 +- .../buffer/buffered_piece_collection.hpp | 135 +- .../detail/buffer/get_piece_turns.hpp | 17 +- .../detail/buffer/line_line_intersection.hpp | 2 +- .../algorithms/detail/buffer/piece_border.hpp | 9 +- .../buffer/turn_in_original_visitor.hpp | 24 +- .../detail/calculate_point_order.hpp | 47 +- .../algorithms/detail/calculate_sum.hpp | 3 +- .../centroid/translating_transformer.hpp | 2 +- .../closest_feature/geometry_to_range.hpp | 4 +- .../detail/closest_feature/point_to_range.hpp | 3 +- .../detail/closest_feature/range_to_range.hpp | 2 +- .../detail/closest_points/interface.hpp | 10 +- .../linear_or_areal_to_areal.hpp | 76 +- .../closest_points/linear_to_linear.hpp | 12 +- .../closest_points/multipoint_to_geometry.hpp | 78 +- .../closest_points/point_to_geometry.hpp | 58 +- .../range_to_geometry_rtree.hpp | 6 +- .../closest_points/segment_to_segment.hpp | 20 +- .../detail/closest_points/utilities.hpp | 5 +- .../detail/comparable_distance/interface.hpp | 278 +- .../detail/convex_hull/graham_andrew.hpp | 17 +- .../detail/convex_hull/interface.hpp | 7 +- .../geometry/algorithms/detail/counting.hpp | 15 +- .../detail/covered_by/implementation.hpp | 116 +- .../algorithms/detail/direction_code.hpp | 131 +- .../detail/disjoint/linear_areal.hpp | 9 +- .../detail/disjoint/linear_segment_or_box.hpp | 2 + .../detail/disjoint/multipoint_geometry.hpp | 26 +- .../detail/disjoint/multirange_geometry.hpp | 3 +- .../detail/distance/geometry_collection.hpp | 2 + .../distance/geometry_to_segment_or_box.hpp | 48 +- .../distance/linear_or_areal_to_areal.hpp | 6 +- .../detail/distance/linear_to_linear.hpp | 2 +- .../distance/multipoint_to_geometry.hpp | 2 +- .../distance/range_to_geometry_rtree.hpp | 2 +- .../detail/distance/segment_to_box.hpp | 12 +- .../detail/envelope/geometry_collection.hpp | 2 +- .../envelope/intersects_antimeridian.hpp | 4 +- .../detail/envelope/range_of_boxes.hpp | 40 +- .../detail/equals/collect_vectors.hpp | 13 +- .../detail/equals/implementation.hpp | 6 +- .../algorithms/detail/expand/indexed.hpp | 2 +- .../algorithms/detail/expand/interface.hpp | 10 +- .../algorithms/detail/expand_by_epsilon.hpp | 2 +- .../algorithms/detail/extreme_points.hpp | 18 +- .../algorithms/detail/gc_group_elements.hpp | 2 +- .../detail/has_self_intersections.hpp | 6 +- .../algorithms/detail/interior_iterator.hpp | 2 +- .../detail/intersection/areal_areal.hpp | 2 +- .../detail/intersection/box_box.hpp | 2 +- .../box_box_implementation.hpp} | 19 +- .../algorithms/detail/intersection/gc.hpp | 6 +- .../detail/intersection/interface.hpp | 12 +- .../algorithms/detail/intersection/multi.hpp | 32 +- .../is_simple/debug_print_boundary_points.hpp | 10 +- .../algorithms/detail/is_simple/linear.hpp | 4 +- .../detail/is_simple/multipoint.hpp | 6 +- .../detail/is_valid/complement_graph.hpp | 16 +- .../is_valid/debug_complement_graph.hpp | 19 +- .../is_valid/has_invalid_coordinate.hpp | 6 +- .../algorithms/detail/is_valid/has_spikes.hpp | 21 +- .../algorithms/detail/is_valid/interface.hpp | 2 +- .../detail/is_valid/is_acceptable_turn.hpp | 2 +- .../algorithms/detail/is_valid/linear.hpp | 17 +- .../detail/is_valid/multipolygon.hpp | 16 +- .../algorithms/detail/is_valid/polygon.hpp | 15 +- .../algorithms/detail/is_valid/ring.hpp | 5 +- .../geometry/algorithms/detail/make/make.hpp | 14 +- .../algorithms/detail/max_interval_gap.hpp | 2 +- .../detail/multi_modify_with_predicate.hpp | 5 +- .../geometry/algorithms/detail/multi_sum.hpp | 9 +- .../num_distinct_consecutive_points.hpp | 13 +- .../algorithms/detail/overlaps/interface.hpp | 4 +- .../algorithms/detail/overlay/add_rings.hpp | 24 +- .../overlay/append_no_dups_or_spikes.hpp | 89 +- .../detail/overlay/approximately_equals.hpp | 25 + .../detail/overlay/assign_parents.hpp | 60 +- .../detail/overlay/backtrack_check_si.hpp | 17 +- .../detail/overlay/check_enrich.hpp | 27 +- .../detail/overlay/clip_linestring.hpp | 5 +- .../detail/overlay/cluster_exits.hpp | 33 +- .../detail/overlay/colocate_clusters.hpp | 107 + .../detail/overlay/convert_ring.hpp | 1 + .../detail/overlay/copy_segment_point.hpp | 6 +- .../detail/overlay/copy_segments.hpp | 10 +- .../overlay/discard_duplicate_turns.hpp | 10 +- .../overlay/enrich_intersection_points.hpp | 330 +- .../algorithms/detail/overlay/follow.hpp | 37 +- .../detail/overlay/follow_linear_linear.hpp | 4 +- .../detail/overlay/get_clusters.hpp | 21 +- .../detail/overlay/get_distance_measure.hpp | 4 +- .../detail/overlay/get_turn_info.hpp | 65 +- .../overlay/get_turn_info_for_endpoint.hpp | 8 +- .../detail/overlay/get_turn_info_helpers.hpp | 12 +- .../detail/overlay/get_turn_info_la.hpp | 24 +- .../detail/overlay/get_turn_info_ll.hpp | 26 +- .../algorithms/detail/overlay/get_turns.hpp | 91 +- .../detail/overlay/handle_colocations.hpp | 116 +- .../detail/overlay/handle_self_turns.hpp | 49 +- .../overlay/inconsistent_turns_exception.hpp | 5 +- .../detail/overlay/intersection_insert.hpp | 32 +- .../detail/overlay/less_by_segment_ratio.hpp | 21 +- .../detail/overlay/linear_linear.hpp | 4 +- .../algorithms/detail/overlay/overlay.hpp | 17 +- .../detail/overlay/pointlike_areal.hpp | 2 +- .../detail/overlay/pointlike_linear.hpp | 5 +- .../detail/overlay/pointlike_pointlike.hpp | 29 +- .../detail/overlay/range_in_geometry.hpp | 3 +- .../detail/overlay/select_rings.hpp | 36 +- .../detail/overlay/self_turn_points.hpp | 3 +- .../detail/overlay/sort_by_side.hpp | 41 +- .../algorithms/detail/overlay/traversal.hpp | 84 +- .../detail/overlay/traversal_ring_creator.hpp | 12 +- .../overlay/traversal_switch_detector.hpp | 4 + .../algorithms/detail/overlay/traverse.hpp | 11 +- .../algorithms/detail/overlay/turn_info.hpp | 5 +- .../geometry/algorithms/detail/partition.hpp | 169 +- .../algorithms/detail/point_on_border.hpp | 7 +- .../algorithms/detail/recalculate.hpp | 7 +- .../detail/relate/boundary_checker.hpp | 10 +- .../algorithms/detail/relate/box_areal.hpp | 70 + .../algorithms/detail/relate/de9im.hpp | 4 +- .../detail/relate/follow_helpers.hpp | 14 +- .../detail/relate/implementation.hpp | 17 + .../detail/relate/implementation_gc.hpp | 37 +- .../algorithms/detail/relate/interface.hpp | 2 +- .../algorithms/detail/relate/linear_areal.hpp | 15 +- .../detail/relate/linear_linear.hpp | 2 +- .../detail/relate/multi_point_geometry.hpp | 22 +- .../detail/relate/point_geometry.hpp | 4 +- .../algorithms/detail/relate/point_point.hpp | 54 +- .../algorithms/detail/relate/result.hpp | 17 +- .../detail/relate/topology_check.hpp | 27 +- .../algorithms/detail/relate/turns.hpp | 2 +- .../detail/sections/range_by_section.hpp | 1 - .../detail/sections/section_functions.hpp | 2 +- .../detail/sections/sectionalize.hpp | 26 +- .../geometry/algorithms/detail/sweep.hpp | 7 +- .../detail/touches/implementation.hpp | 13 +- .../algorithms/detail/tupled_output.hpp | 5 +- .../algorithms/detail/within/multi_point.hpp | 26 +- .../detail/within/point_in_geometry.hpp | 55 +- .../detail/within/within_no_turns.hpp | 93 +- .../boost/geometry/algorithms/difference.hpp | 15 +- .../algorithms/discrete_frechet_distance.hpp | 12 +- .../discrete_hausdorff_distance.hpp | 4 +- .../algorithms/dispatch/closest_points.hpp | 2 +- .../boost/geometry/algorithms/for_each.hpp | 20 +- .../boost/geometry/algorithms/is_convex.hpp | 14 +- .../boost/geometry/algorithms/is_empty.hpp | 7 +- .../boost/geometry/algorithms/length.hpp | 13 +- .../geometry/algorithms/line_interpolate.hpp | 22 +- .../boost/geometry/algorithms/make.hpp | 5 +- .../geometry/algorithms/merge_elements.hpp | 6 +- .../geometry/algorithms/num_segments.hpp | 5 +- .../boost/geometry/algorithms/perimeter.hpp | 6 +- .../geometry/algorithms/point_on_surface.hpp | 26 +- .../geometry/algorithms/remove_spikes.hpp | 32 +- .../boost/geometry/algorithms/reverse.hpp | 7 +- .../boost/geometry/algorithms/simplify.hpp | 18 +- .../geometry/algorithms/sym_difference.hpp | 16 +- .../boost/geometry/algorithms/transform.hpp | 36 +- .../boost/geometry/algorithms/union.hpp | 16 +- .../boost/geometry/algorithms/unique.hpp | 14 +- .../boost/geometry/arithmetic/arithmetic.hpp | 30 +- .../boost/geometry/arithmetic/dot_product.hpp | 2 +- .../arithmetic/infinite_line_functions.hpp | 2 +- .../boost/geometry/arithmetic/normalize.hpp | 2 +- inst/include/boost/geometry/core/config.hpp | 14 +- .../include/boost/geometry/core/exception.hpp | 8 +- .../boost/geometry/core/interior_rings.hpp | 6 +- .../boost/geometry/core/mutable_range.hpp | 6 +- .../boost/geometry/formulas/area_formulas.hpp | 5 +- .../formulas/differential_quantities.hpp | 27 +- .../boost/geometry/formulas/geographic.hpp | 16 +- .../formulas/gnomonic_intersection.hpp | 11 +- .../geometry/formulas/gnomonic_spheroid.hpp | 6 +- .../formulas/interpolate_point_spherical.hpp | 5 +- .../boost/geometry/formulas/karney_direct.hpp | 3 +- .../geometry/formulas/karney_inverse.hpp | 18 +- .../geometry/formulas/meridian_direct.hpp | 15 +- .../geometry/formulas/meridian_inverse.hpp | 13 +- .../formulas/sjoberg_intersection.hpp | 43 +- .../boost/geometry/formulas/spherical.hpp | 2 +- .../geometry/formulas/thomas_inverse.hpp | 6 +- .../geometry/formulas/vertex_longitude.hpp | 2 +- .../geometry/formulas/vincenty_direct.hpp | 2 +- .../geometry/formulas/vincenty_inverse.hpp | 4 +- .../geometry/geometries/adapted/std_array.hpp | 14 - .../concepts/geometry_collection_concept.hpp | 4 +- .../concepts/multi_linestring_concept.hpp | 2 +- .../concepts/multi_polygon_concept.hpp | 3 +- .../boost/geometry/geometries/linestring.hpp | 6 - .../geometry/geometries/multi_linestring.hpp | 7 +- .../boost/geometry/geometries/multi_point.hpp | 6 +- .../geometry/geometries/multi_polygon.hpp | 8 +- .../boost/geometry/geometries/point_xyz.hpp | 2 +- .../boost/geometry/geometries/polygon.hpp | 8 +- .../boost/geometry/geometries/ring.hpp | 6 +- inst/include/boost/geometry/geometry.hpp | 5 + .../comparable_distance_centroid.hpp | 2 +- .../index/detail/algorithms/content.hpp | 6 +- .../index/detail/algorithms/diff_abs.hpp | 6 +- .../algorithms/intersection_content.hpp | 2 +- .../index/detail/algorithms/margin.hpp | 6 +- .../index/detail/algorithms/minmaxdist.hpp | 2 +- .../detail/algorithms/path_intersection.hpp | 16 +- .../geometry/index/detail/bounded_view.hpp | 2 +- .../index/detail/distance_predicates.hpp | 12 +- .../geometry/index/detail/minmax_heap.hpp | 12 +- .../geometry/index/detail/predicates.hpp | 12 +- .../geometry/index/detail/rtree/iterators.hpp | 2 +- .../rtree/linear/redistribute_elements.hpp | 4 +- .../geometry/index/detail/rtree/node/node.hpp | 6 +- .../index/detail/rtree/node/pairs.hpp | 35 +- .../detail/rtree/node/variant_dynamic.hpp | 24 +- .../detail/rtree/node/variant_static.hpp | 20 +- .../index/detail/rtree/node/weak_dynamic.hpp | 31 +- .../index/detail/rtree/node/weak_static.hpp | 24 +- .../index/detail/rtree/pack_create.hpp | 23 +- .../rtree/quadratic/redistribute_elements.hpp | 8 +- .../index/detail/rtree/query_iterators.hpp | 28 +- .../detail/rtree/rstar/choose_next_node.hpp | 2 +- .../index/detail/rtree/rstar/insert.hpp | 20 +- .../rtree/rstar/redistribute_elements.hpp | 6 +- .../detail/rtree/utilities/are_boxes_ok.hpp | 6 +- .../detail/rtree/utilities/are_counts_ok.hpp | 10 +- .../detail/rtree/utilities/are_levels_ok.hpp | 8 +- .../index/detail/rtree/utilities/gl_draw.hpp | 2 +- .../index/detail/rtree/utilities/print.hpp | 13 +- .../detail/rtree/utilities/statistics.hpp | 23 +- .../index/detail/rtree/utilities/view.hpp | 2 +- .../detail/rtree/visitors/children_box.hpp | 8 +- .../index/detail/rtree/visitors/copy.hpp | 2 +- .../index/detail/rtree/visitors/count.hpp | 11 +- .../index/detail/rtree/visitors/destroy.hpp | 9 +- .../detail/rtree/visitors/distance_query.hpp | 14 +- .../index/detail/rtree/visitors/insert.hpp | 12 +- .../index/detail/rtree/visitors/iterator.hpp | 6 +- .../index/detail/rtree/visitors/remove.hpp | 11 +- .../detail/rtree/visitors/spatial_query.hpp | 10 +- .../geometry/index/detail/serialization.hpp | 23 +- .../boost/geometry/index/detail/utilities.hpp | 8 +- .../boost/geometry/index/detail/varray.hpp | 245 +- .../geometry/index/detail/varray_detail.hpp | 89 +- .../include/boost/geometry/index/equal_to.hpp | 21 +- .../boost/geometry/index/indexable.hpp | 17 +- .../include/boost/geometry/index/inserter.hpp | 2 +- .../boost/geometry/index/parameters.hpp | 6 +- .../boost/geometry/index/predicates.hpp | 4 +- inst/include/boost/geometry/index/rtree.hpp | 106 +- inst/include/boost/geometry/io/dsv/write.hpp | 25 +- .../boost/geometry/io/svg/svg_mapper.hpp | 26 +- inst/include/boost/geometry/io/svg/write.hpp | 31 +- .../boost/geometry/io/wkt/detail/prefix.hpp | 16 +- .../geometry/io/wkt/detail/wkt_multi.hpp | 45 +- inst/include/boost/geometry/io/wkt/read.hpp | 274 +- inst/include/boost/geometry/io/wkt/write.hpp | 161 +- .../point_iterator/inner_range_type.hpp | 2 +- .../geometry/iterators/flatten_iterator.hpp | 2 +- .../geometry/multi/io/wkt/detail/prefix.hpp | 5 +- .../boost/geometry/policies/compare.hpp | 279 +- .../is_valid/failing_reason_policy.hpp | 30 +- .../predicate_based_interrupt_policy.hpp | 15 +- .../policies/robustness/rescale_policy.hpp | 6 +- .../policies/robustness/segment_ratio.hpp | 6 +- inst/include/boost/geometry/srs/epsg.hpp | 2 +- inst/include/boost/geometry/srs/esri.hpp | 2 +- inst/include/boost/geometry/srs/iau2000.hpp | 2 +- .../include/boost/geometry/srs/projection.hpp | 12 +- .../boost/geometry/srs/projections/dpar.hpp | 74 +- .../geometry/srs/projections/esri_params.hpp | 2 +- .../geometry/srs/projections/exception.hpp | 2 +- .../geometry/srs/projections/factory.hpp | 6 +- .../srs/projections/iau2000_params.hpp | 2 +- .../srs/projections/impl/base_dynamic.hpp | 2 +- .../srs/projections/impl/dms_parser.hpp | 10 +- .../geometry/srs/projections/impl/geocent.hpp | 18 +- .../projections/impl/pj_apply_gridshift.hpp | 8 +- .../srs/projections/impl/pj_datum_set.hpp | 4 +- .../srs/projections/impl/pj_ell_set.hpp | 4 +- .../srs/projections/impl/pj_gridinfo.hpp | 28 +- .../srs/projections/impl/pj_gridlist.hpp | 16 +- .../geometry/srs/projections/impl/pj_init.hpp | 10 +- .../geometry/srs/projections/impl/pj_mlfn.hpp | 2 +- .../srs/projections/impl/pj_param.hpp | 20 +- .../geometry/srs/projections/impl/pj_qsfn.hpp | 2 +- .../srs/projections/impl/pj_transform.hpp | 21 +- .../geometry/srs/projections/par_data.hpp | 11 - .../geometry/srs/projections/proj/aea.hpp | 2 +- .../geometry/srs/projections/proj/aeqd.hpp | 4 +- .../geometry/srs/projections/proj/airy.hpp | 2 +- .../geometry/srs/projections/proj/august.hpp | 2 +- .../geometry/srs/projections/proj/bipc.hpp | 2 +- .../geometry/srs/projections/proj/cass.hpp | 1 + .../geometry/srs/projections/proj/cc.hpp | 4 +- .../geometry/srs/projections/proj/cea.hpp | 2 +- .../geometry/srs/projections/proj/chamb.hpp | 2 +- .../geometry/srs/projections/proj/collg.hpp | 2 +- .../geometry/srs/projections/proj/crast.hpp | 2 +- .../geometry/srs/projections/proj/denoy.hpp | 2 +- .../geometry/srs/projections/proj/eck1.hpp | 2 +- .../geometry/srs/projections/proj/eck2.hpp | 2 +- .../geometry/srs/projections/proj/eck3.hpp | 2 +- .../geometry/srs/projections/proj/eck4.hpp | 2 +- .../geometry/srs/projections/proj/eck5.hpp | 2 +- .../geometry/srs/projections/proj/eqc.hpp | 2 +- .../geometry/srs/projections/proj/eqdc.hpp | 2 +- .../geometry/srs/projections/proj/etmerc.hpp | 2 +- .../geometry/srs/projections/proj/fahey.hpp | 2 +- .../geometry/srs/projections/proj/fouc_s.hpp | 2 +- .../geometry/srs/projections/proj/gall.hpp | 2 +- .../geometry/srs/projections/proj/geocent.hpp | 2 +- .../geometry/srs/projections/proj/geos.hpp | 10 +- .../geometry/srs/projections/proj/gins8.hpp | 2 +- .../geometry/srs/projections/proj/gn_sinu.hpp | 4 +- .../geometry/srs/projections/proj/gnom.hpp | 2 +- .../geometry/srs/projections/proj/goode.hpp | 4 +- .../geometry/srs/projections/proj/gstmerc.hpp | 2 +- .../geometry/srs/projections/proj/hammer.hpp | 2 +- .../geometry/srs/projections/proj/hatano.hpp | 2 +- .../geometry/srs/projections/proj/healpix.hpp | 6 +- .../geometry/srs/projections/proj/igh.hpp | 7 +- .../geometry/srs/projections/proj/imw_p.hpp | 2 +- .../geometry/srs/projections/proj/isea.hpp | 6 +- .../geometry/srs/projections/proj/labrd.hpp | 2 +- .../geometry/srs/projections/proj/laea.hpp | 2 +- .../geometry/srs/projections/proj/lagrng.hpp | 4 +- .../geometry/srs/projections/proj/larr.hpp | 2 +- .../geometry/srs/projections/proj/lask.hpp | 2 +- .../geometry/srs/projections/proj/latlong.hpp | 2 +- .../geometry/srs/projections/proj/lcc.hpp | 2 +- .../geometry/srs/projections/proj/lcca.hpp | 4 +- .../geometry/srs/projections/proj/loxim.hpp | 2 +- .../geometry/srs/projections/proj/lsat.hpp | 2 +- .../geometry/srs/projections/proj/mbt_fps.hpp | 2 +- .../geometry/srs/projections/proj/mbtfpp.hpp | 2 +- .../geometry/srs/projections/proj/mbtfpq.hpp | 2 +- .../geometry/srs/projections/proj/merc.hpp | 4 +- .../geometry/srs/projections/proj/mill.hpp | 2 +- .../srs/projections/proj/mod_ster.hpp | 2 +- .../geometry/srs/projections/proj/moll.hpp | 4 +- .../geometry/srs/projections/proj/nsper.hpp | 2 +- .../geometry/srs/projections/proj/ob_tran.hpp | 17 +- .../geometry/srs/projections/proj/putp3.hpp | 4 +- .../geometry/srs/projections/proj/putp4p.hpp | 4 +- .../geometry/srs/projections/proj/putp5.hpp | 6 +- .../geometry/srs/projections/proj/putp6.hpp | 6 +- .../geometry/srs/projections/proj/qsc.hpp | 2 +- .../geometry/srs/projections/proj/sconics.hpp | 8 +- .../geometry/srs/projections/proj/somerc.hpp | 4 +- .../geometry/srs/projections/proj/sterea.hpp | 2 +- .../geometry/srs/projections/proj/sts.hpp | 4 +- .../geometry/srs/projections/proj/tcc.hpp | 2 +- .../geometry/srs/projections/proj/tcea.hpp | 4 +- .../geometry/srs/projections/proj/tmerc.hpp | 40 +- .../geometry/srs/projections/proj/tpeqd.hpp | 2 +- .../geometry/srs/projections/proj/urm5.hpp | 2 +- .../geometry/srs/projections/proj/urmfps.hpp | 4 +- .../geometry/srs/projections/proj/vandg.hpp | 6 +- .../geometry/srs/projections/proj/vandg2.hpp | 2 +- .../geometry/srs/projections/proj/vandg4.hpp | 2 +- .../geometry/srs/projections/proj/wag2.hpp | 2 +- .../geometry/srs/projections/proj/wag3.hpp | 2 +- .../geometry/srs/projections/proj/wag7.hpp | 2 +- .../geometry/srs/projections/proj/wink1.hpp | 2 +- .../geometry/srs/projections/proj/wink2.hpp | 4 +- .../boost/geometry/srs/projections/proj4.hpp | 2 +- .../boost/geometry/srs/projections/spar.hpp | 4 - .../geometry/srs/projections/str_cast.hpp | 16 +- .../boost/geometry/srs/shared_grids.hpp | 2 +- .../boost/geometry/srs/shared_grids_boost.hpp | 5 +- .../boost/geometry/srs/shared_grids_std.hpp | 2 +- inst/include/boost/geometry/srs/spheroid.hpp | 2 +- .../boost/geometry/srs/transformation.hpp | 5 +- .../agnostic/point_in_box_by_side.hpp | 15 +- .../point_in_poly_oriented_winding.hpp | 5 + .../geometry/strategies/azimuth/spherical.hpp | 2 +- .../boost/geometry/strategies/buffer.hpp | 29 +- .../boost/geometry/strategies/cartesian.hpp | 2 +- .../strategies/cartesian/box_in_box.hpp | 4 +- .../strategies/cartesian/buffer_end_flat.hpp | 21 +- .../strategies/cartesian/buffer_end_round.hpp | 27 +- .../cartesian/buffer_join_round.hpp | 8 +- .../cartesian/buffer_point_circle.hpp | 7 +- .../strategies/cartesian/centroid_average.hpp | 7 +- .../cartesian/centroid_weighted_length.hpp | 8 +- .../cartesian/closest_points_pt_seg.hpp | 6 +- .../geometry/strategies/cartesian/densify.hpp | 4 +- .../cartesian/disjoint_segment_box.hpp | 2 +- .../cartesian/distance_projected_point.hpp | 2 +- .../cartesian/distance_pythagoras_box_box.hpp | 2 +- .../distance_pythagoras_point_box.hpp | 2 +- .../strategies/cartesian/intersection.hpp | 14 +- .../cartesian/side_rounded_input.hpp | 10 +- .../cartesian/turn_in_ring_winding.hpp | 17 +- .../strategies/closest_points/geographic.hpp | 6 +- .../strategies/closest_points/spherical.hpp | 6 +- .../strategies/comparable_distance_result.hpp | 2 +- .../boost/geometry/strategies/compare.hpp | 57 +- .../strategies/convex_hull/cartesian.hpp | 18 +- .../strategies/convex_hull/geographic.hpp | 12 +- .../strategies/convex_hull/spherical.hpp | 12 +- .../distance/backward_compatibility.hpp | 2 +- .../strategies/distance/comparable.hpp | 2 +- .../boost/geometry/strategies/geographic.hpp | 2 +- .../geographic/buffer_end_round.hpp | 153 + .../strategies/geographic/buffer_helper.hpp | 101 + .../geographic/buffer_join_miter.hpp | 132 + .../geographic/buffer_join_round.hpp | 123 + .../geographic/buffer_point_circle.hpp | 88 +- .../geographic/buffer_side_straight.hpp | 119 + .../geographic/closest_points_pt_seg.hpp | 50 +- .../geographic/disjoint_segment_box.hpp | 2 +- .../geographic/distance_cross_track.hpp | 7 +- .../strategies/geographic/intersection.hpp | 10 +- .../geographic/intersection_elliptic.hpp | 2 +- .../geometry/strategies/index/services.hpp | 2 +- .../geometry/strategies/relate/cartesian.hpp | 11 +- .../geometry/strategies/relate/geographic.hpp | 19 +- .../geometry/strategies/relate/spherical.hpp | 11 +- .../boost/geometry/strategies/spherical.hpp | 2 +- .../spherical/closest_points_pt_seg.hpp | 12 +- .../geometry/strategies/spherical/compare.hpp | 72 +- .../spherical/distance_cross_track.hpp | 32 +- .../strategies/spherical/intersection.hpp | 14 +- .../strategies/spherical/point_in_point.hpp | 2 +- .../spherical/point_in_poly_winding.hpp | 55 +- .../boost/geometry/strategies/strategies.hpp | 4 + .../strategies/transform/srs_transformer.hpp | 2 +- .../geometry/strategy/cartesian/area.hpp | 4 +- .../geometry/strategy/cartesian/area_box.hpp | 2 +- .../strategy/cartesian/envelope_segment.hpp | 2 +- .../strategy/cartesian/side_by_triangle.hpp | 6 +- .../geometry/strategy/geographic/area_box.hpp | 4 +- .../boost/geometry/strategy/relate.hpp | 2 +- .../geometry/strategy/spherical/area_box.hpp | 2 +- .../spherical/envelope_multipoint.hpp | 64 +- .../strategy/spherical/envelope_range.hpp | 6 +- .../strategy/spherical/expand_box.hpp | 2 +- .../boost/geometry/util/combine_if.hpp | 4 +- .../include/boost/geometry/util/constexpr.hpp | 27 + .../geometry/util/for_each_with_index.hpp | 49 + .../geometry/util/has_infinite_coordinate.hpp | 2 +- .../geometry/util/has_nan_coordinate.hpp | 2 +- .../util/has_non_finite_coordinate.hpp | 2 +- inst/include/boost/geometry/util/math.hpp | 16 +- .../normalize_spheroidal_box_coordinates.hpp | 2 +- .../util/normalize_spheroidal_coordinates.hpp | 8 +- .../boost/geometry/util/parameter_type_of.hpp | 2 +- .../boost/geometry/util/precise_math.hpp | 6 +- .../boost/geometry/util/promote_integral.hpp | 2 +- inst/include/boost/geometry/util/range.hpp | 2 +- inst/include/boost/geometry/util/rational.hpp | 4 +- inst/include/boost/geometry/util/sequence.hpp | 8 +- .../boost/geometry/util/series_expansion.hpp | 10 +- .../boost/geometry/views/closeable_view.hpp | 11 +- .../detail/boundary_view/implementation.hpp | 3 +- .../views/detail/closed_clockwise_view.hpp | 11 +- .../views/detail/random_access_view.hpp | 6 +- .../boost/geometry/views/reversible_view.hpp | 11 +- inst/include/boost/get_pointer.hpp | 2 +- inst/include/boost/hana/config.hpp | 2 + inst/include/boost/icl/concept/interval.hpp | 42 +- .../boost/icl/concept/interval_associator.hpp | 2 +- .../boost/icl/detail/element_iterator.hpp | 1 - .../boost/icl/detail/requires_cxx11.hpp | 22 + inst/include/boost/icl/impl_config.hpp | 1 + inst/include/boost/icl/iterator.hpp | 1 - inst/include/boost/implicit_cast.hpp | 2 +- .../boost/integer/extended_euclidean.hpp | 4 +- .../interprocess/allocators/adaptive_pool.hpp | 1 + .../allocators/node_allocator.hpp | 1 + .../allocators/private_adaptive_pool.hpp | 1 + .../allocators/private_node_allocator.hpp | 1 + .../interprocess/detail/config_begin.hpp | 2 +- .../detail/config_external_begin.hpp | 8 +- .../interprocess/detail/intersegment_ptr.hpp | 1044 ---- .../detail/managed_multi_shared_memory.hpp | 429 -- .../interprocess/detail/os_file_functions.hpp | 1 + .../boost/interprocess/detail/timed_utils.hpp | 2 +- .../boost/interprocess/detail/win32_api.hpp | 10 +- .../include/boost/interprocess/offset_ptr.hpp | 3 +- .../interprocess/smart_ptr/shared_ptr.hpp | 2 +- .../intrusive/circular_list_algorithms.hpp | 10 +- .../intrusive/detail/array_initializer.hpp | 10 +- .../detail/common_slist_algorithms.hpp | 10 +- .../boost/intrusive/detail/hook_traits.hpp | 1 + .../boost/intrusive/detail/slist_iterator.hpp | 1 + .../boost/intrusive/detail/workaround.hpp | 26 + inst/include/boost/intrusive/list.hpp | 2 +- .../boost/intrusive/pointer_plus_bits.hpp | 4 +- inst/include/boost/intrusive/slist.hpp | 2 +- inst/include/boost/io/ios_state.hpp | 4 +- .../detail/config/disable_warnings.hpp | 1 + inst/include/boost/iostreams/filter/gzip.hpp | 12 +- .../boost/iostreams/filter/newline.hpp | 4 +- inst/include/boost/iostreams/filter/zstd.hpp | 4 +- inst/include/boost/iterator/advance.hpp | 2 +- .../detail/facade_iterator_category.hpp | 21 +- .../boost/iterator/filter_iterator.hpp | 18 +- inst/include/boost/iterator/is_iterator.hpp | 148 + .../boost/iterator/iterator_concepts.hpp | 4 +- inst/include/boost/json.hpp | 2 + inst/include/boost/json/array.hpp | 24 +- inst/include/boost/json/basic_parser.hpp | 54 +- inst/include/boost/json/basic_parser_impl.hpp | 682 ++- inst/include/boost/json/conversion.hpp | 75 +- inst/include/boost/json/detail/align.hpp | 64 - inst/include/boost/json/detail/array.hpp | 6 +- inst/include/boost/json/detail/buffer.hpp | 6 +- .../json/detail/charconv/chars_format.hpp | 22 + .../charconv/detail/compute_float64.hpp | 201 + .../json/detail/charconv/detail/config.hpp | 59 + .../detail/charconv/detail/emulated128.hpp | 191 + .../detail/fast_float/ascii_number.hpp | 283 + .../charconv/detail/fast_float/bigint.hpp | 623 +++ .../fast_float/constexpr_feature_detect.hpp | 34 + .../detail/fast_float/decimal_to_binary.hpp | 196 + .../detail/fast_float/digit_comparison.hpp | 442 ++ .../charconv/detail/fast_float/fast_float.hpp | 48 + .../charconv/detail/fast_float/fast_table.hpp | 708 +++ .../detail/fast_float/float_common.hpp | 562 ++ .../detail/fast_float/parse_number.hpp | 237 + .../charconv/detail/from_chars_float_impl.hpp | 172 + .../detail/from_chars_integer_impl.hpp | 252 + .../charconv/detail/from_chars_result.hpp | 39 + .../charconv/detail/integer_search_trees.hpp | 240 + .../json/detail/charconv/detail/parser.hpp | 378 ++ .../charconv/detail/significand_tables.hpp | 667 +++ .../boost/json/detail/charconv/from_chars.hpp | 33 + .../json/detail/charconv/impl/from_chars.ipp | 47 + .../boost/json/detail/charconv/limits.hpp | 86 + inst/include/boost/json/detail/config.hpp | 36 +- .../boost/json/detail/default_resource.hpp | 10 +- inst/include/boost/json/detail/digest.hpp | 6 +- inst/include/boost/json/detail/except.hpp | 24 +- inst/include/boost/json/detail/format.hpp | 8 +- inst/include/boost/json/detail/handler.hpp | 6 +- .../boost/json/detail/hash_combine.hpp | 38 - inst/include/boost/json/detail/impl/array.hpp | 6 +- .../json/detail/impl/default_resource.ipp | 6 +- .../include/boost/json/detail/impl/except.ipp | 50 +- .../include/boost/json/detail/impl/format.ipp | 10 +- .../boost/json/detail/impl/handler.ipp | 6 +- .../json/detail/impl/shared_resource.ipp | 6 +- inst/include/boost/json/detail/impl/stack.ipp | 35 +- .../boost/json/detail/impl/string_impl.ipp | 72 +- inst/include/boost/json/detail/object.hpp | 6 +- inst/include/boost/json/detail/parse_into.hpp | 1809 ++++++ .../boost/json/detail/ryu/detail/common.hpp | 30 +- .../boost/json/detail/ryu/detail/d2s.hpp | 6 +- .../json/detail/ryu/detail/d2s_full_table.hpp | 6 +- .../json/detail/ryu/detail/d2s_intrinsics.hpp | 6 +- .../json/detail/ryu/detail/digit_table.hpp | 6 +- .../boost/json/detail/ryu/impl/d2s.ipp | 16 +- inst/include/boost/json/detail/ryu/ryu.hpp | 9 +- inst/include/boost/json/detail/sbo_buffer.hpp | 189 + .../boost/json/detail/shared_resource.hpp | 6 +- inst/include/boost/json/detail/sse2.hpp | 6 +- inst/include/boost/json/detail/stack.hpp | 24 +- inst/include/boost/json/detail/stream.hpp | 6 +- .../include/boost/json/detail/string_impl.hpp | 6 +- inst/include/boost/json/detail/utf8.hpp | 6 +- inst/include/boost/json/detail/value.hpp | 10 +- inst/include/boost/json/detail/value_from.hpp | 209 +- inst/include/boost/json/detail/value_to.hpp | 757 +-- inst/include/boost/json/error.hpp | 26 +- inst/include/boost/json/fwd.hpp | 16 +- inst/include/boost/json/impl/array.hpp | 18 +- inst/include/boost/json/impl/array.ipp | 37 +- inst/include/boost/json/impl/conversion.hpp | 311 +- inst/include/boost/json/impl/error.hpp | 82 +- inst/include/boost/json/impl/error.ipp | 159 +- inst/include/boost/json/impl/kind.ipp | 6 +- .../boost/json/impl/monotonic_resource.ipp | 15 +- .../include/boost/json/impl/null_resource.ipp | 23 +- inst/include/boost/json/impl/object.hpp | 121 +- inst/include/boost/json/impl/object.ipp | 64 +- inst/include/boost/json/impl/parse.ipp | 30 +- inst/include/boost/json/impl/parse_into.hpp | 131 + inst/include/boost/json/impl/parser.ipp | 15 +- inst/include/boost/json/impl/pointer.ipp | 295 +- inst/include/boost/json/impl/serialize.ipp | 105 +- inst/include/boost/json/impl/serializer.ipp | 31 +- .../boost/json/impl/static_resource.ipp | 18 +- .../include/boost/json/impl/stream_parser.ipp | 15 +- inst/include/boost/json/impl/string.hpp | 6 +- inst/include/boost/json/impl/string.ipp | 21 +- inst/include/boost/json/impl/value.hpp | 6 +- inst/include/boost/json/impl/value.ipp | 157 +- inst/include/boost/json/impl/value_ref.hpp | 6 +- inst/include/boost/json/impl/value_ref.ipp | 6 +- inst/include/boost/json/impl/value_stack.ipp | 12 +- inst/include/boost/json/impl/visit.hpp | 6 +- inst/include/boost/json/kind.hpp | 6 +- inst/include/boost/json/memory_resource.hpp | 6 +- .../include/boost/json/monotonic_resource.hpp | 14 +- inst/include/boost/json/null_resource.hpp | 6 +- inst/include/boost/json/object.hpp | 75 +- inst/include/boost/json/parse.hpp | 26 +- inst/include/boost/json/parse_into.hpp | 216 + inst/include/boost/json/parse_options.hpp | 83 +- inst/include/boost/json/parser.hpp | 118 +- inst/include/boost/json/serialize.hpp | 20 +- inst/include/boost/json/serialize_options.hpp | 70 + inst/include/boost/json/serializer.hpp | 55 +- .../boost/json/set_pointer_options.hpp | 66 + inst/include/boost/json/src.hpp | 1 + inst/include/boost/json/static_resource.hpp | 24 +- inst/include/boost/json/storage_ptr.hpp | 44 +- inst/include/boost/json/stream_parser.hpp | 156 +- inst/include/boost/json/string.hpp | 148 +- inst/include/boost/json/string_view.hpp | 6 +- inst/include/boost/json/system_error.hpp | 6 +- inst/include/boost/json/value.hpp | 444 +- inst/include/boost/json/value_from.hpp | 172 +- inst/include/boost/json/value_ref.hpp | 12 +- inst/include/boost/json/value_stack.hpp | 6 +- inst/include/boost/json/value_to.hpp | 184 +- inst/include/boost/json/visit.hpp | 6 +- inst/include/boost/lambda2/lambda2.hpp | 2 +- inst/include/boost/lexical_cast.hpp | 21 +- .../boost/lexical_cast/bad_lexical_cast.hpp | 20 +- .../boost/lexical_cast/detail/buffer_view.hpp | 59 + .../lexical_cast/detail/converter_lexical.hpp | 88 +- .../detail/converter_lexical_streams.hpp | 144 +- .../lexical_cast/detail/converter_numeric.hpp | 30 +- .../boost/lexical_cast/detail/inf_nan.hpp | 24 +- .../lexical_cast/detail/is_character.hpp | 4 +- .../detail/lcast_char_constants.hpp | 2 +- .../detail/lcast_unsigned_converters.hpp | 31 +- .../boost/lexical_cast/detail/widest_char.hpp | 4 +- .../lexical_cast/try_lexical_convert.hpp | 19 +- inst/include/boost/limits.hpp | 24 +- inst/include/boost/locale.hpp | 1 + .../boost/locale/boundary/boundary_point.hpp | 6 + inst/include/boost/locale/boundary/facets.hpp | 64 +- inst/include/boost/locale/boundary/index.hpp | 55 +- .../include/boost/locale/boundary/segment.hpp | 13 +- inst/include/boost/locale/boundary/types.hpp | 2 +- inst/include/boost/locale/collator.hpp | 4 +- inst/include/boost/locale/config.hpp | 31 + inst/include/boost/locale/conversion.hpp | 99 +- inst/include/boost/locale/date_time.hpp | 88 +- inst/include/boost/locale/date_time_facet.hpp | 13 +- inst/include/boost/locale/detail/encoding.hpp | 58 + inst/include/boost/locale/detail/facet_id.hpp | 35 + .../boost/locale/detail/is_supported_char.hpp | 48 + inst/include/boost/locale/encoding.hpp | 302 +- inst/include/boost/locale/encoding_errors.hpp | 2 +- inst/include/boost/locale/encoding_utf.hpp | 17 +- inst/include/boost/locale/format.hpp | 115 +- inst/include/boost/locale/formatting.hpp | 33 +- inst/include/boost/locale/generator.hpp | 19 +- inst/include/boost/locale/generic_codecvt.hpp | 295 +- inst/include/boost/locale/gnu_gettext.hpp | 48 +- inst/include/boost/locale/hold_ptr.hpp | 21 +- inst/include/boost/locale/info.hpp | 12 +- .../boost/locale/localization_backend.hpp | 27 +- inst/include/boost/locale/message.hpp | 194 +- inst/include/boost/locale/utf.hpp | 30 +- inst/include/boost/locale/utf8_codecvt.hpp | 14 +- inst/include/boost/locale/util.hpp | 53 +- .../include/boost/locale/util/locale_data.hpp | 78 + inst/include/boost/locale/util/string.hpp | 25 +- inst/include/boost/log/detail/config.hpp | 10 +- inst/include/boost/log/detail/header.hpp | 10 +- inst/include/boost/math/ccmath/abs.hpp | 14 +- inst/include/boost/math/ccmath/ceil.hpp | 9 +- .../boost/math/ccmath/detail/config.hpp | 52 + inst/include/boost/math/ccmath/div.hpp | 10 +- inst/include/boost/math/ccmath/fabs.hpp | 6 + inst/include/boost/math/ccmath/fdim.hpp | 53 +- inst/include/boost/math/ccmath/floor.hpp | 10 +- inst/include/boost/math/ccmath/fma.hpp | 10 +- inst/include/boost/math/ccmath/fmax.hpp | 56 +- inst/include/boost/math/ccmath/fmin.hpp | 56 +- inst/include/boost/math/ccmath/fmod.hpp | 10 +- inst/include/boost/math/ccmath/fpclassify.hpp | 21 +- inst/include/boost/math/ccmath/frexp.hpp | 9 +- inst/include/boost/math/ccmath/hypot.hpp | 72 +- inst/include/boost/math/ccmath/ilogb.hpp | 9 +- inst/include/boost/math/ccmath/isfinite.hpp | 9 +- inst/include/boost/math/ccmath/isgreater.hpp | 9 +- .../boost/math/ccmath/isgreaterequal.hpp | 9 +- inst/include/boost/math/ccmath/isinf.hpp | 27 +- inst/include/boost/math/ccmath/isless.hpp | 9 +- .../include/boost/math/ccmath/islessequal.hpp | 9 +- inst/include/boost/math/ccmath/isnan.hpp | 17 +- inst/include/boost/math/ccmath/isnormal.hpp | 10 +- .../include/boost/math/ccmath/isunordered.hpp | 8 +- inst/include/boost/math/ccmath/ldexp.hpp | 14 +- inst/include/boost/math/ccmath/logb.hpp | 40 +- inst/include/boost/math/ccmath/modf.hpp | 10 +- inst/include/boost/math/ccmath/next.hpp | 14 +- inst/include/boost/math/ccmath/remainder.hpp | 10 +- inst/include/boost/math/ccmath/round.hpp | 9 +- inst/include/boost/math/ccmath/scalbln.hpp | 9 +- inst/include/boost/math/ccmath/scalbn.hpp | 10 +- inst/include/boost/math/ccmath/signbit.hpp | 10 +- inst/include/boost/math/ccmath/sqrt.hpp | 36 +- inst/include/boost/math/ccmath/trunc.hpp | 9 +- inst/include/boost/math/complex/acos.hpp | 2 +- inst/include/boost/math/complex/acosh.hpp | 2 +- inst/include/boost/math/complex/asin.hpp | 2 +- inst/include/boost/math/complex/asinh.hpp | 2 +- inst/include/boost/math/complex/atan.hpp | 2 +- inst/include/boost/math/complex/atanh.hpp | 2 +- inst/include/boost/math/complex/details.hpp | 1 - .../boost/math/concepts/distributions.hpp | 2 +- .../boost/math/concepts/real_concept.hpp | 20 + .../math/constants/calculate_constants.hpp | 1 - .../boost/math/cstdfloat/cstdfloat_cmath.hpp | 56 - .../math/cstdfloat/cstdfloat_iostream.hpp | 37 +- .../boost/math/cstdfloat/cstdfloat_limits.hpp | 2 +- .../boost/math/cstdfloat/cstdfloat_types.hpp | 4 +- .../boost/math/differentiation/autodiff.hpp | 2 +- .../differentiation/finite_difference.hpp | 4 +- .../differentiation/lanczos_smoothing.hpp | 9 + .../boost/math/distributions/bernoulli.hpp | 2 +- .../include/boost/math/distributions/beta.hpp | 60 +- .../boost/math/distributions/binomial.hpp | 6 +- .../boost/math/distributions/cauchy.hpp | 2 +- .../detail/common_error_handling.hpp | 7 +- .../detail/derived_accessors.hpp | 15 + .../detail/hypergeometric_cdf.hpp | 9 +- .../detail/hypergeometric_pdf.hpp | 40 +- .../detail/inv_discrete_quantile.hpp | 18 +- ...rical_cumulative_distribution_function.hpp | 8 + .../boost/math/distributions/exponential.hpp | 39 + .../math/distributions/extreme_value.hpp | 50 + .../boost/math/distributions/fisher_f.hpp | 4 +- .../boost/math/distributions/geometric.hpp | 62 +- .../math/distributions/hypergeometric.hpp | 64 +- .../math/distributions/inverse_gaussian.hpp | 4 +- .../math/distributions/kolmogorov_smirnov.hpp | 4 +- .../boost/math/distributions/laplace.hpp | 85 + .../boost/math/distributions/logistic.hpp | 79 + .../math/distributions/non_central_beta.hpp | 29 +- .../distributions/non_central_chi_squared.hpp | 32 +- .../math/distributions/non_central_f.hpp | 14 +- .../math/distributions/non_central_t.hpp | 95 +- .../boost/math/distributions/pareto.hpp | 48 + .../boost/math/distributions/poisson.hpp | 1 - .../boost/math/distributions/rayleigh.hpp | 47 + .../boost/math/distributions/skew_normal.hpp | 8 +- .../boost/math/distributions/uniform.hpp | 2 +- .../boost/math/distributions/weibull.hpp | 42 + .../include/boost/math/filters/daubechies.hpp | 8 + .../detail/bezier_polynomial_detail.hpp | 4 +- .../detail/cardinal_cubic_b_spline_detail.hpp | 4 +- .../detail/whittaker_shannon_detail.hpp | 2 + .../boost/math/interpolators/pchip.hpp | 15 +- .../boost/math/policies/error_handling.hpp | 14 +- .../quadrature/detail/exp_sinh_detail.hpp | 6 +- .../quadrature/detail/sinh_sinh_detail.hpp | 6 +- .../quadrature/detail/tanh_sinh_detail.hpp | 40 +- .../boost/math/quadrature/exp_sinh.hpp | 8 +- .../math/quadrature/naive_monte_carlo.hpp | 27 +- .../boost/math/quadrature/sinh_sinh.hpp | 2 +- .../boost/math/quadrature/tanh_sinh.hpp | 18 +- .../math/quadrature/wavelet_transforms.hpp | 2 +- inst/include/boost/math/special_functions.hpp | 2 + .../math/special_functions/bessel_prime.hpp | 6 +- .../boost/math/special_functions/beta.hpp | 176 +- .../boost/math/special_functions/binomial.hpp | 4 +- .../math/special_functions/chebyshev.hpp | 32 +- .../boost/math/special_functions/cos_pi.hpp | 2 +- .../special_functions/daubechies_scaling.hpp | 287 +- .../special_functions/daubechies_wavelet.hpp | 8 + .../special_functions/detail/bessel_jy.hpp | 7 + .../detail/bessel_jy_asym.hpp | 4 +- .../detail/bessel_jy_derivatives_series.hpp | 4 +- .../detail/bessel_jy_series.hpp | 11 +- .../daubechies_scaling_integer_grid.hpp | 2 +- .../special_functions/detail/fp_traits.hpp | 2 +- .../detail/hypergeometric_1F1_bessel.hpp | 20 +- .../detail/hypergeometric_1F1_large_abz.hpp | 8 + .../detail/hypergeometric_1F1_recurrence.hpp | 2 +- ...etric_1F1_small_a_negative_b_by_ratio.hpp} | 0 .../hypergeometric_pFq_checked_series.hpp | 8 +- .../detail/hypergeometric_series.hpp | 2 +- .../detail/ibeta_inverse.hpp | 119 +- .../detail/igamma_inverse.hpp | 16 +- .../special_functions/detail/lgamma_small.hpp | 2 +- .../special_functions/detail/polygamma.hpp | 10 +- .../detail/unchecked_bernoulli.hpp | 1074 +++- .../detail/unchecked_factorial.hpp | 674 ++- .../boost/math/special_functions/digamma.hpp | 6 +- .../boost/math/special_functions/ellint_1.hpp | 330 +- .../boost/math/special_functions/ellint_2.hpp | 290 +- .../boost/math/special_functions/ellint_3.hpp | 4 +- .../boost/math/special_functions/ellint_d.hpp | 2 +- .../math/special_functions/ellint_rc.hpp | 2 +- .../math/special_functions/ellint_rd.hpp | 6 +- .../math/special_functions/ellint_rf.hpp | 2 +- .../math/special_functions/ellint_rg.hpp | 2 +- .../math/special_functions/ellint_rj.hpp | 8 +- .../boost/math/special_functions/erf.hpp | 16 +- .../boost/math/special_functions/expint.hpp | 6 +- .../math/special_functions/factorials.hpp | 10 +- .../math/special_functions/fibonacci.hpp | 4 +- .../fourier_transform_daubechies.hpp | 248 + .../math/special_functions/fpclassify.hpp | 2 +- .../boost/math/special_functions/gamma.hpp | 98 +- .../math/special_functions/gegenbauer.hpp | 6 +- .../boost/math/special_functions/hermite.hpp | 5 +- .../special_functions/hypergeometric_1F1.hpp | 47 +- .../special_functions/hypergeometric_2F0.hpp | 2 +- .../special_functions/hypergeometric_pFq.hpp | 3 +- .../special_functions/jacobi_elliptic.hpp | 2 +- .../boost/math/special_functions/laguerre.hpp | 2 +- .../math/special_functions/lambert_w.hpp | 111 +- .../boost/math/special_functions/legendre.hpp | 8 +- .../special_functions/legendre_stieltjes.hpp | 8 +- .../boost/math/special_functions/log1p.hpp | 32 +- .../boost/math/special_functions/math_fwd.hpp | 764 +-- .../boost/math/special_functions/next.hpp | 15 +- .../nonfinite_num_facets.hpp | 2 - .../boost/math/special_functions/owens_t.hpp | 10 +- .../boost/math/special_functions/powm1.hpp | 15 +- .../boost/math/special_functions/prime.hpp | 3561 ++++++++---- .../boost/math/special_functions/round.hpp | 127 +- .../boost/math/special_functions/rsqrt.hpp | 10 +- .../boost/math/special_functions/sin_pi.hpp | 2 +- .../special_functions/spherical_harmonic.hpp | 2 +- .../boost/math/special_functions/sqrt1pm1.hpp | 2 +- .../boost/math/special_functions/trunc.hpp | 108 +- .../boost/math/special_functions/zeta.hpp | 4 +- .../math/statistics/signal_statistics.hpp | 7 + .../math/statistics/univariate_statistics.hpp | 8 +- .../include/boost/math/tools/big_constant.hpp | 2 +- .../tools/centered_continued_fraction.hpp | 7 + .../boost/math/tools/cohen_acceleration.hpp | 7 +- .../boost/math/tools/condition_numbers.hpp | 13 +- inst/include/boost/math/tools/config.hpp | 30 +- .../boost/math/tools/convert_from_string.hpp | 28 +- .../boost/math/tools/engel_expansion.hpp | 8 + inst/include/boost/math/tools/estrin.hpp | 72 + .../boost/math/tools/luroth_expansion.hpp | 9 + inst/include/boost/math/tools/norms.hpp | 8 + .../boost/math/tools/polynomial_gcd.hpp | 2 +- inst/include/boost/math/tools/precision.hpp | 4 +- inst/include/boost/math/tools/promotion.hpp | 139 +- .../boost/math/tools/random_vector.hpp | 24 +- inst/include/boost/math/tools/roots.hpp | 78 +- inst/include/boost/math/tools/series.hpp | 2 +- .../boost/math/tools/signal_statistics.hpp | 8 + .../math/tools/simple_continued_fraction.hpp | 8 + .../math/tools/univariate_statistics.hpp | 8 + inst/include/boost/math/tools/workaround.hpp | 4 + .../boost/move/algo/adaptive_merge.hpp | 9 +- .../include/boost/move/algo/adaptive_sort.hpp | 40 +- .../move/algo/detail/adaptive_sort_merge.hpp | 75 +- .../boost/move/algo/detail/basic_op.hpp | 1 + .../boost/move/algo/detail/heap_sort.hpp | 5 +- .../boost/move/algo/detail/insertion_sort.hpp | 2 +- inst/include/boost/move/algo/detail/merge.hpp | 38 +- .../boost/move/algo/detail/merge_sort.hpp | 2 +- .../boost/move/algo/detail/pdqsort.hpp | 2 +- .../include/boost/move/algo/detail/search.hpp | 2 +- .../boost/move/algo/detail/set_difference.hpp | 2 +- inst/include/boost/move/algo/move.hpp | 9 +- inst/include/boost/move/algo/predicate.hpp | 2 +- inst/include/boost/move/algorithm.hpp | 1 - inst/include/boost/move/default_delete.hpp | 11 +- inst/include/boost/move/detail/nsec_clock.hpp | 89 +- .../boost/move/detail/std_ns_begin.hpp | 2 +- .../include/boost/move/detail/type_traits.hpp | 11 +- inst/include/boost/move/detail/workaround.hpp | 77 + inst/include/boost/move/unique_ptr.hpp | 35 +- inst/include/boost/move/utility.hpp | 4 +- inst/include/boost/move/utility_core.hpp | 14 +- inst/include/boost/mp11/algorithm.hpp | 55 +- inst/include/boost/mp11/detail/config.hpp | 11 + inst/include/boost/mp11/detail/mp_append.hpp | 144 +- inst/include/boost/mp11/detail/mp_defer.hpp | 119 + inst/include/boost/mp11/detail/mp_fold.hpp | 108 +- inst/include/boost/mp11/detail/mp_front.hpp | 14 +- .../boost/mp11/detail/mp_is_value_list.hpp | 41 + inst/include/boost/mp11/detail/mp_list_v.hpp | 27 + .../include/boost/mp11/detail/mp_map_find.hpp | 2 +- inst/include/boost/mp11/detail/mp_plus.hpp | 5 +- inst/include/boost/mp11/detail/mp_rename.hpp | 23 +- inst/include/boost/mp11/detail/mp_value.hpp | 25 + inst/include/boost/mp11/function.hpp | 2 +- inst/include/boost/mp11/integral.hpp | 1 + inst/include/boost/mp11/list.hpp | 174 +- inst/include/boost/mp11/utility.hpp | 98 +- inst/include/boost/mp11/version.hpp | 2 +- inst/include/boost/mpi/collectives.hpp | 49 + .../boost/mpi/collectives/all_gatherv.hpp | 140 + .../boost/mpi/collectives/scatterv.hpp | 2 +- inst/include/boost/mpi/datatype.hpp | 6 +- .../mpi/detail/binary_buffer_iprimitive.hpp | 2 +- .../mpi/detail/binary_buffer_oprimitive.hpp | 2 +- .../mpi/detail/ignore_skeleton_oarchive.hpp | 3 +- inst/include/boost/mpi/detail/offsets.hpp | 6 +- inst/include/boost/mpi/environment.hpp | 21 +- inst/include/boost/mpl/assert.hpp | 8 +- inst/include/boost/mpl/print.hpp | 2 +- inst/include/boost/multi_array.hpp | 2 +- .../boost/multi_index/composite_key.hpp | 2 +- .../detail/archive_constructed.hpp | 10 +- .../detail/bad_archive_exception.hpp | 36 + .../detail/bidir_node_iterator.hpp | 15 +- .../boost/multi_index/detail/bucket_array.hpp | 9 +- .../multi_index/detail/hash_index_args.hpp | 4 +- .../detail/hash_index_iterator.hpp | 22 +- .../detail/ignore_wstrict_aliasing.hpp | 2 +- .../boost/multi_index/detail/index_loader.hpp | 21 +- .../multi_index/detail/index_node_base.hpp | 9 +- .../boost/multi_index/detail/index_saver.hpp | 10 +- .../multi_index/detail/is_transparent.hpp | 2 +- .../multi_index/detail/ord_index_impl.hpp | 32 +- .../multi_index/detail/rnd_node_iterator.hpp | 15 +- .../boost/multi_index/detail/safe_mode.hpp | 11 +- .../detail/serialization_version.hpp | 11 +- .../boost/multi_index/hashed_index.hpp | 26 +- .../boost/multi_index/random_access_index.hpp | 19 +- .../boost/multi_index/sequenced_index.hpp | 19 +- inst/include/boost/multi_index_container.hpp | 65 +- .../boost/multiprecision/complex128.hpp | 2 - .../boost/multiprecision/complex_adaptor.hpp | 8 - .../boost/multiprecision/cpp_bin_float.hpp | 32 +- .../boost/multiprecision/cpp_complex.hpp | 21 - .../boost/multiprecision/cpp_dec_float.hpp | 34 +- inst/include/boost/multiprecision/cpp_int.hpp | 68 +- .../boost/multiprecision/cpp_int/bitwise.hpp | 4 +- .../multiprecision/cpp_int/cpp_int_config.hpp | 15 - .../boost/multiprecision/cpp_int/divide.hpp | 10 +- .../boost/multiprecision/cpp_int/literals.hpp | 2 + .../boost/multiprecision/cpp_int/misc.hpp | 14 +- .../boost/multiprecision/debug_adaptor.hpp | 6 - .../multiprecision/detail/default_ops.hpp | 11 + .../detail/float_string_cvt.hpp | 6 +- .../detail/functions/constants.hpp | 2 +- .../multiprecision/detail/functions/pow.hpp | 2 +- .../multiprecision/detail/functions/trunc.hpp | 10 +- .../multiprecision/detail/number_base.hpp | 52 +- .../detail/standalone_config.hpp | 25 +- .../multiprecision/detail/string_helpers.hpp | 48 + inst/include/boost/multiprecision/eigen.hpp | 27 +- .../include/boost/multiprecision/float128.hpp | 10 - inst/include/boost/multiprecision/fwd.hpp | 268 + inst/include/boost/multiprecision/gmp.hpp | 48 +- .../boost/multiprecision/logged_adaptor.hpp | 5 - inst/include/boost/multiprecision/mpc.hpp | 19 - inst/include/boost/multiprecision/mpfi.hpp | 19 +- inst/include/boost/multiprecision/mpfr.hpp | 31 +- inst/include/boost/multiprecision/number.hpp | 10 + .../boost/multiprecision/rational_adaptor.hpp | 11 +- inst/include/boost/multiprecision/tommath.hpp | 7 - inst/include/boost/next_prior.hpp | 47 +- inst/include/boost/none_t.hpp | 8 + .../odeint/integrate/max_step_checker.hpp | 4 +- .../numeric/odeint/stepper/generation.hpp | 4 +- ...on_controlled_adams_bashforth_moulton.hpp} | 0 ...ation_runge_kutta_cash_karp54_classic.hpp} | 0 .../boost/optional/bad_optional_access.hpp | 2 +- .../detail/old_optional_implementation.hpp | 9 +- .../boost/optional/detail/optional_config.hpp | 6 +- .../detail/optional_reference_spec.hpp | 4 +- .../boost/optional/detail/optional_relops.hpp | 2 +- .../boost/optional/detail/optional_swap.hpp | 12 +- .../optional_trivially_copyable_base.hpp | 6 +- inst/include/boost/optional/optional.hpp | 8 +- .../aux_/pack/tag_keyword_arg_ref.hpp | 4 +- .../aux_/pack/unmatched_argument.hpp | 2 +- .../parameter/aux_/preprocessor/overloads.hpp | 2 +- inst/include/boost/parameter/aux_/tag.hpp | 8 +- .../parameter/aux_/unwrap_cv_reference.hpp | 2 +- inst/include/boost/parameter/aux_/void.hpp | 2 +- inst/include/boost/parameter/binding.hpp | 6 +- inst/include/boost/parameter/match.hpp | 2 +- .../boost/parameter/template_keyword.hpp | 2 +- inst/include/boost/parameter/value_type.hpp | 6 +- inst/include/boost/pending/iterator_tests.hpp | 10 +- inst/include/boost/phoenix/core/actor.hpp | 2 +- inst/include/boost/phoenix/stl/tuple.hpp | 7 +- inst/include/boost/polymorphic_cast.hpp | 16 +- .../boost/pool/simple_segregated_storage.hpp | 13 + inst/include/boost/predef/library/std.h | 1 + inst/include/boost/predef/library/std/msvc.h | 53 + inst/include/boost/predef/make.h | 4 + inst/include/boost/predef/os/vms.h | 2 +- inst/include/boost/predef/version.h | 2 +- inst/include/boost/process/async.hpp | 2 +- inst/include/boost/process/async_system.hpp | 2 +- .../boost/process/detail/child_decl.hpp | 10 +- inst/include/boost/process/detail/config.hpp | 28 +- .../boost/process/detail/posix/async_out.hpp | 2 +- .../boost/process/detail/posix/basic_cmd.hpp | 15 +- .../boost/process/detail/posix/basic_pipe.hpp | 13 +- .../boost/process/detail/posix/executor.hpp | 2 +- .../boost/process/detail/posix/handles.hpp | 4 +- .../process/detail/posix/io_context_ref.hpp | 2 +- .../boost/process/detail/posix/is_running.hpp | 2 +- .../process/detail/posix/search_path.hpp | 4 + .../process/detail/posix/sigchld_service.hpp | 88 +- .../process/detail/windows/basic_cmd.hpp | 12 +- .../process/detail/windows/basic_pipe.hpp | 2 +- .../process/detail/windows/child_handle.hpp | 2 +- .../process/detail/windows/environment.hpp | 12 +- .../boost/process/detail/windows/handles.hpp | 3 +- .../boost/process/detail/windows/pipe_in.hpp | 2 + .../boost/process/detail/windows/pipe_out.hpp | 4 +- .../process/detail/windows/search_path.hpp | 8 +- inst/include/boost/process/env.hpp | 2 +- inst/include/boost/process/environment.hpp | 9 +- inst/include/boost/process/extend.hpp | 2 +- inst/include/boost/process/group.hpp | 7 +- inst/include/boost/process/handles.hpp | 2 +- inst/include/boost/process/pipe.hpp | 10 +- inst/include/boost/process/posix.hpp | 2 +- inst/include/boost/process/v2/cstring_ref.hpp | 2 +- .../boost/process/v2/detail/config.hpp | 33 +- .../process/v2/detail/environment_posix.hpp | 4 +- .../v2/detail/impl/environment_posix.ipp | 6 +- .../v2/detail/impl/environment_win.ipp | 12 +- .../process/v2/detail/impl/last_error.ipp | 14 - .../v2/detail/impl/process_handle_windows.ipp | 75 +- .../boost/process/v2/detail/impl/utf8.ipp | 22 +- .../boost/process/v2/detail/last_error.hpp | 7 +- .../process/v2/detail/process_handle_fd.hpp | 37 + .../v2/detail/process_handle_fd_or_signal.hpp | 37 + .../v2/detail/process_handle_signal.hpp | 62 +- .../v2/detail/process_handle_windows.hpp | 30 +- inst/include/boost/process/v2/environment.hpp | 44 +- inst/include/boost/process/v2/execute.hpp | 8 +- inst/include/boost/process/v2/exit_code.hpp | 154 +- inst/include/boost/process/v2/ext.hpp | 16 + inst/include/boost/process/v2/ext/cmd.hpp | 71 + inst/include/boost/process/v2/ext/cwd.hpp | 58 + .../process/v2/ext/detail/impl/proc_info.ipp | 127 + .../boost/process/v2/ext/detail/proc_info.hpp | 125 + inst/include/boost/process/v2/ext/env.hpp | 155 + inst/include/boost/process/v2/ext/exe.hpp | 62 + .../include/boost/process/v2/ext/impl/cmd.ipp | 463 ++ .../include/boost/process/v2/ext/impl/cwd.ipp | 241 + .../include/boost/process/v2/ext/impl/env.ipp | 389 ++ .../include/boost/process/v2/ext/impl/exe.ipp | 193 + inst/include/boost/process/v2/impl/error.ipp | 2 +- inst/include/boost/process/v2/impl/pid.ipp | 737 ++- inst/include/boost/process/v2/impl/shell.ipp | 26 +- inst/include/boost/process/v2/pid.hpp | 29 +- inst/include/boost/process/v2/popen.hpp | 36 - .../boost/process/v2/posix/bind_fd.hpp | 5 +- .../process/v2/posix/default_launcher.hpp | 17 +- .../process/v2/posix/detail/close_handles.ipp | 2 +- .../v2/posix/fork_and_forget_launcher.hpp | 8 +- .../process/v2/posix/pdfork_launcher.hpp | 16 +- .../boost/process/v2/posix/vfork_launcher.hpp | 11 +- inst/include/boost/process/v2/process.hpp | 55 +- inst/include/boost/process/v2/shell.hpp | 22 +- inst/include/boost/process/v2/src.hpp | 7 +- inst/include/boost/process/v2/start_dir.hpp | 1 + inst/include/boost/process/v2/stdio.hpp | 61 +- .../process/v2/windows/as_user_launcher.hpp | 6 +- .../process/v2/windows/creation_flags.hpp | 9 +- .../process/v2/windows/default_launcher.hpp | 8 +- .../v2/windows/impl/default_launcher.ipp | 2 +- .../v2/windows/with_logon_launcher.hpp | 6 +- .../v2/windows/with_token_launcher.hpp | 6 +- .../program_options/detail/config_file.hpp | 2 +- inst/include/boost/program_options/errors.hpp | 22 +- inst/include/boost/progress.hpp | 24 +- .../detail/info_parser_write.hpp | 1 + .../detail/ptree_implementation.hpp | 9 +- .../property_tree/detail/ptree_utils.hpp | 2 +- .../property_tree/detail/xml_parser_write.hpp | 2 + .../boost/property_tree/id_translator.hpp | 2 +- .../boost/property_tree/ini_parser.hpp | 4 + .../json_parser/detail/parser.hpp | 1 - .../json_parser/detail/write.hpp | 2 +- inst/include/boost/property_tree/ptree.hpp | 4 +- .../property_tree/ptree_serialization.hpp | 6 +- .../boost/property_tree/stream_translator.hpp | 4 +- .../boost/property_tree/string_path.hpp | 2 +- inst/include/boost/proto/expr.hpp | 2 +- .../boost/ptr_container/clone_allocator.hpp | 10 +- .../ptr_container/detail/default_deleter.hpp | 12 +- .../ptr_container/detail/is_convertible.hpp | 22 +- .../boost/ptr_container/detail/move.hpp | 18 +- .../detail/reversible_ptr_container.hpp | 270 +- .../ptr_container/detail/scoped_deleter.hpp | 66 +- .../ptr_container/detail/static_move_ptr.hpp | 94 +- .../ptr_container/detail/throw_exception.hpp | 2 +- .../detail/void_ptr_iterator.hpp | 46 +- .../include/boost/ptr_container/exception.hpp | 6 +- .../boost/ptr_container/indirect_fun.hpp | 68 +- inst/include/boost/ptr_container/nullable.hpp | 32 +- .../ptr_container/ptr_sequence_adapter.hpp | 285 +- .../boost/ptr_container/ptr_vector.hpp | 20 +- .../boost/python/detail/wrap_python.hpp | 2 +- inst/include/boost/qvm/config.hpp | 22 + inst/include/boost/qvm/map_mat_vec.hpp | 22 +- inst/include/boost/qvm/mat_operations.hpp | 8 +- inst/include/boost/qvm/to_string.hpp | 46 + .../boost/random/detail/disable_warnings.hpp | 2 +- .../boost/random/inversive_congruential.hpp | 2 +- .../boost/random/subtract_with_carry.hpp | 28 +- .../random/uniform_real_distribution.hpp | 4 +- inst/include/boost/range/adaptor/indexed.hpp | 2 +- inst/include/boost/ratio/config.hpp | 86 +- inst/include/boost/ratio/detail/gcd_lcm.hpp | 53 + .../ratio/detail/is_evenly_divisible_by.hpp | 32 + inst/include/boost/ratio/detail/is_ratio.hpp | 28 + inst/include/boost/ratio/detail/mpl/abs.hpp | 89 - inst/include/boost/ratio/detail/mpl/gcd.hpp | 124 - inst/include/boost/ratio/detail/mpl/lcm.hpp | 126 - inst/include/boost/ratio/detail/mpl/sign.hpp | 89 - .../boost/ratio/detail/overflow_helpers.hpp | 367 -- inst/include/boost/ratio/detail/ratio_io.hpp | 1342 ----- .../boost/ratio/mpl/rational_c_tag.hpp | 25 - inst/include/boost/ratio/ratio.hpp | 254 +- inst/include/boost/ratio/ratio_fwd.hpp | 86 +- inst/include/boost/ratio/ratio_io.hpp | 533 -- .../boost/regex/v4/regex_workaround.hpp | 14 +- .../boost/regex/v5/regex_workaround.hpp | 14 +- inst/include/boost/serialization/array.hpp | 2 +- .../boost/serialization/array_wrapper.hpp | 2 +- .../serialization/boost_unordered_map.hpp | 28 + .../serialization/boost_unordered_set.hpp | 27 + .../boost/serialization/collection_traits.hpp | 2 +- .../detail/is_default_constructible.hpp | 4 +- .../detail/stack_constructor.hpp | 2 +- .../extended_type_info_no_rtti.hpp | 9 +- .../extended_type_info_typeid.hpp | 2 +- .../boost/serialization/force_include.hpp | 2 +- inst/include/boost/serialization/nvp.hpp | 2 +- .../boost/serialization/serialization.hpp | 2 +- .../include/boost/serialization/singleton.hpp | 14 +- .../boost/serialization/split_free.hpp | 4 +- .../boost/serialization/split_member.hpp | 2 +- .../boost/serialization/static_warning.hpp | 4 +- .../boost/serialization/strong_typedef.hpp | 2 +- .../boost/serialization/throw_exception.hpp | 5 +- inst/include/boost/serialization/tracking.hpp | 2 +- inst/include/boost/serialization/traits.hpp | 4 +- inst/include/boost/serialization/vector.hpp | 4 +- inst/include/boost/serialization/version.hpp | 2 +- .../boost/signals2/detail/auto_buffer.hpp | 24 +- .../boost/signals2/detail/foreign_ptr.hpp | 6 +- .../boost/signals2/detail/lwm_win32_cs.hpp | 14 - .../boost/signals2/detail/signal_template.hpp | 4 +- .../smart_ptr/allocate_local_shared_array.hpp | 1 + .../boost/smart_ptr/allocate_shared_array.hpp | 1 + .../boost/smart_ptr/allocate_unique.hpp | 1 + .../boost/smart_ptr/atomic_shared_ptr.hpp | 1 + inst/include/boost/smart_ptr/bad_weak_ptr.hpp | 2 +- .../boost/smart_ptr/detail/requires_cxx11.hpp | 23 + .../boost/smart_ptr/detail/shared_count.hpp | 2 +- .../detail/sp_counted_base_gcc_atomic.hpp | 2 +- .../smart_ptr/detail/sp_thread_pause.hpp | 40 +- .../smart_ptr/detail/sp_thread_sleep.hpp | 93 +- .../smart_ptr/detail/sp_thread_yield.hpp | 89 +- .../boost/smart_ptr/detail/yield_k.hpp | 10 +- .../boost/smart_ptr/enable_shared_from.hpp | 1 + .../smart_ptr/enable_shared_from_this.hpp | 1 + .../include/boost/smart_ptr/intrusive_ptr.hpp | 2 + .../boost/smart_ptr/local_shared_ptr.hpp | 1 + .../boost/smart_ptr/make_local_shared.hpp | 1 + .../smart_ptr/make_local_shared_array.hpp | 1 + .../smart_ptr/make_local_shared_object.hpp | 1 + inst/include/boost/smart_ptr/make_shared.hpp | 1 + .../boost/smart_ptr/make_shared_array.hpp | 1 + .../boost/smart_ptr/make_shared_object.hpp | 1 + inst/include/boost/smart_ptr/make_unique.hpp | 1 + inst/include/boost/smart_ptr/scoped_array.hpp | 1 + inst/include/boost/smart_ptr/scoped_ptr.hpp | 3 +- inst/include/boost/smart_ptr/shared_array.hpp | 2 + inst/include/boost/smart_ptr/shared_ptr.hpp | 3 +- inst/include/boost/smart_ptr/weak_ptr.hpp | 1 + .../blk_detail/backbone.hpp | 8 +- .../block_indirect_sort/blk_detail/block.hpp | 1 + .../blk_detail/merge_blocks.hpp | 8 +- .../blk_detail/move_blocks.hpp | 3 +- .../blk_detail/parallel_sort.hpp | 11 +- .../block_indirect_sort.hpp | 37 +- inst/include/boost/sort/common/deque_cnc.hpp | 52 +- .../include/boost/sort/common/file_vector.hpp | 12 +- inst/include/boost/sort/common/indirect.hpp | 8 +- inst/include/boost/sort/common/int_array.hpp | 1 + .../include/boost/sort/common/merge_block.hpp | 1 + inst/include/boost/sort/common/merge_four.hpp | 40 +- .../boost/sort/common/merge_vector.hpp | 6 +- inst/include/boost/sort/common/pivot.hpp | 14 +- inst/include/boost/sort/common/range.hpp | 8 +- inst/include/boost/sort/common/rearrange.hpp | 8 +- inst/include/boost/sort/common/scheduler.hpp | 20 +- inst/include/boost/sort/common/sort_basic.hpp | 8 +- inst/include/boost/sort/common/spinlock.hpp | 3 +- inst/include/boost/sort/common/stack_cnc.hpp | 10 +- .../boost/sort/common/time_measure.hpp | 13 +- .../boost/sort/common/util/algorithm.hpp | 1 + .../include/boost/sort/common/util/atomic.hpp | 1 + .../sort/common/util/circular_buffer.hpp | 5 +- .../include/boost/sort/common/util/insert.hpp | 8 +- inst/include/boost/sort/common/util/merge.hpp | 1 + .../include/boost/sort/common/util/search.hpp | 4 +- .../include/boost/sort/common/util/traits.hpp | 3 +- .../flat_stable_sort/flat_stable_sort.hpp | 20 +- .../boost/sort/heap_sort/heap_sort.hpp | 215 - .../boost/sort/insert_sort/insert_sort.hpp | 52 +- .../parallel_stable_sort.hpp | 9 +- inst/include/boost/sort/pdqsort/pdqsort.hpp | 8 +- .../boost/sort/sample_sort/sample_sort.hpp | 14 +- inst/include/boost/sort/spinsort/spinsort.hpp | 31 +- .../sort/spreadsort/detail/float_sort.hpp | 8 +- .../sort/spreadsort/detail/integer_sort.hpp | 6 - .../sort/spreadsort/detail/string_sort.hpp | 15 +- .../boost/spirit/home/classic/tree/common.hpp | 7 - .../home/karma/nonterminal/debug_handler.hpp | 4 - .../home/karma/stream/detail/format_manip.hpp | 10 +- .../karma/stream/detail/format_manip_auto.hpp | 3 +- .../spirit/home/karma/stream/format_manip.hpp | 4 +- .../home/karma/stream/format_manip_attr.hpp | 2 + .../home/karma/stream/ostream_iterator.hpp | 1 + .../boost/spirit/home/karma/stream/stream.hpp | 3 +- .../home/qi/nonterminal/debug_handler.hpp | 6 +- .../home/qi/stream/detail/match_manip.hpp | 10 +- .../qi/stream/detail/match_manip_auto.hpp | 2 +- .../spirit/home/qi/stream/match_manip.hpp | 4 +- .../boost/spirit/home/support/attributes.hpp | 5 +- .../boost/spirit/home/support/char_class.hpp | 213 + .../home/support/char_encoding/unicode.hpp | 71 + .../char_encoding/unicode/category_table.hpp | 3306 +++++++---- .../char_encoding/unicode/lowercase_table.hpp | 195 +- .../support/char_encoding/unicode/query.hpp | 261 +- .../char_encoding/unicode/script_table.hpp | 4849 ++++++++++------- .../char_encoding/unicode/uppercase_table.hpp | 237 +- .../spirit/home/support/common_terminals.hpp | 71 + .../home/support/detail/lexer/debug.hpp | 2 +- .../home/support/detail/lexer/file_input.hpp | 2 +- .../support/detail/lexer/generate_cpp.hpp | 2 +- .../support/detail/lexer/generate_re2c.hpp | 2 +- .../support/detail/lexer/parser/parser.hpp | 1 + .../parser/tokeniser/re_tokeniser_helper.hpp | 1 + .../support/detail/lexer/string_token.hpp | 1 + .../iterators/detail/buf_id_check_policy.hpp | 3 +- .../detail/fixed_size_queue_policy.hpp | 3 +- .../iterators/detail/functor_input_policy.hpp | 3 +- .../detail/split_functor_input_policy.hpp | 3 +- .../detail/split_std_deque_policy.hpp | 3 +- .../support/iterators/line_pos_iterator.hpp | 130 +- .../home/support/iterators/multi_pass.hpp | 3 +- .../home/support/iterators/multi_pass_fwd.hpp | 1 - .../boost/spirit/home/support/utf8.hpp | 94 +- .../boost/spirit/home/support/utree/utree.hpp | 1 - inst/include/boost/spirit/home/x3.hpp | 8 +- .../boost/spirit/home/x3/char/unicode.hpp | 213 + .../spirit/home/x3/support/utility/utf8.hpp | 102 +- inst/include/boost/static_string/config.hpp | 44 + .../boost/static_string/static_string.hpp | 582 +- inst/include/boost/swap.hpp | 17 - inst/include/boost/system/detail/config.hpp | 5 +- .../boost/system/detail/error_category.hpp | 14 +- .../system/detail/error_category_impl.hpp | 41 +- .../boost/system/detail/error_code.hpp | 17 +- .../boost/system/detail/generic_category.hpp | 2 +- .../detail/generic_category_message.hpp | 2 +- .../boost/system/detail/interop_category.hpp | 2 +- inst/include/boost/system/detail/mutex.hpp | 128 + .../boost/system/detail/requires_cxx11.hpp | 21 + .../boost/system/detail/std_category.hpp | 21 +- .../boost/system/detail/system_category.hpp | 2 +- .../system_category_condition_win32.hpp | 6 + inst/include/boost/system/result.hpp | 546 +- inst/include/boost/test/detail/config.hpp | 11 + .../boost/test/detail/suppress_warnings.hpp | 8 +- inst/include/boost/test/impl/debug.ipp | 5 +- .../boost/test/impl/execution_monitor.ipp | 71 +- inst/include/boost/test/impl/test_tree.ipp | 2 +- inst/include/boost/test/tools/old/impl.hpp | 5 +- .../utils/basic_cstring/basic_cstring.hpp | 28 +- .../boost/test/utils/runtime/errors.hpp | 12 +- .../boost/test/utils/runtime/parameter.hpp | 2 +- inst/include/boost/test/utils/setcolor.hpp | 15 +- inst/include/boost/thread/csbl/functional.hpp | 15 +- .../thread/csbl/memory/allocator_arg.hpp | 14 +- .../thread/csbl/memory/allocator_traits.hpp | 11 - .../boost/thread/csbl/memory/config.hpp | 2 - .../thread/csbl/memory/pointer_traits.hpp | 11 - .../thread/csbl/memory/scoped_allocator.hpp | 11 - .../boost/thread/csbl/memory/shared_ptr.hpp | 19 - .../boost/thread/csbl/memory/unique_ptr.hpp | 10 +- inst/include/boost/thread/csbl/tuple.hpp | 19 +- inst/include/boost/thread/csbl/vector.hpp | 15 +- inst/include/boost/thread/detail/invoke.hpp | 15 +- .../thread/detail/string_to_unsigned.hpp | 55 + .../boost/thread/detail/string_trim.hpp | 29 + inst/include/boost/thread/future.hpp | 1 - .../boost/thread/futures/wait_for_any.hpp | 5 +- .../boost/thread/win32/basic_timed_mutex.hpp | 14 +- inst/include/boost/throw_exception.hpp | 4 +- inst/include/boost/timer.hpp | 4 + inst/include/boost/timer/config.hpp | 18 - .../boost/tuple/detail/tuple_basic.hpp | 8 +- inst/include/boost/tuple/tuple.hpp | 4 +- inst/include/boost/type_index.hpp | 8 +- .../boost/type_index/ctti_type_index.hpp | 67 +- .../detail/compile_time_type_info.hpp | 134 +- .../type_index/detail/ctti_register_class.hpp | 14 +- .../type_index/detail/stl_register_class.hpp | 12 +- .../boost/type_index/stl_type_index.hpp | 96 +- .../boost/type_index/type_index_facade.hpp | 79 +- inst/include/boost/type_traits.hpp | 1 + .../detail/has_prefix_operator.hpp | 2 +- .../detail/is_swappable_cxx_11.hpp | 70 + .../boost/type_traits/has_logical_not.hpp | 2 +- .../include/boost/type_traits/is_integral.hpp | 3 + .../type_traits/is_nothrow_swappable.hpp | 28 +- .../boost/type_traits/is_swappable.hpp | 92 + inst/include/boost/typeof/decltype.hpp | 5 +- inst/include/boost/typeof/dmc/typeof_impl.hpp | 100 - inst/include/boost/typeof/encode_decode.hpp | 58 - .../boost/typeof/encode_decode_params.hpp | 34 - .../boost/typeof/incr_registration_group.hpp | 11 +- inst/include/boost/typeof/int_encoding.hpp | 118 - .../boost/typeof/integral_template_param.hpp | 80 - inst/include/boost/typeof/message.hpp | 8 - inst/include/boost/typeof/modifiers.hpp | 121 - .../include/boost/typeof/msvc/typeof_impl.hpp | 11 +- inst/include/boost/typeof/native.hpp | 60 - .../boost/typeof/pointers_data_members.hpp | 38 - .../boost/typeof/register_functions.hpp | 50 - .../typeof/register_functions_iterate.hpp | 135 - .../boost/typeof/register_fundamental.hpp | 61 - .../boost/typeof/register_mem_functions.hpp | 32 - inst/include/boost/typeof/std/bitset.hpp | 6 +- inst/include/boost/typeof/std/complex.hpp | 6 +- inst/include/boost/typeof/std/deque.hpp | 7 +- inst/include/boost/typeof/std/fstream.hpp | 17 +- inst/include/boost/typeof/std/functional.hpp | 55 +- inst/include/boost/typeof/std/iostream.hpp | 8 +- inst/include/boost/typeof/std/istream.hpp | 11 +- inst/include/boost/typeof/std/iterator.hpp | 48 +- inst/include/boost/typeof/std/list.hpp | 7 +- inst/include/boost/typeof/std/locale.hpp | 31 +- inst/include/boost/typeof/std/map.hpp | 11 +- inst/include/boost/typeof/std/memory.hpp | 13 +- inst/include/boost/typeof/std/ostream.hpp | 8 +- inst/include/boost/typeof/std/queue.hpp | 7 +- inst/include/boost/typeof/std/set.hpp | 11 +- inst/include/boost/typeof/std/sstream.hpp | 21 +- inst/include/boost/typeof/std/stack.hpp | 7 +- inst/include/boost/typeof/std/streambuf.hpp | 7 +- inst/include/boost/typeof/std/string.hpp | 14 +- inst/include/boost/typeof/std/utility.hpp | 6 +- inst/include/boost/typeof/std/valarray.hpp | 12 +- inst/include/boost/typeof/std/vector.hpp | 7 +- .../boost/typeof/template_encoding.hpp | 160 - .../boost/typeof/template_template_param.hpp | 149 - inst/include/boost/typeof/type_encoding.hpp | 27 - .../boost/typeof/type_template_param.hpp | 37 - inst/include/boost/typeof/typeof.hpp | 210 +- inst/include/boost/typeof/typeof_impl.hpp | 187 - inst/include/boost/typeof/unsupported.hpp | 29 - inst/include/boost/typeof/vector.hpp | 166 - inst/include/boost/typeof/vector100.hpp | 321 -- inst/include/boost/typeof/vector150.hpp | 471 -- inst/include/boost/typeof/vector200.hpp | 621 --- inst/include/boost/typeof/vector50.hpp | 171 - .../boost/unordered/concurrent_flat_map.hpp | 860 +++ .../unordered/concurrent_flat_map_fwd.hpp | 51 + .../boost/unordered/concurrent_flat_set.hpp | 716 +++ .../unordered/concurrent_flat_set_fwd.hpp | 52 + .../unordered/detail/archive_constructed.hpp | 71 + .../detail/bad_archive_exception.hpp | 27 + .../detail/concurrent_static_asserts.hpp | 105 + inst/include/boost/unordered/detail/fca.hpp | 195 +- .../unordered/detail/foa/concurrent_table.hpp | 1743 ++++++ .../detail/{foa.hpp => foa/core.hpp} | 1871 ++++--- .../unordered/detail/foa/element_type.hpp | 64 + .../unordered/detail/foa/flat_map_types.hpp | 74 + .../unordered/detail/foa/flat_set_types.hpp | 44 + .../unordered/detail/foa/ignore_wshadow.hpp | 35 + .../unordered/detail/foa/node_handle.hpp | 204 + .../unordered/detail/foa/node_map_types.hpp | 127 + .../unordered/detail/foa/node_set_types.hpp | 92 + .../unordered/detail/foa/reentrancy_check.hpp | 138 + .../unordered/detail/foa/restore_wshadow.hpp | 11 + .../unordered/detail/foa/rw_spinlock.hpp | 179 + .../boost/unordered/detail/foa/table.hpp | 626 +++ .../detail/foa/tuple_rotate_right.hpp | 52 + inst/include/boost/unordered/detail/fwd.hpp | 64 - .../boost/unordered/detail/implementation.hpp | 1441 ++--- inst/include/boost/unordered/detail/mulx.hpp | 129 + .../boost/unordered/detail/narrow_cast.hpp | 44 + .../boost/unordered/detail/opt_storage.hpp | 30 + .../boost/unordered/detail/prime_fmod.hpp | 246 +- .../detail/serialization_version.hpp | 74 + .../unordered/detail/serialize_container.hpp | 204 + .../detail/serialize_fca_container.hpp | 156 + .../detail/serialize_tracked_address.hpp | 104 + .../boost/unordered/detail/static_assert.hpp | 16 + .../boost/unordered/detail/type_traits.hpp | 123 +- inst/include/boost/unordered/hash_traits.hpp | 9 +- .../boost/unordered/unordered_flat_map.hpp | 264 +- .../unordered/unordered_flat_map_fwd.hpp | 7 +- .../boost/unordered/unordered_flat_set.hpp | 116 +- .../unordered/unordered_flat_set_fwd.hpp | 7 +- .../include/boost/unordered/unordered_map.hpp | 1278 ++--- .../boost/unordered/unordered_map_fwd.hpp | 20 +- .../boost/unordered/unordered_node_map.hpp | 895 +++ .../unordered/unordered_node_map_fwd.hpp | 44 + .../boost/unordered/unordered_node_set.hpp | 699 +++ .../unordered/unordered_node_set_fwd.hpp | 44 + .../include/boost/unordered/unordered_set.hpp | 855 +-- .../boost/unordered/unordered_set_fwd.hpp | 22 +- inst/include/boost/url.hpp | 3 +- inst/include/boost/url/authority_view.hpp | 187 +- inst/include/boost/url/decode_view.hpp | 155 +- .../boost/url/detail/any_params_iter.hpp | 16 +- .../boost/url/detail/any_segments_iter.hpp | 71 +- inst/include/boost/url/detail/config.hpp | 58 +- inst/include/boost/url/detail/decode.hpp | 6 +- inst/include/boost/url/detail/empty_value.hpp | 162 - inst/include/boost/url/detail/encode.hpp | 4 +- inst/include/boost/url/detail/except.hpp | 4 +- inst/include/boost/url/detail/format_args.hpp | 340 ++ .../boost/url/detail/impl/any_params_iter.ipp | 507 -- .../url/detail/impl/any_segments_iter.ipp | 413 -- inst/include/boost/url/detail/impl/decode.ipp | 139 - inst/include/boost/url/detail/impl/except.ipp | 58 - .../boost/url/detail/impl/format_args.hpp | 416 ++ .../boost/url/detail/impl/normalize.ipp | 816 --- .../url/detail/impl/params_iter_impl.ipp | 245 - inst/include/boost/url/detail/impl/path.ipp | 23 - .../url/detail/impl/segments_iter_impl.ipp | 173 - .../boost/url/detail/impl/url_impl.ipp | 369 -- inst/include/boost/url/detail/move_chars.hpp | 16 +- inst/include/boost/url/detail/normalize.hpp | 72 +- .../boost/url/detail/optional_string.hpp | 18 +- .../boost/url/detail/over_allocator.hpp | 12 +- .../boost/url/detail/params_iter_impl.hpp | 10 +- inst/include/boost/url/detail/path.hpp | 10 +- inst/include/boost/url/detail/pattern.hpp | 60 + inst/include/boost/url/detail/pct_format.hpp | 42 + inst/include/boost/url/detail/print.hpp | 8 +- .../url/detail/replacement_field_rule.hpp | 76 + .../boost/url/detail/segments_iter_impl.hpp | 2 +- inst/include/boost/url/detail/string_view.hpp | 34 + inst/include/boost/url/detail/url_impl.hpp | 193 +- inst/include/boost/url/detail/vformat.hpp | 48 + inst/include/boost/url/encode.hpp | 10 +- inst/include/boost/url/encoding_opts.hpp | 8 +- inst/include/boost/url/error_types.hpp | 182 +- inst/include/boost/url/format.hpp | 416 ++ inst/include/boost/url/grammar/all_chars.hpp | 2 +- .../include/boost/url/grammar/alnum_chars.hpp | 2 +- .../include/boost/url/grammar/alpha_chars.hpp | 2 +- inst/include/boost/url/grammar/charset.hpp | 3 +- inst/include/boost/url/grammar/ci_string.hpp | 30 +- .../boost/url/grammar/dec_octet_rule.hpp | 4 +- inst/include/boost/url/grammar/delim_rule.hpp | 24 +- .../boost/url/grammar/detail/charset.hpp | 5 +- .../boost/url/grammar/detail/ci_string.hpp | 19 +- .../url/grammar/detail/impl/ci_string.ipp | 81 - .../url/grammar/detail/impl/recycled.ipp | 98 - .../boost/url/grammar/detail/recycled.hpp | 5 +- .../boost/url/grammar/detail/tuple.hpp | 12 +- .../include/boost/url/grammar/digit_chars.hpp | 2 +- .../boost/url/grammar/hexdig_chars.hpp | 2 +- .../boost/url/grammar/impl/ci_string.ipp | 154 - .../boost/url/grammar/impl/dec_octet_rule.ipp | 91 - .../boost/url/grammar/impl/delim_rule.ipp | 46 - inst/include/boost/url/grammar/impl/error.hpp | 85 +- inst/include/boost/url/grammar/impl/error.ipp | 116 - .../boost/url/grammar/impl/literal_rule.ipp | 69 - .../boost/url/grammar/impl/not_empty_rule.hpp | 2 +- .../boost/url/grammar/impl/optional_rule.hpp | 5 +- inst/include/boost/url/grammar/impl/parse.hpp | 6 +- .../boost/url/grammar/impl/range_rule.hpp | 74 +- .../boost/url/grammar/impl/recycled.hpp | 14 +- .../url/grammar/impl/string_view_base.ipp | 33 - .../boost/url/grammar/impl/token_rule.hpp | 4 +- .../boost/url/grammar/impl/tuple_rule.hpp | 30 +- .../boost/url/grammar/impl/unsigned_rule.hpp | 2 +- .../boost/url/grammar/impl/variant_rule.hpp | 6 +- .../boost/url/grammar/literal_rule.hpp | 10 +- inst/include/boost/url/grammar/lut_chars.hpp | 5 +- .../boost/url/grammar/not_empty_rule.hpp | 4 +- .../boost/url/grammar/optional_rule.hpp | 14 +- inst/include/boost/url/grammar/parse.hpp | 10 +- inst/include/boost/url/grammar/range_rule.hpp | 18 +- inst/include/boost/url/grammar/recycled.hpp | 13 + .../boost/url/grammar/string_token.hpp | 11 +- .../boost/url/grammar/string_view_base.hpp | 196 +- inst/include/boost/url/grammar/token_rule.hpp | 10 +- inst/include/boost/url/grammar/tuple_rule.hpp | 28 +- .../include/boost/url/grammar/type_traits.hpp | 7 +- .../boost/url/grammar/unsigned_rule.hpp | 6 +- .../boost/url/grammar/variant_rule.hpp | 7 +- inst/include/boost/url/grammar/vchars.hpp | 2 +- .../include/boost/url/impl/authority_view.ipp | 345 -- inst/include/boost/url/impl/decode_view.ipp | 107 - inst/include/boost/url/impl/encode.hpp | 8 +- inst/include/boost/url/impl/error.hpp | 54 +- inst/include/boost/url/impl/error.ipp | 81 - inst/include/boost/url/impl/ipv4_address.ipp | 167 - inst/include/boost/url/impl/ipv6_address.ipp | 252 - inst/include/boost/url/impl/params_base.hpp | 81 +- inst/include/boost/url/impl/params_base.ipp | 213 - .../boost/url/impl/params_encoded_base.ipp | 192 - .../boost/url/impl/params_encoded_ref.hpp | 27 - .../boost/url/impl/params_encoded_ref.ipp | 289 - .../boost/url/impl/params_encoded_view.ipp | 46 - inst/include/boost/url/impl/params_ref.hpp | 29 - inst/include/boost/url/impl/params_ref.ipp | 281 - inst/include/boost/url/impl/params_view.ipp | 62 - inst/include/boost/url/impl/parse.ipp | 67 - inst/include/boost/url/impl/parse_path.ipp | 62 - inst/include/boost/url/impl/parse_query.ipp | 45 - .../boost/url/impl/pct_string_view.ipp | 95 - inst/include/boost/url/impl/scheme.ipp | 132 - inst/include/boost/url/impl/segments_base.ipp | 119 - .../boost/url/impl/segments_encoded_base.ipp | 115 - .../boost/url/impl/segments_encoded_ref.hpp | 6 +- .../boost/url/impl/segments_encoded_ref.ipp | 174 - .../boost/url/impl/segments_encoded_view.ipp | 46 - inst/include/boost/url/impl/segments_ref.hpp | 8 +- inst/include/boost/url/impl/segments_ref.ipp | 173 - inst/include/boost/url/impl/segments_view.ipp | 39 - inst/include/boost/url/impl/static_url.ipp | 74 - inst/include/boost/url/impl/url.ipp | 172 - inst/include/boost/url/impl/url_base.ipp | 2517 --------- inst/include/boost/url/impl/url_view.ipp | 82 - inst/include/boost/url/impl/url_view_base.ipp | 697 --- inst/include/boost/url/ipv4_address.hpp | 10 +- inst/include/boost/url/ipv6_address.hpp | 10 +- inst/include/boost/url/optional.hpp | 23 + inst/include/boost/url/param.hpp | 42 +- inst/include/boost/url/params_base.hpp | 27 +- .../include/boost/url/params_encoded_base.hpp | 10 +- inst/include/boost/url/params_encoded_ref.hpp | 16 +- .../include/boost/url/params_encoded_view.hpp | 14 +- inst/include/boost/url/params_ref.hpp | 27 +- inst/include/boost/url/params_view.hpp | 4 +- inst/include/boost/url/parse.hpp | 32 +- inst/include/boost/url/parse_path.hpp | 4 +- inst/include/boost/url/parse_query.hpp | 6 +- inst/include/boost/url/pct_string_view.hpp | 48 +- .../boost/url/rfc/absolute_uri_rule.hpp | 4 +- inst/include/boost/url/rfc/authority_rule.hpp | 4 +- .../include/boost/url/rfc/detail/charsets.hpp | 2 +- .../url/rfc/detail/fragment_part_rule.hpp | 2 +- .../include/boost/url/rfc/detail/h16_rule.hpp | 2 +- .../boost/url/rfc/detail/hier_part_rule.hpp | 2 +- .../boost/url/rfc/detail/host_rule.hpp | 4 +- .../boost/url/rfc/detail/impl/h16_rule.ipp | 85 - .../url/rfc/detail/impl/hier_part_rule.ipp | 112 - .../boost/url/rfc/detail/impl/host_rule.ipp | 114 - .../url/rfc/detail/impl/ip_literal_rule.ipp | 83 - .../url/rfc/detail/impl/ipvfuture_rule.ipp | 73 - .../boost/url/rfc/detail/impl/port_rule.ipp | 95 - .../rfc/detail/impl/relative_part_rule.ipp | 128 - .../boost/url/rfc/detail/impl/scheme_rule.ipp | 63 - .../url/rfc/detail/impl/userinfo_rule.ipp | 72 - .../boost/url/rfc/detail/ip_literal_rule.hpp | 9 +- .../boost/url/rfc/detail/ipv6_addrz_rule.hpp | 56 + .../boost/url/rfc/detail/ipvfuture_rule.hpp | 10 +- .../boost/url/rfc/detail/port_rule.hpp | 10 +- .../boost/url/rfc/detail/query_part_rule.hpp | 2 +- .../boost/url/rfc/detail/reg_name_rule.hpp | 1 + .../url/rfc/detail/relative_part_rule.hpp | 4 +- .../boost/url/rfc/detail/scheme_rule.hpp | 6 +- .../boost/url/rfc/detail/userinfo_rule.hpp | 2 +- .../include/boost/url/rfc/gen_delim_chars.hpp | 2 +- .../boost/url/rfc/impl/absolute_uri_rule.ipp | 85 - .../boost/url/rfc/impl/authority_rule.ipp | 84 - .../boost/url/rfc/impl/ipv4_address_rule.ipp | 50 - .../boost/url/rfc/impl/ipv6_address_rule.ipp | 229 - .../boost/url/rfc/impl/origin_form_rule.ipp | 70 - .../boost/url/rfc/impl/pct_encoded_rule.hpp | 4 +- .../include/boost/url/rfc/impl/query_rule.ipp | 85 - .../boost/url/rfc/impl/relative_ref_rule.ipp | 81 - .../boost/url/rfc/impl/uri_reference_rule.ipp | 50 - inst/include/boost/url/rfc/impl/uri_rule.ipp | 96 - .../boost/url/rfc/ipv4_address_rule.hpp | 4 +- .../boost/url/rfc/ipv6_address_rule.hpp | 4 +- .../boost/url/rfc/origin_form_rule.hpp | 4 +- inst/include/boost/url/rfc/pchars.hpp | 2 +- .../boost/url/rfc/pct_encoded_rule.hpp | 4 +- inst/include/boost/url/rfc/query_rule.hpp | 4 +- .../boost/url/rfc/relative_ref_rule.hpp | 4 +- inst/include/boost/url/rfc/reserved_chars.hpp | 2 +- .../include/boost/url/rfc/sub_delim_chars.hpp | 2 +- .../boost/url/rfc/unreserved_chars.hpp | 2 +- .../boost/url/rfc/uri_reference_rule.hpp | 4 +- inst/include/boost/url/rfc/uri_rule.hpp | 4 +- inst/include/boost/url/scheme.hpp | 6 +- .../boost/url/segments_encoded_view.hpp | 8 +- inst/include/boost/url/segments_ref.hpp | 20 +- inst/include/boost/url/segments_view.hpp | 4 +- inst/include/boost/url/src.hpp | 113 +- inst/include/boost/url/static_url.hpp | 40 +- inst/include/boost/url/string_view.hpp | 22 +- inst/include/boost/url/url.hpp | 44 +- inst/include/boost/url/url_base.hpp | 277 +- inst/include/boost/url/url_view.hpp | 36 +- inst/include/boost/url/url_view_base.hpp | 157 +- inst/include/boost/url/variant.hpp | 3 +- inst/include/boost/utility/swap.hpp | 5 +- inst/include/boost/utility/value_init.hpp | 16 +- inst/include/boost/uuid/detail/config.hpp | 19 +- .../uuid/detail/random_provider_getrandom.ipp | 4 +- inst/include/boost/uuid/detail/uuid_x86.ipp | 8 +- inst/include/boost/uuid/uuid_serialize.hpp | 15 +- .../variant/detail/apply_visitor_binary.hpp | 97 +- .../variant/detail/apply_visitor_delayed.hpp | 30 +- .../variant/detail/apply_visitor_unary.hpp | 34 +- inst/include/boost/variant/detail/config.hpp | 2 +- .../boost/variant/detail/element_index.hpp | 2 +- .../boost/variant/detail/enable_recursive.hpp | 32 - .../boost/variant/detail/forced_return.hpp | 2 +- .../boost/variant/detail/has_result_type.hpp | 2 +- .../boost/variant/detail/hash_variant.hpp | 2 +- .../variant/detail/make_variant_list.hpp | 37 +- inst/include/boost/variant/detail/move.hpp | 10 +- .../include/boost/variant/detail/std_hash.hpp | 2 +- .../boost/variant/detail/substitute.hpp | 112 +- .../boost/variant/detail/substitute_fwd.hpp | 15 - .../boost/variant/detail/visitation_impl.hpp | 7 +- inst/include/boost/variant/get.hpp | 6 +- .../boost/variant/recursive_variant.hpp | 41 +- .../boost/variant/recursive_wrapper_fwd.hpp | 2 +- inst/include/boost/variant/variant.hpp | 78 +- inst/include/boost/variant/variant_fwd.hpp | 113 +- inst/include/boost/variant2/variant.hpp | 43 +- inst/include/boost/version.hpp | 4 +- inst/include/boost/winapi/config.hpp | 10 +- inst/include/boost/winapi/detail/header.hpp | 2 +- inst/include/boost/winapi/handles.hpp | 4 +- local/scripts/CreateBoost.sh | 10 +- 2592 files changed, 74247 insertions(+), 79206 deletions(-) create mode 100644 inst/include/boost/any/detail/placeholder.hpp create mode 100644 inst/include/boost/asio/associated_immediate_executor.hpp create mode 100644 inst/include/boost/asio/bind_immediate_executor.hpp delete mode 100644 inst/include/boost/asio/detail/bulk_executor_op.hpp delete mode 100644 inst/include/boost/asio/detail/gcc_arm_fenced_block.hpp delete mode 100644 inst/include/boost/asio/detail/gcc_hppa_fenced_block.hpp delete mode 100644 inst/include/boost/asio/detail/gcc_sync_fenced_block.hpp delete mode 100644 inst/include/boost/asio/detail/gcc_x86_fenced_block.hpp delete mode 100644 inst/include/boost/asio/detail/handler_invoke_helpers.hpp create mode 100644 inst/include/boost/asio/detail/initiate_defer.hpp create mode 100644 inst/include/boost/asio/detail/initiate_dispatch.hpp create mode 100644 inst/include/boost/asio/detail/initiate_post.hpp delete mode 100644 inst/include/boost/asio/detail/macos_fenced_block.hpp delete mode 100644 inst/include/boost/asio/detail/solaris_fenced_block.hpp delete mode 100644 inst/include/boost/asio/detail/variadic_templates.hpp delete mode 100644 inst/include/boost/asio/detail/win_fenced_block.hpp delete mode 100644 inst/include/boost/asio/execution/bulk_execute.hpp delete mode 100644 inst/include/boost/asio/execution/bulk_guarantee.hpp delete mode 100644 inst/include/boost/asio/execution/connect.hpp delete mode 100644 inst/include/boost/asio/execution/detail/as_invocable.hpp delete mode 100644 inst/include/boost/asio/execution/detail/as_operation.hpp delete mode 100644 inst/include/boost/asio/execution/detail/as_receiver.hpp delete mode 100644 inst/include/boost/asio/execution/detail/bulk_sender.hpp delete mode 100644 inst/include/boost/asio/execution/detail/submit_receiver.hpp delete mode 100644 inst/include/boost/asio/execution/detail/void_receiver.hpp delete mode 100644 inst/include/boost/asio/execution/execute.hpp delete mode 100644 inst/include/boost/asio/execution/impl/receiver_invocation_error.ipp delete mode 100644 inst/include/boost/asio/execution/operation_state.hpp delete mode 100644 inst/include/boost/asio/execution/receiver.hpp delete mode 100644 inst/include/boost/asio/execution/receiver_invocation_error.hpp delete mode 100644 inst/include/boost/asio/execution/schedule.hpp delete mode 100644 inst/include/boost/asio/execution/scheduler.hpp delete mode 100644 inst/include/boost/asio/execution/sender.hpp delete mode 100644 inst/include/boost/asio/execution/set_done.hpp delete mode 100644 inst/include/boost/asio/execution/set_error.hpp delete mode 100644 inst/include/boost/asio/execution/set_value.hpp delete mode 100644 inst/include/boost/asio/execution/start.hpp delete mode 100644 inst/include/boost/asio/execution/submit.hpp delete mode 100644 inst/include/boost/asio/handler_alloc_hook.hpp delete mode 100644 inst/include/boost/asio/handler_invoke_hook.hpp delete mode 100644 inst/include/boost/asio/impl/defer.hpp delete mode 100644 inst/include/boost/asio/impl/dispatch.hpp delete mode 100644 inst/include/boost/asio/impl/handler_alloc_hook.ipp delete mode 100644 inst/include/boost/asio/impl/post.hpp create mode 100644 inst/include/boost/asio/local/seq_packet_protocol.hpp create mode 100644 inst/include/boost/asio/signal_set_base.hpp delete mode 100644 inst/include/boost/asio/traits/bulk_execute_free.hpp delete mode 100644 inst/include/boost/asio/traits/bulk_execute_member.hpp delete mode 100644 inst/include/boost/asio/traits/connect_free.hpp delete mode 100644 inst/include/boost/asio/traits/connect_member.hpp delete mode 100644 inst/include/boost/asio/traits/execute_free.hpp delete mode 100644 inst/include/boost/asio/traits/schedule_free.hpp delete mode 100644 inst/include/boost/asio/traits/schedule_member.hpp delete mode 100644 inst/include/boost/asio/traits/set_done_free.hpp delete mode 100644 inst/include/boost/asio/traits/set_done_member.hpp delete mode 100644 inst/include/boost/asio/traits/set_error_free.hpp delete mode 100644 inst/include/boost/asio/traits/set_error_member.hpp delete mode 100644 inst/include/boost/asio/traits/set_value_free.hpp delete mode 100644 inst/include/boost/asio/traits/set_value_member.hpp delete mode 100644 inst/include/boost/asio/traits/start_free.hpp delete mode 100644 inst/include/boost/asio/traits/start_member.hpp delete mode 100644 inst/include/boost/asio/traits/submit_free.hpp delete mode 100644 inst/include/boost/asio/traits/submit_member.hpp create mode 100644 inst/include/boost/atomic/detail/type_traits/remove_cv.hpp create mode 100644 inst/include/boost/beast/_experimental/test/immediate_executor.hpp delete mode 100644 inst/include/boost/beast/core/detail/bind_default_executor.hpp create mode 100644 inst/include/boost/bind/detail/is_same.hpp create mode 100644 inst/include/boost/bind/detail/requires_cxx11.hpp create mode 100644 inst/include/boost/chrono/detail/requires_cxx11.hpp create mode 100644 inst/include/boost/compat/detail/throw_system_error.hpp create mode 100644 inst/include/boost/compat/latch.hpp create mode 100644 inst/include/boost/compat/shared_lock.hpp create mode 100644 inst/include/boost/config/assert_cxx23.hpp delete mode 100644 inst/include/boost/container/detail/hash_table.hpp create mode 100644 inst/include/boost/container_hash/detail/hash_integral.hpp delete mode 100644 inst/include/boost/container_hash/detail/hash_tuple.hpp create mode 100644 inst/include/boost/container_hash/detail/hash_tuple_like.hpp create mode 100644 inst/include/boost/container_hash/detail/mulx.hpp create mode 100644 inst/include/boost/container_hash/is_tuple_like.hpp create mode 100644 inst/include/boost/core/alignof.hpp create mode 100644 inst/include/boost/core/data.hpp rename inst/include/boost/core/{ => detail}/is_same.hpp (71%) create mode 100644 inst/include/boost/core/detail/lwt_unattended.hpp create mode 100644 inst/include/boost/core/detail/sp_thread_pause.hpp create mode 100644 inst/include/boost/core/detail/sp_thread_sleep.hpp create mode 100644 inst/include/boost/core/detail/sp_thread_yield.hpp rename inst/include/boost/{smart_ptr => core}/detail/sp_win32_sleep.hpp (53%) create mode 100644 inst/include/boost/core/identity.hpp create mode 100644 inst/include/boost/core/invoke_swap.hpp create mode 100644 inst/include/boost/core/max_align.hpp create mode 100644 inst/include/boost/core/serialization.hpp create mode 100644 inst/include/boost/core/yield_primitives.hpp create mode 100644 inst/include/boost/endian/detail/is_integral.hpp create mode 100644 inst/include/boost/endian/detail/static_assert.hpp delete mode 100644 inst/include/boost/filesystem/string_file.hpp create mode 100644 inst/include/boost/function/detail/epilogue.hpp create mode 100644 inst/include/boost/function/detail/requires_cxx11.hpp rename inst/include/boost/geometry/algorithms/detail/{overlay/intersection_box_box.hpp => intersection/box_box_implementation.hpp} (78%) create mode 100644 inst/include/boost/geometry/algorithms/detail/overlay/colocate_clusters.hpp create mode 100644 inst/include/boost/geometry/algorithms/detail/relate/box_areal.hpp create mode 100644 inst/include/boost/geometry/strategies/geographic/buffer_end_round.hpp create mode 100644 inst/include/boost/geometry/strategies/geographic/buffer_helper.hpp create mode 100644 inst/include/boost/geometry/strategies/geographic/buffer_join_miter.hpp create mode 100644 inst/include/boost/geometry/strategies/geographic/buffer_join_round.hpp create mode 100644 inst/include/boost/geometry/strategies/geographic/buffer_side_straight.hpp create mode 100644 inst/include/boost/geometry/util/constexpr.hpp create mode 100644 inst/include/boost/geometry/util/for_each_with_index.hpp create mode 100644 inst/include/boost/icl/detail/requires_cxx11.hpp delete mode 100644 inst/include/boost/interprocess/detail/intersegment_ptr.hpp delete mode 100644 inst/include/boost/interprocess/detail/managed_multi_shared_memory.hpp create mode 100644 inst/include/boost/iterator/is_iterator.hpp delete mode 100644 inst/include/boost/json/detail/align.hpp create mode 100644 inst/include/boost/json/detail/charconv/chars_format.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/compute_float64.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/config.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/emulated128.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/ascii_number.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/bigint.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/constexpr_feature_detect.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/decimal_to_binary.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/digit_comparison.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/fast_float.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/fast_table.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/float_common.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/fast_float/parse_number.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/from_chars_float_impl.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/from_chars_integer_impl.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/from_chars_result.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/integer_search_trees.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/parser.hpp create mode 100644 inst/include/boost/json/detail/charconv/detail/significand_tables.hpp create mode 100644 inst/include/boost/json/detail/charconv/from_chars.hpp create mode 100644 inst/include/boost/json/detail/charconv/impl/from_chars.ipp create mode 100644 inst/include/boost/json/detail/charconv/limits.hpp delete mode 100644 inst/include/boost/json/detail/hash_combine.hpp create mode 100644 inst/include/boost/json/detail/parse_into.hpp create mode 100644 inst/include/boost/json/detail/sbo_buffer.hpp create mode 100644 inst/include/boost/json/impl/parse_into.hpp create mode 100644 inst/include/boost/json/parse_into.hpp create mode 100644 inst/include/boost/json/serialize_options.hpp create mode 100644 inst/include/boost/json/set_pointer_options.hpp create mode 100644 inst/include/boost/lexical_cast/detail/buffer_view.hpp create mode 100644 inst/include/boost/locale/detail/encoding.hpp create mode 100644 inst/include/boost/locale/detail/facet_id.hpp create mode 100644 inst/include/boost/locale/detail/is_supported_char.hpp create mode 100644 inst/include/boost/locale/util/locale_data.hpp create mode 100644 inst/include/boost/math/ccmath/detail/config.hpp rename inst/include/boost/math/special_functions/detail/{hypergeometric_1F1_small_a_negative_b_by_r.hpp => hypergeometric_1F1_small_a_negative_b_by_ratio.hpp} (100%) create mode 100644 inst/include/boost/math/special_functions/fourier_transform_daubechies.hpp create mode 100644 inst/include/boost/math/tools/estrin.hpp create mode 100644 inst/include/boost/mp11/detail/mp_defer.hpp create mode 100644 inst/include/boost/mp11/detail/mp_is_value_list.hpp create mode 100644 inst/include/boost/mp11/detail/mp_list_v.hpp create mode 100644 inst/include/boost/mp11/detail/mp_value.hpp create mode 100644 inst/include/boost/mpi/collectives/all_gatherv.hpp create mode 100644 inst/include/boost/multi_index/detail/bad_archive_exception.hpp create mode 100644 inst/include/boost/multiprecision/detail/string_helpers.hpp create mode 100644 inst/include/boost/multiprecision/fwd.hpp rename inst/include/boost/numeric/odeint/stepper/generation/{generation_controlled_adams_bashforth_m.hpp => generation_controlled_adams_bashforth_moulton.hpp} (100%) rename inst/include/boost/numeric/odeint/stepper/generation/{generation_runge_kutta_cash_karp54_cl.hpp => generation_runge_kutta_cash_karp54_classic.hpp} (100%) create mode 100644 inst/include/boost/predef/library/std/msvc.h create mode 100644 inst/include/boost/process/v2/ext.hpp create mode 100644 inst/include/boost/process/v2/ext/cmd.hpp create mode 100644 inst/include/boost/process/v2/ext/cwd.hpp create mode 100644 inst/include/boost/process/v2/ext/detail/impl/proc_info.ipp create mode 100644 inst/include/boost/process/v2/ext/detail/proc_info.hpp create mode 100644 inst/include/boost/process/v2/ext/env.hpp create mode 100644 inst/include/boost/process/v2/ext/exe.hpp create mode 100644 inst/include/boost/process/v2/ext/impl/cmd.ipp create mode 100644 inst/include/boost/process/v2/ext/impl/cwd.ipp create mode 100644 inst/include/boost/process/v2/ext/impl/env.ipp create mode 100644 inst/include/boost/process/v2/ext/impl/exe.ipp create mode 100644 inst/include/boost/qvm/to_string.hpp create mode 100644 inst/include/boost/ratio/detail/gcd_lcm.hpp create mode 100644 inst/include/boost/ratio/detail/is_evenly_divisible_by.hpp create mode 100644 inst/include/boost/ratio/detail/is_ratio.hpp delete mode 100644 inst/include/boost/ratio/detail/mpl/abs.hpp delete mode 100644 inst/include/boost/ratio/detail/mpl/gcd.hpp delete mode 100644 inst/include/boost/ratio/detail/mpl/lcm.hpp delete mode 100644 inst/include/boost/ratio/detail/mpl/sign.hpp delete mode 100644 inst/include/boost/ratio/detail/overflow_helpers.hpp delete mode 100644 inst/include/boost/ratio/detail/ratio_io.hpp delete mode 100644 inst/include/boost/ratio/mpl/rational_c_tag.hpp create mode 100644 inst/include/boost/serialization/boost_unordered_map.hpp create mode 100644 inst/include/boost/serialization/boost_unordered_set.hpp create mode 100644 inst/include/boost/smart_ptr/detail/requires_cxx11.hpp delete mode 100644 inst/include/boost/sort/heap_sort/heap_sort.hpp delete mode 100644 inst/include/boost/swap.hpp create mode 100644 inst/include/boost/system/detail/mutex.hpp create mode 100644 inst/include/boost/system/detail/requires_cxx11.hpp create mode 100644 inst/include/boost/thread/detail/string_to_unsigned.hpp create mode 100644 inst/include/boost/thread/detail/string_trim.hpp create mode 100644 inst/include/boost/type_traits/detail/is_swappable_cxx_11.hpp create mode 100644 inst/include/boost/type_traits/is_swappable.hpp delete mode 100644 inst/include/boost/typeof/dmc/typeof_impl.hpp delete mode 100644 inst/include/boost/typeof/encode_decode.hpp delete mode 100644 inst/include/boost/typeof/encode_decode_params.hpp delete mode 100644 inst/include/boost/typeof/int_encoding.hpp delete mode 100644 inst/include/boost/typeof/integral_template_param.hpp delete mode 100644 inst/include/boost/typeof/message.hpp delete mode 100644 inst/include/boost/typeof/modifiers.hpp delete mode 100644 inst/include/boost/typeof/native.hpp delete mode 100644 inst/include/boost/typeof/pointers_data_members.hpp delete mode 100644 inst/include/boost/typeof/register_functions.hpp delete mode 100644 inst/include/boost/typeof/register_functions_iterate.hpp delete mode 100644 inst/include/boost/typeof/register_fundamental.hpp delete mode 100644 inst/include/boost/typeof/register_mem_functions.hpp delete mode 100644 inst/include/boost/typeof/template_encoding.hpp delete mode 100644 inst/include/boost/typeof/template_template_param.hpp delete mode 100644 inst/include/boost/typeof/type_encoding.hpp delete mode 100644 inst/include/boost/typeof/type_template_param.hpp delete mode 100644 inst/include/boost/typeof/typeof_impl.hpp delete mode 100644 inst/include/boost/typeof/unsupported.hpp delete mode 100644 inst/include/boost/typeof/vector.hpp delete mode 100644 inst/include/boost/typeof/vector100.hpp delete mode 100644 inst/include/boost/typeof/vector150.hpp delete mode 100644 inst/include/boost/typeof/vector200.hpp delete mode 100644 inst/include/boost/typeof/vector50.hpp create mode 100644 inst/include/boost/unordered/concurrent_flat_map.hpp create mode 100644 inst/include/boost/unordered/concurrent_flat_map_fwd.hpp create mode 100644 inst/include/boost/unordered/concurrent_flat_set.hpp create mode 100644 inst/include/boost/unordered/concurrent_flat_set_fwd.hpp create mode 100644 inst/include/boost/unordered/detail/archive_constructed.hpp create mode 100644 inst/include/boost/unordered/detail/bad_archive_exception.hpp create mode 100644 inst/include/boost/unordered/detail/concurrent_static_asserts.hpp create mode 100644 inst/include/boost/unordered/detail/foa/concurrent_table.hpp rename inst/include/boost/unordered/detail/{foa.hpp => foa/core.hpp} (50%) create mode 100644 inst/include/boost/unordered/detail/foa/element_type.hpp create mode 100644 inst/include/boost/unordered/detail/foa/flat_map_types.hpp create mode 100644 inst/include/boost/unordered/detail/foa/flat_set_types.hpp create mode 100644 inst/include/boost/unordered/detail/foa/ignore_wshadow.hpp create mode 100644 inst/include/boost/unordered/detail/foa/node_handle.hpp create mode 100644 inst/include/boost/unordered/detail/foa/node_map_types.hpp create mode 100644 inst/include/boost/unordered/detail/foa/node_set_types.hpp create mode 100644 inst/include/boost/unordered/detail/foa/reentrancy_check.hpp create mode 100644 inst/include/boost/unordered/detail/foa/restore_wshadow.hpp create mode 100644 inst/include/boost/unordered/detail/foa/rw_spinlock.hpp create mode 100644 inst/include/boost/unordered/detail/foa/table.hpp create mode 100644 inst/include/boost/unordered/detail/foa/tuple_rotate_right.hpp delete mode 100644 inst/include/boost/unordered/detail/fwd.hpp create mode 100644 inst/include/boost/unordered/detail/mulx.hpp create mode 100644 inst/include/boost/unordered/detail/narrow_cast.hpp create mode 100644 inst/include/boost/unordered/detail/opt_storage.hpp create mode 100644 inst/include/boost/unordered/detail/serialization_version.hpp create mode 100644 inst/include/boost/unordered/detail/serialize_container.hpp create mode 100644 inst/include/boost/unordered/detail/serialize_fca_container.hpp create mode 100644 inst/include/boost/unordered/detail/serialize_tracked_address.hpp create mode 100644 inst/include/boost/unordered/detail/static_assert.hpp create mode 100644 inst/include/boost/unordered/unordered_node_map.hpp create mode 100644 inst/include/boost/unordered/unordered_node_map_fwd.hpp create mode 100644 inst/include/boost/unordered/unordered_node_set.hpp create mode 100644 inst/include/boost/unordered/unordered_node_set_fwd.hpp delete mode 100644 inst/include/boost/url/detail/empty_value.hpp create mode 100644 inst/include/boost/url/detail/format_args.hpp delete mode 100644 inst/include/boost/url/detail/impl/any_params_iter.ipp delete mode 100644 inst/include/boost/url/detail/impl/any_segments_iter.ipp delete mode 100644 inst/include/boost/url/detail/impl/decode.ipp delete mode 100644 inst/include/boost/url/detail/impl/except.ipp create mode 100644 inst/include/boost/url/detail/impl/format_args.hpp delete mode 100644 inst/include/boost/url/detail/impl/normalize.ipp delete mode 100644 inst/include/boost/url/detail/impl/params_iter_impl.ipp delete mode 100644 inst/include/boost/url/detail/impl/path.ipp delete mode 100644 inst/include/boost/url/detail/impl/segments_iter_impl.ipp delete mode 100644 inst/include/boost/url/detail/impl/url_impl.ipp create mode 100644 inst/include/boost/url/detail/pattern.hpp create mode 100644 inst/include/boost/url/detail/pct_format.hpp create mode 100644 inst/include/boost/url/detail/replacement_field_rule.hpp create mode 100644 inst/include/boost/url/detail/string_view.hpp create mode 100644 inst/include/boost/url/detail/vformat.hpp create mode 100644 inst/include/boost/url/format.hpp delete mode 100644 inst/include/boost/url/grammar/detail/impl/ci_string.ipp delete mode 100644 inst/include/boost/url/grammar/detail/impl/recycled.ipp delete mode 100644 inst/include/boost/url/grammar/impl/ci_string.ipp delete mode 100644 inst/include/boost/url/grammar/impl/dec_octet_rule.ipp delete mode 100644 inst/include/boost/url/grammar/impl/delim_rule.ipp delete mode 100644 inst/include/boost/url/grammar/impl/error.ipp delete mode 100644 inst/include/boost/url/grammar/impl/literal_rule.ipp delete mode 100644 inst/include/boost/url/grammar/impl/string_view_base.ipp delete mode 100644 inst/include/boost/url/impl/authority_view.ipp delete mode 100644 inst/include/boost/url/impl/decode_view.ipp delete mode 100644 inst/include/boost/url/impl/error.ipp delete mode 100644 inst/include/boost/url/impl/ipv4_address.ipp delete mode 100644 inst/include/boost/url/impl/ipv6_address.ipp delete mode 100644 inst/include/boost/url/impl/params_base.ipp delete mode 100644 inst/include/boost/url/impl/params_encoded_base.ipp delete mode 100644 inst/include/boost/url/impl/params_encoded_ref.ipp delete mode 100644 inst/include/boost/url/impl/params_encoded_view.ipp delete mode 100644 inst/include/boost/url/impl/params_ref.ipp delete mode 100644 inst/include/boost/url/impl/params_view.ipp delete mode 100644 inst/include/boost/url/impl/parse.ipp delete mode 100644 inst/include/boost/url/impl/parse_path.ipp delete mode 100644 inst/include/boost/url/impl/parse_query.ipp delete mode 100644 inst/include/boost/url/impl/pct_string_view.ipp delete mode 100644 inst/include/boost/url/impl/scheme.ipp delete mode 100644 inst/include/boost/url/impl/segments_base.ipp delete mode 100644 inst/include/boost/url/impl/segments_encoded_base.ipp delete mode 100644 inst/include/boost/url/impl/segments_encoded_ref.ipp delete mode 100644 inst/include/boost/url/impl/segments_encoded_view.ipp delete mode 100644 inst/include/boost/url/impl/segments_ref.ipp delete mode 100644 inst/include/boost/url/impl/segments_view.ipp delete mode 100644 inst/include/boost/url/impl/static_url.ipp delete mode 100644 inst/include/boost/url/impl/url.ipp delete mode 100644 inst/include/boost/url/impl/url_base.ipp delete mode 100644 inst/include/boost/url/impl/url_view.ipp delete mode 100644 inst/include/boost/url/impl/url_view_base.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/h16_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/hier_part_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/host_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/ip_literal_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/ipvfuture_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/port_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/relative_part_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/scheme_rule.ipp delete mode 100644 inst/include/boost/url/rfc/detail/impl/userinfo_rule.ipp create mode 100644 inst/include/boost/url/rfc/detail/ipv6_addrz_rule.hpp delete mode 100644 inst/include/boost/url/rfc/impl/absolute_uri_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/authority_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/ipv4_address_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/ipv6_address_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/origin_form_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/query_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/relative_ref_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/uri_reference_rule.ipp delete mode 100644 inst/include/boost/url/rfc/impl/uri_rule.ipp diff --git a/inst/include/boost/accumulators/framework/accumulator_set.hpp b/inst/include/boost/accumulators/framework/accumulator_set.hpp index 0b4f4ad3d..e89e5e9ab 100644 --- a/inst/include/boost/accumulators/framework/accumulator_set.hpp +++ b/inst/include/boost/accumulators/framework/accumulator_set.hpp @@ -54,6 +54,11 @@ namespace detail { } + accumulator_visitor(accumulator_visitor const &other) + : args(other.args) + { + } + template void operator ()(Accumulator &accumulator) const { @@ -61,7 +66,7 @@ namespace detail } private: - accumulator_visitor &operator =(accumulator_visitor const &); + BOOST_DELETED_FUNCTION(accumulator_visitor &operator =(accumulator_visitor const &)) Args const &args; }; diff --git a/inst/include/boost/accumulators/framework/accumulators/droppable_accumulator.hpp b/inst/include/boost/accumulators/framework/accumulators/droppable_accumulator.hpp index 0e882b5c3..21fdb51bf 100644 --- a/inst/include/boost/accumulators/framework/accumulators/droppable_accumulator.hpp +++ b/inst/include/boost/accumulators/framework/accumulators/droppable_accumulator.hpp @@ -34,6 +34,11 @@ namespace boost { namespace accumulators { } + add_ref_visitor(add_ref_visitor const &other) + : args_(other.args_) + { + } + template void operator ()(Accumulator &acc) const { @@ -49,7 +54,7 @@ namespace boost { namespace accumulators } private: - add_ref_visitor &operator =(add_ref_visitor const &); + BOOST_DELETED_FUNCTION(add_ref_visitor &operator =(add_ref_visitor const &)) Args const &args_; }; @@ -87,7 +92,7 @@ namespace boost { namespace accumulators } private: - drop_visitor &operator =(drop_visitor const &); + BOOST_DELETED_FUNCTION(drop_visitor &operator =(drop_visitor const &)) Args const &args_; }; @@ -227,7 +232,7 @@ namespace boost { namespace accumulators } private: - with_cached_result &operator =(with_cached_result const &); + BOOST_DELETED_FUNCTION(with_cached_result &operator =(with_cached_result const &)) void set(result_type const &r) { diff --git a/inst/include/boost/accumulators/framework/depends_on.hpp b/inst/include/boost/accumulators/framework/depends_on.hpp index dd2b637b5..e0036ac73 100644 --- a/inst/include/boost/accumulators/framework/depends_on.hpp +++ b/inst/include/boost/accumulators/framework/depends_on.hpp @@ -321,6 +321,12 @@ namespace boost { namespace accumulators { } + accumulator_wrapper& operator=(accumulator_wrapper const &that) + { + *static_cast(this) = *static_cast(&that); + return *this; + } + template accumulator_wrapper(Args const &args) : Accumulator(args) diff --git a/inst/include/boost/accumulators/statistics/count.hpp b/inst/include/boost/accumulators/statistics/count.hpp index b83435a30..2bd09a974 100644 --- a/inst/include/boost/accumulators/statistics/count.hpp +++ b/inst/include/boost/accumulators/statistics/count.hpp @@ -45,8 +45,8 @@ namespace impl // make this accumulator serializeable template - void serialize(Archive & ar, const unsigned int file_version) - { + void serialize(Archive & ar, const unsigned int /* file_version */) + { ar & cnt; } diff --git a/inst/include/boost/accumulators/statistics/extended_p_square_quantile.hpp b/inst/include/boost/accumulators/statistics/extended_p_square_quantile.hpp index f57304cd0..a4ac3cd6c 100644 --- a/inst/include/boost/accumulators/statistics/extended_p_square_quantile.hpp +++ b/inst/include/boost/accumulators/statistics/extended_p_square_quantile.hpp @@ -76,6 +76,7 @@ namespace impl boost::begin(args[extended_p_square_probabilities]) , boost::end(args[extended_p_square_probabilities]) ) + , probability() { } diff --git a/inst/include/boost/accumulators/statistics/max.hpp b/inst/include/boost/accumulators/statistics/max.hpp index 15033e6da..4cc8c559e 100644 --- a/inst/include/boost/accumulators/statistics/max.hpp +++ b/inst/include/boost/accumulators/statistics/max.hpp @@ -50,8 +50,8 @@ namespace impl // make this accumulator serializeable template - void serialize(Archive & ar, const unsigned int file_version) - { + void serialize(Archive & ar, const unsigned int /* file_version */) + { ar & max_; } diff --git a/inst/include/boost/accumulators/statistics/mean.hpp b/inst/include/boost/accumulators/statistics/mean.hpp index c6df176b7..699fad7a1 100644 --- a/inst/include/boost/accumulators/statistics/mean.hpp +++ b/inst/include/boost/accumulators/statistics/mean.hpp @@ -44,7 +44,7 @@ namespace impl // serialization is done by accumulators it depends on template - void serialize(Archive & ar, const unsigned int file_version) {} + void serialize(Archive & /* ar */, const unsigned int /* file_version */) {} }; template @@ -76,8 +76,8 @@ namespace impl } template - void serialize(Archive & ar, const unsigned int file_version) - { + void serialize(Archive & ar, const unsigned int /* file_version */) + { ar & mean; } diff --git a/inst/include/boost/accumulators/statistics/min.hpp b/inst/include/boost/accumulators/statistics/min.hpp index bf30b79e3..2cbe2775d 100644 --- a/inst/include/boost/accumulators/statistics/min.hpp +++ b/inst/include/boost/accumulators/statistics/min.hpp @@ -50,8 +50,8 @@ namespace impl // make this accumulator serializeable template - void serialize(Archive & ar, const unsigned int file_version) - { + void serialize(Archive & ar, const unsigned int /* file_version */) + { ar & min_; } diff --git a/inst/include/boost/accumulators/statistics/moment.hpp b/inst/include/boost/accumulators/statistics/moment.hpp index 9ba1e4caa..aeca6a985 100644 --- a/inst/include/boost/accumulators/statistics/moment.hpp +++ b/inst/include/boost/accumulators/statistics/moment.hpp @@ -77,8 +77,8 @@ namespace impl // make this accumulator serializeable template - void serialize(Archive & ar, const unsigned int file_version) - { + void serialize(Archive & ar, const unsigned int /* file_version */) + { ar & sum; } diff --git a/inst/include/boost/accumulators/statistics/sum.hpp b/inst/include/boost/accumulators/statistics/sum.hpp index 7e507ccc2..c8beb55bf 100644 --- a/inst/include/boost/accumulators/statistics/sum.hpp +++ b/inst/include/boost/accumulators/statistics/sum.hpp @@ -52,8 +52,8 @@ namespace impl } template - void serialize(Archive & ar, const unsigned int file_version) - { + void serialize(Archive & ar, const unsigned int /* file_version */) + { ar & sum; } diff --git a/inst/include/boost/accumulators/statistics/tail.hpp b/inst/include/boost/accumulators/statistics/tail.hpp index 154a30cc2..40dab3718 100644 --- a/inst/include/boost/accumulators/statistics/tail.hpp +++ b/inst/include/boost/accumulators/statistics/tail.hpp @@ -88,7 +88,7 @@ namespace detail } private: - stat_assign_visitor &operator =(stat_assign_visitor const &); + BOOST_DELETED_FUNCTION(stat_assign_visitor &operator =(stat_assign_visitor const &)) Args const &args; std::size_t index; }; @@ -264,7 +264,7 @@ namespace impl } private: - indirect_cmp &operator =(indirect_cmp const &); + BOOST_DELETED_FUNCTION(indirect_cmp &operator =(indirect_cmp const &)) std::vector const &samples; }; diff --git a/inst/include/boost/accumulators/statistics/variance.hpp b/inst/include/boost/accumulators/statistics/variance.hpp index 9db858d2f..f760c3e1a 100644 --- a/inst/include/boost/accumulators/statistics/variance.hpp +++ b/inst/include/boost/accumulators/statistics/variance.hpp @@ -56,7 +56,7 @@ namespace impl // serialization is done by accumulators it depends on template - void serialize(Archive & ar, const unsigned int file_version) {} + void serialize(Archive & /* ar */, const unsigned int /* file_version */) {} }; //! Iterative calculation of variance. @@ -119,8 +119,8 @@ namespace impl // make this accumulator serializeable template - void serialize(Archive & ar, const unsigned int file_version) - { + void serialize(Archive & ar, const unsigned int /* file_version */) + { ar & variance; } diff --git a/inst/include/boost/accumulators/statistics/weighted_mean.hpp b/inst/include/boost/accumulators/statistics/weighted_mean.hpp index 1ddce8dd5..3214af6fc 100644 --- a/inst/include/boost/accumulators/statistics/weighted_mean.hpp +++ b/inst/include/boost/accumulators/statistics/weighted_mean.hpp @@ -99,7 +99,7 @@ namespace impl // make this accumulator serializeable template - void serialize(Archive & ar, const unsigned int file_version) + void serialize(Archive & ar, const unsigned int /* file_version */) { ar & mean; } diff --git a/inst/include/boost/accumulators/statistics/weighted_sum.hpp b/inst/include/boost/accumulators/statistics/weighted_sum.hpp index 41091f876..7e5167743 100644 --- a/inst/include/boost/accumulators/statistics/weighted_sum.hpp +++ b/inst/include/boost/accumulators/statistics/weighted_sum.hpp @@ -57,7 +57,7 @@ namespace impl // make this accumulator serializeable template - void serialize(Archive & ar, const unsigned int file_version) + void serialize(Archive & ar, const unsigned int /* file_version */) { ar & weighted_sum_; } diff --git a/inst/include/boost/algorithm/gather.hpp b/inst/include/boost/algorithm/gather.hpp index e777f8bd1..00f173397 100644 --- a/inst/include/boost/algorithm/gather.hpp +++ b/inst/include/boost/algorithm/gather.hpp @@ -1,4 +1,4 @@ -/* +/* Copyright 2008 Adobe Systems Incorporated Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -84,7 +84,7 @@ namespace boost { namespace algorithm { template < typename BidirectionalIterator, // models BidirectionalIterator typename Pred> // models UnaryPredicate -std::pair gather +std::pair gather ( BidirectionalIterator first, BidirectionalIterator last, BidirectionalIterator pivot, Pred pred ) { // The first call partitions everything up to (but not including) the pivot element, @@ -106,11 +106,11 @@ template < typename BidirectionalRange, // typename Pred> // Pred models UnaryPredicate std::pair< - typename boost::range_iterator::type, - typename boost::range_iterator::type> + typename boost::range_iterator::type, + typename boost::range_iterator::type> gather ( - const BidirectionalRange &range, - typename boost::range_iterator::type pivot, + BidirectionalRange &range, + typename boost::range_iterator::type pivot, Pred pred ) { return boost::algorithm::gather ( boost::begin ( range ), boost::end ( range ), pivot, pred ); diff --git a/inst/include/boost/any.hpp b/inst/include/boost/any.hpp index 9d2e92141..f7812eef9 100644 --- a/inst/include/boost/any.hpp +++ b/inst/include/boost/any.hpp @@ -8,6 +8,9 @@ # pragma once #endif +/// \file boost/any.hpp +/// \brief \copybrief boost::any + // what: variant type boost::any // who: contributed by Kevlin Henney, // with features contributed and bugs found by @@ -17,78 +20,102 @@ #include #include -#include -#include -#include -#include -#include -#include -#include +#include #include -#include -#include -#include -#include -#include +#include + +#include // for std::addressof +#include namespace boost { + /// \brief A class whose instances can hold instances of any + /// type that satisfies \forcedlink{ValueType} requirements. class any { - public: // structors + public: - BOOST_CONSTEXPR any() BOOST_NOEXCEPT + /// \post this->empty() is true. + constexpr any() noexcept : content(0) { } + /// Makes a copy of `value`, so + /// that the initial content of the new instance is equivalent + /// in both type and value to `value`. + /// + /// \throws std::bad_alloc or any exceptions arising from the copy + /// constructor of the contained type. template any(const ValueType & value) : content(new holder< - BOOST_DEDUCED_TYPENAME remove_cv::type>::type + typename std::remove_cv::type>::type >(value)) { - BOOST_STATIC_ASSERT_MSG( + static_assert( !anys::detail::is_basic_any::value, "boost::any shall not be constructed from boost::anys::basic_any" ); } + /// Copy constructor that copies content of + /// `other` into new instance, so that any content + /// is equivalent in both type and value to the content of + /// `other`, or empty if `other` is empty. + /// + /// \throws May fail with a `std::bad_alloc` + /// exception or any exceptions arising from the copy + /// constructor of the contained type. any(const any & other) : content(other.content ? other.content->clone() : 0) { } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - // Move constructor - any(any&& other) BOOST_NOEXCEPT + /// Move constructor that moves content of + /// `other` into new instance and leaves `other` empty. + /// + /// \post other->empty() is true + /// \throws Nothing. + any(any&& other) noexcept : content(other.content) { other.content = 0; } - // Perfect forwarding of ValueType + /// Forwards `value`, so + /// that the initial content of the new instance is equivalent + /// in both type and value to `value` before the forward. + /// + /// \throws std::bad_alloc or any exceptions arising from the move or + /// copy constructor of the contained type. template any(ValueType&& value - , typename boost::disable_if >::type* = 0 // disable if value has type `any&` - , typename boost::disable_if >::type* = 0) // disable if value has type `const ValueType&&` - : content(new holder< typename decay::type >(static_cast(value))) + , typename std::enable_if::value >::type* = 0 // disable if value has type `any&` + , typename std::enable_if::value >::type* = 0) // disable if value has type `const ValueType&&` + : content(new holder< typename std::decay::type >(std::forward(value))) { - BOOST_STATIC_ASSERT_MSG( - !anys::detail::is_basic_any::type>::value, + static_assert( + !anys::detail::is_basic_any::type>::value, "boost::any shall not be constructed from boost::anys::basic_any" ); } -#endif - ~any() BOOST_NOEXCEPT + /// Releases any and all resources used in management of instance. + /// + /// \throws Nothing. + ~any() noexcept { delete content; } public: // modifiers - any & swap(any & rhs) BOOST_NOEXCEPT + /// Exchange of the contents of `*this` and `rhs`. + /// + /// \returns `*this` + /// \throws Nothing. + any & swap(any & rhs) noexcept { placeholder* tmp = content; content = rhs.content; @@ -96,97 +123,92 @@ namespace boost return *this; } - -#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES - template - any & operator=(const ValueType & rhs) - { - BOOST_STATIC_ASSERT_MSG( - !anys::detail::is_basic_any::value, - "boost::anys::basic_any shall not be assigned into boost::any" - ); - any(rhs).swap(*this); - return *this; - } - - any & operator=(any rhs) - { - rhs.swap(*this); - return *this; - } - -#else + /// Copies content of `rhs` into + /// current instance, discarding previous content, so that the + /// new content is equivalent in both type and value to the + /// content of `rhs`, or empty if `rhs.empty()`. + /// + /// \throws std::bad_alloc + /// or any exceptions arising from the copy constructor of the + /// contained type. Assignment satisfies the strong guarantee + /// of exception safety. any & operator=(const any& rhs) { any(rhs).swap(*this); return *this; } - // move assignment - any & operator=(any&& rhs) BOOST_NOEXCEPT + /// Moves content of `rhs` into + /// current instance, discarding previous content, so that the + /// new content is equivalent in both type and value to the + /// content of `rhs` before move, or empty if + /// `rhs.empty()`. + /// + /// \post `rhs->empty()` is true + /// \throws Nothing. + any & operator=(any&& rhs) noexcept { rhs.swap(*this); any().swap(rhs); return *this; } - // Perfect forwarding of ValueType + /// Forwards `rhs`, + /// discarding previous content, so that the new content of is + /// equivalent in both type and value to + /// `rhs` before forward. + /// + /// \throws std::bad_alloc + /// or any exceptions arising from the move or copy constructor of the + /// contained type. Assignment satisfies the strong guarantee + /// of exception safety. template any & operator=(ValueType&& rhs) { - BOOST_STATIC_ASSERT_MSG( - !anys::detail::is_basic_any::type>::value, + static_assert( + !anys::detail::is_basic_any::type>::value, "boost::anys::basic_any shall not be assigned into boost::any" ); - any(static_cast(rhs)).swap(*this); + any(std::forward(rhs)).swap(*this); return *this; } -#endif public: // queries - bool empty() const BOOST_NOEXCEPT + /// \returns `true` if instance is empty, otherwise `false`. + /// \throws Nothing. + bool empty() const noexcept { return !content; } - void clear() BOOST_NOEXCEPT + /// \post this->empty() is true + void clear() noexcept { any().swap(*this); } - const boost::typeindex::type_info& type() const BOOST_NOEXCEPT + /// \returns the `typeid` of the + /// contained value if instance is non-empty, otherwise + /// `typeid(void)`. + /// + /// Useful for querying against types known either at compile time or + /// only at runtime. + const boost::typeindex::type_info& type() const noexcept { return content ? content->type() : boost::typeindex::type_id().type_info(); } -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS private: // types -#else - public: // types (public so any_cast can be non-friend) -#endif - - class BOOST_SYMBOL_VISIBLE placeholder + /// @cond + class BOOST_SYMBOL_VISIBLE placeholder: public boost::anys::detail::placeholder { - public: // structors - - virtual ~placeholder() - { - } - - public: // queries - - virtual const boost::typeindex::type_info& type() const BOOST_NOEXCEPT = 0; - + public: virtual placeholder * clone() const = 0; - }; template - class holder -#ifndef BOOST_NO_CXX11_FINAL - final -#endif + class holder final : public placeholder { public: // structors @@ -196,15 +218,14 @@ namespace boost { } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES holder(ValueType&& value) : held(static_cast< ValueType&& >(value)) { } -#endif + public: // queries - const boost::typeindex::type_info& type() const BOOST_NOEXCEPT BOOST_OVERRIDE + const boost::typeindex::type_info& type() const noexcept override { return boost::typeindex::type_id().type_info(); } @@ -222,54 +243,72 @@ namespace boost holder & operator=(const holder &); }; -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - private: // representation - - template - friend ValueType * any_cast(any *) BOOST_NOEXCEPT; - template - friend ValueType * unsafe_any_cast(any *) BOOST_NOEXCEPT; + friend ValueType * unsafe_any_cast(any *) noexcept; -#else - - public: // representation (public so any_cast can be non-friend) - -#endif + friend class boost::anys::unique_any; placeholder * content; - + /// @endcond }; - inline void swap(any & lhs, any & rhs) BOOST_NOEXCEPT + /// Exchange of the contents of `lhs` and `rhs`. + /// \throws Nothing. + inline void swap(any & lhs, any & rhs) noexcept { lhs.swap(rhs); } + /// @cond + + // Note: The "unsafe" versions of any_cast are not part of the + // public interface and may be removed at any time. They are + // required where we know what type is stored in the any and can't + // use typeid() comparison, e.g., when our types may travel across + // different shared libraries. + template + inline ValueType * unsafe_any_cast(any * operand) noexcept + { + return std::addressof( + static_cast *>(operand->content)->held + ); + } + + template + inline const ValueType * unsafe_any_cast(const any * operand) noexcept + { + return boost::unsafe_any_cast(const_cast(operand)); + } + /// @endcond + + /// \returns Pointer to a ValueType stored in `operand`, nullptr if + /// `operand` does not contain specified `ValueType`. template - ValueType * any_cast(any * operand) BOOST_NOEXCEPT + ValueType * any_cast(any * operand) noexcept { return operand && operand->type() == boost::typeindex::type_id() - ? boost::addressof( - static_cast::type> *>(operand->content)->held - ) + ? boost::unsafe_any_cast::type>(operand) : 0; } + /// \returns Const pointer to a ValueType stored in `operand`, nullptr if + /// `operand` does not contain specified `ValueType`. template - inline const ValueType * any_cast(const any * operand) BOOST_NOEXCEPT + inline const ValueType * any_cast(const any * operand) noexcept { - return any_cast(const_cast(operand)); + return boost::any_cast(const_cast(operand)); } + /// \returns ValueType stored in `operand` + /// \throws boost::bad_any_cast if `operand` does not contain + /// specified ValueType. template ValueType any_cast(any & operand) { - typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; - + typedef typename std::remove_reference::type nonref; - nonref * result = any_cast(boost::addressof(operand)); + nonref * result = boost::any_cast(std::addressof(operand)); if(!result) boost::throw_exception(bad_any_cast()); @@ -277,10 +316,10 @@ namespace boost // `ValueType` is not a reference. Example: // `static_cast(*result);` // which is equal to `std::string(*result);` - typedef BOOST_DEDUCED_TYPENAME boost::conditional< - boost::is_reference::value, + typedef typename std::conditional< + std::is_reference::value, ValueType, - BOOST_DEDUCED_TYPENAME boost::add_reference::type + typename std::add_lvalue_reference::type >::type ref_type; #ifdef BOOST_MSVC @@ -293,49 +332,33 @@ namespace boost #endif } + /// \returns `ValueType` stored in `operand` + /// \throws boost::bad_any_cast if `operand` does not contain + /// specified `ValueType`. template inline ValueType any_cast(const any & operand) { - typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; - return any_cast(const_cast(operand)); + typedef typename std::remove_reference::type nonref; + return boost::any_cast(const_cast(operand)); } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + /// \returns `ValueType` stored in `operand`, leaving the `operand` empty. + /// \throws boost::bad_any_cast if `operand` does not contain + /// specified `ValueType`. template inline ValueType any_cast(any&& operand) { - BOOST_STATIC_ASSERT_MSG( - boost::is_rvalue_reference::value /*true if ValueType is rvalue or just a value*/ - || boost::is_const< typename boost::remove_reference::type >::value, + static_assert( + std::is_rvalue_reference::value /*true if ValueType is rvalue or just a value*/ + || std::is_const< typename std::remove_reference::type >::value, "boost::any_cast shall not be used for getting nonconst references to temporary objects" ); - return any_cast(operand); - } -#endif - - - // Note: The "unsafe" versions of any_cast are not part of the - // public interface and may be removed at any time. They are - // required where we know what type is stored in the any and can't - // use typeid() comparison, e.g., when our types may travel across - // different shared libraries. - template - inline ValueType * unsafe_any_cast(any * operand) BOOST_NOEXCEPT - { - return boost::addressof( - static_cast *>(operand->content)->held - ); - } - - template - inline const ValueType * unsafe_any_cast(const any * operand) BOOST_NOEXCEPT - { - return unsafe_any_cast(const_cast(operand)); + return boost::any_cast(operand); } } // Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved. -// Copyright Antony Polukhin, 2013-2022. +// Copyright Antony Polukhin, 2013-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at diff --git a/inst/include/boost/any/bad_any_cast.hpp b/inst/include/boost/any/bad_any_cast.hpp index bba142da5..ed456021a 100644 --- a/inst/include/boost/any/bad_any_cast.hpp +++ b/inst/include/boost/any/bad_any_cast.hpp @@ -1,4 +1,4 @@ -// Copyright Antony Polukhin, 2020-2022. +// Copyright Antony Polukhin, 2020-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -22,6 +22,8 @@ namespace boost { +/// The exception thrown in the event of a failed boost::any_cast of +/// an boost::any, boost::anys::basic_any or boost::anys::unique_any value. class BOOST_SYMBOL_VISIBLE bad_any_cast : #ifndef BOOST_NO_RTTI public std::bad_cast @@ -30,7 +32,7 @@ class BOOST_SYMBOL_VISIBLE bad_any_cast : #endif { public: - const char * what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE + const char * what() const BOOST_NOEXCEPT_OR_NOTHROW override { return "boost::bad_any_cast: " "failed conversion using boost::any_cast"; diff --git a/inst/include/boost/any/basic_any.hpp b/inst/include/boost/any/basic_any.hpp index 980abed19..116cb4e1a 100644 --- a/inst/include/boost/any/basic_any.hpp +++ b/inst/include/boost/any/basic_any.hpp @@ -1,5 +1,5 @@ // Copyright Ruslan Arutyunyan, 2019-2021. -// Copyright Antony Polukhin, 2021-2022. +// Copyright Antony Polukhin, 2021-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -15,37 +15,51 @@ # pragma once #endif +/// \file boost/any/basic_any.hpp +/// \brief \copybrief boost::anys::basic_any + #include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include + +#include // for std::addressof +#include + namespace boost { namespace anys { + /// \brief A class with customizable Small Object Optimization whose + /// instances can hold instances of any type that satisfies + /// \forcedlink{ValueType} requirements. Use boost::any instead if not sure. + /// + /// boost::anys::basic_any is the drop-in replacement for boost::any + /// that provides control over Small Object Optimization via + /// `OptimizeForSize` and `OptimizeForAlignment` template parameters. + /// + /// There are certain applications that require boost::any + /// functionality, do know the typical/maximal size of the stored object and + /// wish to avoid dynamic memory allocation overhead. For the convenience + /// such applications may create a typedef for boost::anys::basic_any + /// with the `OptimizeForSize` and `OptimizeForAlignment` template + /// parameters set to typical/maximal size and alignment of types + /// respectively. Memory allocation would be avoided for storing nothrow + /// move constructible types with size and alignment less than or + /// equal to the `OptimizeForSize` and `OptimizeForAlignment` values. + /// + /// Otherwise just use boost::any. template class basic_any { - BOOST_STATIC_ASSERT_MSG(OptimizeForSize > 0 && OptimizeForAlignment > 0, "Size and Align shall be positive values"); - BOOST_STATIC_ASSERT_MSG(OptimizeForSize >= OptimizeForAlignment, "Size shall non less than Align"); - BOOST_STATIC_ASSERT_MSG((OptimizeForAlignment & (OptimizeForAlignment - 1)) == 0, "Align shall be a power of 2"); - BOOST_STATIC_ASSERT_MSG(OptimizeForSize % OptimizeForAlignment == 0, "Size shall be multiple of alignment"); + static_assert(OptimizeForSize > 0 && OptimizeForAlignment > 0, "Size and Align shall be positive values"); + static_assert(OptimizeForSize >= OptimizeForAlignment, "Size shall non less than Align"); + static_assert((OptimizeForAlignment & (OptimizeForAlignment - 1)) == 0, "Align shall be a power of 2"); + static_assert(OptimizeForSize % OptimizeForAlignment == 0, "Size shall be multiple of alignment"); private: + /// @cond enum operation { Destroy, @@ -71,11 +85,7 @@ namespace anys { BOOST_ASSERT(!right->empty()); BOOST_ASSERT(right->type() == boost::typeindex::type_id()); ValueType* value = reinterpret_cast(&const_cast(right)->content.small_value); -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES new (&left.content.small_value) ValueType(std::move(*value)); -#else - new (&left.content.small_value) ValueType(*value); -#endif left.man = right->man; reinterpret_cast(&right->content.small_value)->~ValueType(); const_cast(right)->man = 0; @@ -95,10 +105,10 @@ namespace anys { BOOST_ASSERT(info); BOOST_ASSERT(!left.empty()); return boost::typeindex::type_id() == *info ? - reinterpret_cast::type *>(&left.content.small_value) : 0; + reinterpret_cast::type *>(&left.content.small_value) : 0; case UnsafeCast: BOOST_ASSERT(!left.empty()); - return reinterpret_cast::type *>(&left.content.small_value); + return reinterpret_cast::type *>(&left.content.small_value); case Typeinfo: return const_cast(static_cast(&boost::typeindex::type_id().type_info())); } @@ -137,10 +147,10 @@ namespace anys { BOOST_ASSERT(info); BOOST_ASSERT(!left.empty()); return boost::typeindex::type_id() == *info ? - static_cast::type *>(left.content.large_value) : 0; + static_cast::type *>(left.content.large_value) : 0; case UnsafeCast: BOOST_ASSERT(!left.empty()); - return reinterpret_cast::type *>(left.content.large_value); + return reinterpret_cast::type *>(left.content.large_value); case Typeinfo: return const_cast(static_cast(&boost::typeindex::type_id().type_info())); } @@ -149,72 +159,91 @@ namespace anys { } template - struct is_small_object : boost::integral_constant::value <= OptimizeForAlignment && - boost::is_nothrow_move_constructible::value> + struct is_small_object : std::integral_constant::value> {}; template - static void create(basic_any& any, const ValueType& value, boost::true_type) + static void create(basic_any& any, const ValueType& value, std::true_type) { - typedef typename boost::decay::type DecayedType; + typedef typename std::decay::type DecayedType; any.man = &small_manager; new (&any.content.small_value) ValueType(value); } template - static void create(basic_any& any, const ValueType& value, boost::false_type) + static void create(basic_any& any, const ValueType& value, std::false_type) { - typedef typename boost::decay::type DecayedType; + typedef typename std::decay::type DecayedType; any.man = &large_manager; any.content.large_value = new DecayedType(value); } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template - static void create(basic_any& any, ValueType&& value, boost::true_type) + static void create(basic_any& any, ValueType&& value, std::true_type) { - typedef typename boost::decay::type DecayedType; + typedef typename std::decay::type DecayedType; any.man = &small_manager; - new (&any.content.small_value) DecayedType(static_cast(value)); + new (&any.content.small_value) DecayedType(std::forward(value)); } template - static void create(basic_any& any, ValueType&& value, boost::false_type) + static void create(basic_any& any, ValueType&& value, std::false_type) { - typedef typename boost::decay::type DecayedType; + typedef typename std::decay::type DecayedType; any.man = &large_manager; - any.content.large_value = new DecayedType(static_cast(value)); + any.content.large_value = new DecayedType(std::forward(value)); } -#endif + /// @endcond + public: // non-type template parameters accessors - static BOOST_CONSTEXPR_OR_CONST std::size_t buffer_size = OptimizeForSize; - static BOOST_CONSTEXPR_OR_CONST std::size_t buffer_align = OptimizeForAlignment; + static constexpr std::size_t buffer_size = OptimizeForSize; + static constexpr std::size_t buffer_align = OptimizeForAlignment; public: // structors - BOOST_CONSTEXPR basic_any() BOOST_NOEXCEPT + /// \post this->empty() is true. + constexpr basic_any() noexcept : man(0), content() { } + /// Makes a copy of `value`, so + /// that the initial content of the new instance is equivalent + /// in both type and value to `value`. + /// + /// Does not dynamically allocate if `ValueType` is nothrow + /// move constructible and `sizeof(value) <= OptimizeForSize` and + /// `alignof(value) <= OptimizeForAlignment`. + /// + /// \throws std::bad_alloc or any exceptions arising from the copy + /// constructor of the contained type. template basic_any(const ValueType & value) : man(0), content() { - BOOST_STATIC_ASSERT_MSG( - !(boost::is_same::value), + static_assert( + !std::is_same::value, "boost::anys::basic_any shall not be constructed from boost::any" ); - BOOST_STATIC_ASSERT_MSG( + static_assert( !anys::detail::is_basic_any::value, "boost::anys::basic_any shall not be constructed from boost::anys::basic_any" ); create(*this, value, is_small_object()); } + /// Copy constructor that copies content of + /// `other` into new instance, so that any content + /// is equivalent in both type and value to the content of + /// `other`, or empty if `other` is empty. + /// + /// \throws May fail with a `std::bad_alloc` + /// exception or any exceptions arising from the copy + /// constructor of the contained type. basic_any(const basic_any & other) : man(0), content() { @@ -224,9 +253,12 @@ namespace anys { } } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - // Move constructor - basic_any(basic_any&& other) BOOST_NOEXCEPT + /// Move constructor that moves content of + /// `other` into new instance and leaves `other` empty. + /// + /// \post other->empty() is true + /// \throws Nothing. + basic_any(basic_any&& other) noexcept : man(0), content() { if (other.man) @@ -235,27 +267,38 @@ namespace anys { } } - // Perfect forwarding of ValueType + /// Forwards `value`, so + /// that the initial content of the new instance is equivalent + /// in both type and value to `value` before the forward. + /// + /// Does not dynamically allocate if `ValueType` is nothrow + /// move constructible and `sizeof(value) <= OptimizeForSize` and + /// `alignof(value) <= OptimizeForAlignment`. + /// + /// \throws std::bad_alloc or any exceptions arising from the move or + /// copy constructor of the contained type. template basic_any(ValueType&& value - , typename boost::disable_if >::type* = 0 // disable if value has type `basic_any&` - , typename boost::disable_if >::type* = 0) // disable if value has type `const ValueType&&` + , typename std::enable_if::value >::type* = 0 // disable if value has type `basic_any&` + , typename std::enable_if::value >::type* = 0) // disable if value has type `const ValueType&&` : man(0), content() { - typedef typename boost::decay::type DecayedType; - BOOST_STATIC_ASSERT_MSG( - !(boost::is_same::value), + typedef typename std::decay::type DecayedType; + static_assert( + !std::is_same::value, "boost::anys::basic_any shall not be constructed from boost::any" ); - BOOST_STATIC_ASSERT_MSG( + static_assert( !anys::detail::is_basic_any::value, "boost::anys::basic_any shall not be constructed from boost::anys::basic_any" ); create(*this, static_cast(value), is_small_object()); } -#endif - ~basic_any() BOOST_NOEXCEPT + /// Releases any and all resources used in management of instance. + /// + /// \throws Nothing. + ~basic_any() noexcept { if (man) { @@ -265,7 +308,11 @@ namespace anys { public: // modifiers - basic_any & swap(basic_any & rhs) BOOST_NOEXCEPT + /// Exchange of the contents of `*this` and `rhs`. + /// + /// \returns `*this` + /// \throws Nothing. + basic_any & swap(basic_any & rhs) noexcept { if (this == &rhs) { @@ -290,74 +337,86 @@ namespace anys { return *this; } - -#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES - template - basic_any & operator=(const ValueType & rhs) - { - BOOST_STATIC_ASSERT_MSG( - !(boost::is_same::value), - "boost::any shall not be assigned into boost::anys::basic_any" - ); - BOOST_STATIC_ASSERT_MSG( - !anys::detail::is_basic_any::value, - "boost::anys::basic_any shall not be assigned into boost::anys::basic_any" - ); - basic_any(rhs).swap(*this); - return *this; - } - - basic_any & operator=(basic_any rhs) - { - rhs.swap(*this); - return *this; - } - -#else + /// Copies content of `rhs` into + /// current instance, discarding previous content, so that the + /// new content is equivalent in both type and value to the + /// content of `rhs`, or empty if `rhs.empty()`. + /// + /// \throws std::bad_alloc + /// or any exceptions arising from the copy constructor of the + /// contained type. Assignment satisfies the strong guarantee + /// of exception safety. basic_any & operator=(const basic_any& rhs) { basic_any(rhs).swap(*this); return *this; } - // move assignment - basic_any & operator=(basic_any&& rhs) BOOST_NOEXCEPT + /// Moves content of `rhs` into + /// current instance, discarding previous content, so that the + /// new content is equivalent in both type and value to the + /// content of `rhs` before move, or empty if + /// `rhs.empty()`. + /// + /// \post `rhs->empty()` is true + /// \throws Nothing. + basic_any & operator=(basic_any&& rhs) noexcept { rhs.swap(*this); basic_any().swap(rhs); return *this; } - // Perfect forwarding of ValueType + /// Forwards `rhs`, + /// discarding previous content, so that the new content of is + /// equivalent in both type and value to + /// `rhs` before forward. + /// + /// Does not dynamically allocate if `ValueType` is nothrow + /// move constructible and `sizeof(value) <= OptimizeForSize` and + /// `alignof(value) <= OptimizeForAlignment`. + /// + /// \throws std::bad_alloc + /// or any exceptions arising from the move or copy constructor of the + /// contained type. Assignment satisfies the strong guarantee + /// of exception safety. template basic_any & operator=(ValueType&& rhs) { - typedef typename boost::decay::type DecayedType; - BOOST_STATIC_ASSERT_MSG( - !(boost::is_same::value), + typedef typename std::decay::type DecayedType; + static_assert( + !std::is_same::value, "boost::any shall not be assigned into boost::anys::basic_any" ); - BOOST_STATIC_ASSERT_MSG( - (!anys::detail::is_basic_any::value || boost::is_same::value), + static_assert( + !anys::detail::is_basic_any::value || std::is_same::value, "boost::anys::basic_any shall not be assigned into boost::anys::basic_any" ); - basic_any(static_cast(rhs)).swap(*this); + basic_any(std::forward(rhs)).swap(*this); return *this; } -#endif public: // queries - bool empty() const BOOST_NOEXCEPT + /// \returns `true` if instance is empty, otherwise `false`. + /// \throws Nothing. + bool empty() const noexcept { return !man; } - void clear() BOOST_NOEXCEPT + /// \post this->empty() is true + void clear() noexcept { basic_any().swap(*this); } + /// \returns the `typeid` of the + /// contained value if instance is non-empty, otherwise + /// `typeid(void)`. + /// + /// Useful for querying against types known either at compile time or + /// only at runtime. const boost::typeindex::type_info& type() const BOOST_NOEXCEPT { return man @@ -366,12 +425,12 @@ namespace anys { } private: // representation - + /// @cond template - friend ValueType * any_cast(basic_any *) BOOST_NOEXCEPT; + friend ValueType * any_cast(basic_any *) noexcept; template - friend ValueType * unsafe_any_cast(basic_any *) BOOST_NOEXCEPT; + friend ValueType * unsafe_any_cast(basic_any *) noexcept; typedef void*(*manager)(operation op, basic_any& left, const basic_any* right, const boost::typeindex::type_info* info); @@ -379,36 +438,46 @@ namespace anys { union content { void * large_value; - typename boost::aligned_storage::type small_value; + alignas(OptimizeForAlignment) unsigned char small_value[OptimizeForSize]; } content; + /// @endcond }; + /// Exchange of the contents of `lhs` and `rhs`. + /// \throws Nothing. template - void swap(basic_any& lhs, basic_any& rhs) BOOST_NOEXCEPT + void swap(basic_any& lhs, basic_any& rhs) noexcept { lhs.swap(rhs); } + /// \returns Pointer to a ValueType stored in `operand`, nullptr if + /// `operand` does not contain specified `ValueType`. template - ValueType * any_cast(basic_any * operand) BOOST_NOEXCEPT + ValueType * any_cast(basic_any * operand) noexcept { return operand->man ? - static_cast::type *>(operand->man(basic_any::AnyCast, *operand, 0, &boost::typeindex::type_id().type_info())) + static_cast::type *>(operand->man(basic_any::AnyCast, *operand, 0, &boost::typeindex::type_id().type_info())) : 0; } + /// \returns Const pointer to a ValueType stored in `operand`, nullptr if + /// `operand` does not contain specified `ValueType`. template - inline const ValueType * any_cast(const basic_any * operand) BOOST_NOEXCEPT + inline const ValueType * any_cast(const basic_any * operand) noexcept { - return any_cast(const_cast *>(operand)); + return boost::anys::any_cast(const_cast *>(operand)); } + /// \returns ValueType stored in `operand` + /// \throws boost::bad_any_cast if `operand` does not contain + /// specified ValueType. template ValueType any_cast(basic_any & operand) { - typedef typename remove_reference::type nonref; + typedef typename std::remove_reference::type nonref; - nonref * result = any_cast(boost::addressof(operand)); + nonref * result = boost::anys::any_cast(std::addressof(operand)); if(!result) boost::throw_exception(bad_any_cast()); @@ -416,10 +485,10 @@ namespace anys { // `ValueType` is not a reference. Example: // `static_cast(*result);` // which is equal to `std::string(*result);` - typedef typename boost::conditional< - boost::is_reference::value, + typedef typename std::conditional< + std::is_reference::value, ValueType, - typename boost::add_reference::type + typename std::add_lvalue_reference::type >::type ref_type; #ifdef BOOST_MSVC @@ -432,43 +501,50 @@ namespace anys { #endif } + /// \returns `ValueType` stored in `operand` + /// \throws boost::bad_any_cast if `operand` does not contain + /// specified `ValueType`. template inline ValueType any_cast(const basic_any & operand) { - typedef typename remove_reference::type nonref; - return any_cast(const_cast &>(operand)); + typedef typename std::remove_reference::type nonref; + return boost::anys::any_cast(const_cast &>(operand)); } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + /// \returns `ValueType` stored in `operand`, leaving the `operand` empty. + /// \throws boost::bad_any_cast if `operand` does not contain + /// specified `ValueType`. template inline ValueType any_cast(basic_any&& operand) { - BOOST_STATIC_ASSERT_MSG( - boost::is_rvalue_reference::value /*true if ValueType is rvalue or just a value*/ - || boost::is_const< typename boost::remove_reference::type >::value, + static_assert( + std::is_rvalue_reference::value /*true if ValueType is rvalue or just a value*/ + || std::is_const< typename std::remove_reference::type >::value, "boost::any_cast shall not be used for getting nonconst references to temporary objects" ); - return any_cast(operand); + return boost::anys::any_cast(operand); } -#endif + /// @cond + // Note: The "unsafe" versions of any_cast are not part of the // public interface and may be removed at any time. They are // required where we know what type is stored in the any and can't // use typeid() comparison, e.g., when our types may travel across // different shared libraries. template - inline ValueType * unsafe_any_cast(basic_any * operand) BOOST_NOEXCEPT + inline ValueType * unsafe_any_cast(basic_any * operand) noexcept { return static_cast(operand->man(basic_any::UnsafeCast, *operand, 0, 0)); } template - inline const ValueType * unsafe_any_cast(const basic_any * operand) BOOST_NOEXCEPT + inline const ValueType * unsafe_any_cast(const basic_any * operand) noexcept { - return unsafe_any_cast(const_cast *>(operand)); + return boost::anys::unsafe_any_cast(const_cast *>(operand)); } + /// @endcond } // namespace anys diff --git a/inst/include/boost/any/detail/placeholder.hpp b/inst/include/boost/any/detail/placeholder.hpp new file mode 100644 index 000000000..360d78cb0 --- /dev/null +++ b/inst/include/boost/any/detail/placeholder.hpp @@ -0,0 +1,33 @@ +// Copyright Antony Polukhin, 2021-2023. +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_ANY_ANYS_DETAIL_PLACEHOLDER_HPP +#define BOOST_ANY_ANYS_DETAIL_PLACEHOLDER_HPP + +#include +#ifdef BOOST_HAS_PRAGMA_ONCE +# pragma once +#endif + +#include + +/// @cond +namespace boost { +namespace anys { +namespace detail { + +class BOOST_SYMBOL_VISIBLE placeholder { +public: + virtual ~placeholder() {} + virtual const boost::typeindex::type_info& type() const noexcept = 0; +}; + +} // namespace detail +} // namespace anys +} // namespace boost +/// @endcond + +#endif // #ifndef BOOST_ANY_ANYS_DETAIL_PLACEHOLDER_HPP diff --git a/inst/include/boost/any/fwd.hpp b/inst/include/boost/any/fwd.hpp index 6905b2644..752f3acef 100644 --- a/inst/include/boost/any/fwd.hpp +++ b/inst/include/boost/any/fwd.hpp @@ -1,4 +1,4 @@ -// Copyright Antony Polukhin, 2021-2022. +// Copyright Antony Polukhin, 2021-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -13,28 +13,43 @@ # pragma once #endif - #include +/// \file boost/any/fwd.hpp +/// \brief Forward declarations of Boost.Any library types. +/// @cond namespace boost { class any; namespace anys { -template::value> +class unique_any; + +template class basic_any; namespace detail { - template - struct is_basic_any: public false_type {}; + template + struct is_basic_any: public std::false_type {}; template - struct is_basic_any > : public true_type {}; + struct is_basic_any > : public std::true_type {}; + + template + struct is_some_any: public is_basic_any {}; + + template <> + struct is_some_any: public std::true_type {}; + + template <> + struct is_some_any: public std::true_type {}; + } // namespace detail } // namespace anys } // namespace boost +/// @endcond #endif // #ifndef BOOST_ANY_ANYS_FWD_HPP diff --git a/inst/include/boost/any/unique_any.hpp b/inst/include/boost/any/unique_any.hpp index a56dd6c8c..9f4f41c17 100644 --- a/inst/include/boost/any/unique_any.hpp +++ b/inst/include/boost/any/unique_any.hpp @@ -1,4 +1,4 @@ -// Copyright Antony Polukhin, 2020-2022. +// Copyright Antony Polukhin, 2020-2023. // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -14,32 +14,23 @@ # pragma once #endif -#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES -#error Header requires C++11 compatible compiler with move semantics -#endif - -#ifdef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -#error Header requires C++11 compatible compiler with defaulted functions -#endif - -#ifdef BOOST_NO_CXX11_SMART_PTR -#error Header requires C++11 compatible standard library with std::unique_ptr -#endif -#include - -#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST -#include -#endif +/// \file boost/any/unique_any.hpp +/// \brief \copybrief boost::anys::unique_any +#include // for std::unique_ptr #include +#include +#include #include +#include -#include -#include +#include +#include namespace boost { namespace anys { +/// Helper type for providing emplacement type to the constructor. template struct in_place_type_t { @@ -50,40 +41,104 @@ template constexpr in_place_type_t in_place_type{}; #endif +/// \brief A class whose instances can hold instances of any +/// type (including non-copyable and non-movable types). class unique_any { public: + /// \post this->has_value() is false. + constexpr unique_any() noexcept = default; + + /// Move constructor that moves content of + /// `other` into new instance and leaves `other` empty. + /// + /// \post other->has_value() is false. + /// \throws Nothing. + unique_any(unique_any&& other) noexcept = default; + + /// Forwards `value`, so + /// that the content of the new instance has type `std::decay_t` + /// and value is the `value` before the forward. + /// + /// \throws std::bad_alloc or any exceptions arising from the move or + /// copy constructor of the contained type. + template + unique_any(T&& value, typename std::enable_if::value>::type* = nullptr) + : content(new holder< typename std::decay::type >(std::forward(value))) + { + static_assert( + !boost::anys::detail::is_basic_any< typename std::decay::type >::value, + "boost::anys::unique_any could not be constructed from boost::anys::basic_any." + ); - BOOST_CONSTEXPR unique_any() BOOST_NOEXCEPT = default; + static_assert( + !std::is_same::type >::value, + "boost::anys::unique_any could not be copied, only moved." + ); - unique_any(unique_any&& other) BOOST_NOEXCEPT = default; + static_assert( + !std::is_same::type >::value, + "boost::anys::unique_any could be constructed from an rvalue of boost::any, " + "not a lvalue." + ); + } - // Perfect forwarding of T - template - unique_any(T&& value - , typename boost::disable_if >::type* = 0 // disable if value has type `unique_any&` - , typename boost::disable_if >::type* = 0) // disable if value has type `const T&&` - : content(new holder< typename boost::decay::type >(std::forward(value))) + /// Moves the content of `boost::any` into *this. + /// + /// \throws Nothing. + /// \post `value.empty()` is true. + template + unique_any(BoostAny&& value, typename std::enable_if::value>::type* = nullptr) noexcept { + content.reset(value.content); + value.content = nullptr; } + /// Inplace constructs `T` from forwarded `args...`, + /// so that the content of `*this` is equivalent + /// in type to `std::decay_t`. + /// + /// \throws std::bad_alloc or any exceptions arising from the move or + /// copy constructor of the contained type. template explicit unique_any(in_place_type_t, Args&&... args) - : content(new holder::type>(std::forward(args)...)) + : content(new holder::type>(std::forward(args)...)) { } -#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST + /// Inplace constructs `T` from `li` and forwarded `args...`, + /// so that the initial content of `*this` is equivalent + /// in type to `std::decay_t`. + /// + /// \throws std::bad_alloc or any exceptions arising from the move or + /// copy constructor of the contained type. template explicit unique_any(in_place_type_t, std::initializer_list il, Args&&... args) - : content(new holder::type>(il, std::forward(args)...)) + : content(new holder::type>(il, std::forward(args)...)) { } -#endif - - ~unique_any() BOOST_NOEXCEPT = default; - - unique_any & operator=(unique_any&& rhs) BOOST_NOEXCEPT = default; + /// Releases any and all resources used in management of instance. + /// + /// \throws Nothing. + ~unique_any() noexcept = default; + + /// Moves content of `rhs` into + /// current instance, discarding previous content, so that the + /// new content is equivalent in both type and value to the + /// content of rhs before move, or empty if `rhs.empty()`. + /// + /// \post `rhs->empty()` is true + /// \throws Nothing. + unique_any & operator=(unique_any&& rhs) noexcept = default; + + /// Forwards `rhs`, + /// discarding previous content, so that the new content of is + /// equivalent in both type and value to `rhs` before forward. + /// + /// \throws std::bad_alloc + /// or any exceptions arising from the move or copy constructor of the + /// contained type. Assignment satisfies the strong guarantee + /// of exception safety. template unique_any & operator=(T&& rhs) { @@ -91,124 +146,157 @@ class unique_any { return *this; } + /// Inplace constructs `T` from forwarded `args...`, discarding previous + /// content, so that the content of `*this` is equivalent + /// in type to `std::decay_t`. + /// + /// \returns reference to the content of `*this`. + /// \throws std::bad_alloc or any exceptions arising from the move or + /// copy constructor of the contained type. template - typename boost::decay::type& emplace(Args&&... args) { - content = std::unique_ptr( - new holder::type>(std::forward(args)...) - ); + typename std::decay::type& emplace(Args&&... args) { + auto* raw_ptr = new holder::type>(std::forward(args)...); + content = std::unique_ptr(raw_ptr); + return raw_ptr->held; } -#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST + /// Inplace constructs `T` from `li` and forwarded `args...`, discarding + /// previous content, so that the content of `*this` is equivalent + /// in type to `std::decay_t`. + /// + /// \returns reference to the content of `*this`. + /// \throws std::bad_alloc or any exceptions arising from the move or + /// copy constructor of the contained type. template - typename boost::decay::type& emplace(initializer_list il, Args&&... args) { - content = std::unique_ptr( - new holder::type>(il, std::forward(args)...) - ); + typename std::decay::type& emplace(std::initializer_list il, Args&&... args) { + auto* raw_ptr = new holder::type>(il, std::forward(args)...); + content = std::unique_ptr(raw_ptr); + return raw_ptr->held; } -#endif - void reset() BOOST_NOEXCEPT + /// \post this->has_value() is false. + void reset() noexcept { content.reset(); } - unique_any& swap(unique_any& rhs) BOOST_NOEXCEPT + /// Exchange of the contents of `*this` and `rhs`. + /// + /// \returns `*this` + /// \throws Nothing. + void swap(unique_any& rhs) noexcept { content.swap(rhs.content); - return *this; } - - bool has_value() const BOOST_NOEXCEPT + /// \returns `true` if instance is not empty, otherwise `false`. + /// \throws Nothing. + bool has_value() const noexcept { - return !content; + return !!content; } - const boost::typeindex::type_info& type() const BOOST_NOEXCEPT + /// \returns the `typeid` of the + /// contained value if instance is non-empty, otherwise + /// `typeid(void)`. + /// + /// Useful for querying against types known either at compile time or + /// only at runtime. + const boost::typeindex::type_info& type() const noexcept { return content ? content->type() : boost::typeindex::type_id().type_info(); } private: // types - class BOOST_SYMBOL_VISIBLE placeholder - { - virtual ~placeholder() - { - } - - virtual const boost::typeindex::type_info& type() const BOOST_NOEXCEPT = 0; - - }; - + /// @cond template - class holder BOOST_FINAL: public placeholder + class holder final: public boost::anys::detail::placeholder { - public: // structors - + public: template holder(Args&&... args) : held(std::forward(args)...) { } -#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST template holder(std::initializer_list il, Args&&... args) : held(il, std::forward(args)...) { } -#endif - const boost::typeindex::type_info& type() const BOOST_NOEXCEPT BOOST_OVERRIDE + const boost::typeindex::type_info& type() const noexcept override { return boost::typeindex::type_id().type_info(); } - public: // representation - + public: T held; }; - private: // representation - template - friend T * any_cast(unique_any *) BOOST_NOEXCEPT; + friend T * unsafe_any_cast(unique_any *) noexcept; - template - friend T * unsafe_any_cast(unique_any *) BOOST_NOEXCEPT; - - std::unique_ptr content; + std::unique_ptr content; + /// @endcond }; -inline void swap(unique_any & lhs, unique_any & rhs) BOOST_NOEXCEPT +/// Exchange of the contents of `lhs` and `rhs`. +/// \throws Nothing. +inline void swap(unique_any & lhs, unique_any & rhs) noexcept { lhs.swap(rhs); } +/// @cond + +// Note: The "unsafe" versions of any_cast are not part of the +// public interface and may be removed at any time. They are +// required where we know what type is stored in the any and can't +// use typeid() comparison, e.g., when our types may travel across +// different shared libraries. +template +inline T * unsafe_any_cast(unique_any * operand) noexcept +{ + return std::addressof( + static_cast&>(*operand->content).held + ); +} + +template +inline const T * unsafe_any_cast(const unique_any * operand) noexcept +{ + return anys::unsafe_any_cast(const_cast(operand)); +} +/// @endcond + +/// \returns Pointer to a `T` stored in `operand`, nullptr if +/// `operand` does not contain specified `T`. template -T * any_cast(unique_any * operand) BOOST_NOEXCEPT +T * any_cast(unique_any * operand) noexcept { return operand && operand->type() == boost::typeindex::type_id() - ? boost::addressof( - static_cast::type>&>(*operand->content).held - ) - : 0; + ? anys::unsafe_any_cast::type>(operand) + : nullptr; } +/// \returns Const pointer to a `T` stored in `operand`, nullptr if +/// `operand` does not contain specified `T`. template -inline const T * any_cast(const unique_any * operand) BOOST_NOEXCEPT +inline const T * any_cast(const unique_any * operand) noexcept { - return any_cast(const_cast(operand)); + return anys::any_cast(const_cast(operand)); } +/// \returns `T` stored in `operand` +/// \throws boost::bad_any_cast if `operand` does not contain specified `T`. template T any_cast(unique_any & operand) { - typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; + typedef typename std::remove_reference::type nonref; - - nonref * result = any_cast(boost::addressof(operand)); + nonref * result = anys::any_cast(std::addressof(operand)); if(!result) boost::throw_exception(bad_any_cast()); @@ -216,10 +304,10 @@ T any_cast(unique_any & operand) // `T` is not a reference. Example: // `static_cast(*result);` // which is equal to `std::string(*result);` - typedef BOOST_DEDUCED_TYPENAME boost::conditional< - boost::is_reference::value, + typedef typename std::conditional< + std::is_reference::value, T, - BOOST_DEDUCED_TYPENAME boost::add_reference::type + T& >::type ref_type; #ifdef BOOST_MSVC @@ -232,44 +320,26 @@ T any_cast(unique_any & operand) #endif } +/// \returns `T` stored in `operand` +/// \throws boost::bad_any_cast if `operand` does not contain specified `T`. template inline T any_cast(const unique_any & operand) { - typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; - return any_cast(const_cast(operand)); + typedef typename std::remove_reference::type nonref; + return anys::any_cast(const_cast(operand)); } -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +/// \returns `T` stored in `operand` +/// \throws boost::bad_any_cast if `operand` does not contain specified `T`. template inline T any_cast(unique_any&& operand) { - BOOST_STATIC_ASSERT_MSG( - boost::is_rvalue_reference::value /*true if T is rvalue or just a value*/ - || boost::is_const< typename boost::remove_reference::type >::value, + static_assert( + std::is_rvalue_reference::value /*true if T is rvalue or just a value*/ + || std::is_const< typename std::remove_reference::type >::value, "boost::any_cast shall not be used for getting nonconst references to temporary objects" ); - return any_cast(operand); -} -#endif - - -// Note: The "unsafe" versions of any_cast are not part of the -// public interface and may be removed at any time. They are -// required where we know what type is stored in the any and can't -// use typeid() comparison, e.g., when our types may travel across -// different shared libraries. -template -inline T * unsafe_any_cast(unique_any * operand) BOOST_NOEXCEPT -{ - return boost::addressof( - static_cast&>(*operand->content)->held - ); -} - -template -inline const T * unsafe_any_cast(const unique_any * operand) BOOST_NOEXCEPT -{ - return unsafe_any_cast(const_cast(operand)); + return std::move(anys::any_cast(operand)); } } // namespace anys diff --git a/inst/include/boost/archive/basic_archive.hpp b/inst/include/boost/archive/basic_archive.hpp index 381a12750..d3c1e280c 100644 --- a/inst/include/boost/archive/basic_archive.hpp +++ b/inst/include/boost/archive/basic_archive.hpp @@ -60,7 +60,7 @@ class version_type { operator base_type () const { return t; } - // used for text intput + // used for text input operator base_type & (){ return t; } diff --git a/inst/include/boost/archive/basic_binary_iarchive.hpp b/inst/include/boost/archive/basic_binary_iarchive.hpp index 2ec90ce08..89a5ca1ac 100644 --- a/inst/include/boost/archive/basic_binary_iarchive.hpp +++ b/inst/include/boost/archive/basic_binary_iarchive.hpp @@ -10,7 +10,7 @@ // basic_binary_iarchive.hpp // // archives stored as native binary - this should be the fastest way -// to archive the state of a group of obects. It makes no attempt to +// to archive the state of a group of objects. It makes no attempt to // convert to any canonical form. // IN GENERAL, ARCHIVES CREATED WITH THIS CLASS WILL NOT BE READABLE @@ -69,7 +69,7 @@ class BOOST_SYMBOL_VISIBLE basic_binary_iarchive : // intermediate level to support override of operators // fot templates in the absence of partial function // template ordering. If we get here pass to base class - // note extra nonsense to sneak it pass the borland compiers + // note extra nonsense to sneak it pass the borland compilers typedef detail::common_iarchive detail_common_iarchive; template void load_override(T & t){ diff --git a/inst/include/boost/archive/basic_binary_iprimitive.hpp b/inst/include/boost/archive/basic_binary_iprimitive.hpp index a29024072..f197ead00 100644 --- a/inst/include/boost/archive/basic_binary_iprimitive.hpp +++ b/inst/include/boost/archive/basic_binary_iprimitive.hpp @@ -14,7 +14,7 @@ // basic_binary_iprimitive.hpp // // archives stored as native binary - this should be the fastest way -// to archive the state of a group of obects. It makes no attempt to +// to archive the state of a group of objects. It makes no attempt to // convert to any canonical form. // IN GENERAL, ARCHIVES CREATED WITH THIS CLASS WILL NOT BE READABLE @@ -89,7 +89,7 @@ class BOOST_SYMBOL_VISIBLE basic_binary_iprimitive { std::locale archive_locale; #endif - // main template for serilization of primitive types + // main template for serialization of primitive types template void load(T & t){ load_binary(& t, sizeof(T)); diff --git a/inst/include/boost/archive/basic_binary_oarchive.hpp b/inst/include/boost/archive/basic_binary_oarchive.hpp index 61bd8faac..92bab36d6 100644 --- a/inst/include/boost/archive/basic_binary_oarchive.hpp +++ b/inst/include/boost/archive/basic_binary_oarchive.hpp @@ -17,7 +17,7 @@ // See http://www.boost.org for updates, documentation, and revision history. // archives stored as native binary - this should be the fastest way -// to archive the state of a group of obects. It makes no attempt to +// to archive the state of a group of objects. It makes no attempt to // convert to any canonical form. // IN GENERAL, ARCHIVES CREATED WITH THIS CLASS WILL NOT BE READABLE @@ -53,9 +53,9 @@ namespace detail { // class basic_binary_oarchive - write serialized objects to a binary output stream // note: this archive has no pretensions to portability. Archive format // may vary across machine architectures and compilers. About the only -// guarentee is that an archive created with this code will be readable -// by a program built with the same tools for the same machne. This class -// does have the virtue of buiding the smalles archive in the minimum amount +// guarantee is that an archive created with this code will be readable +// by a program built with the same tools for the same machine. This class +// does have the virtue of building the smallest archive in the minimum amount // of time. So under some circumstances it may be he right choice. template class BOOST_SYMBOL_VISIBLE basic_binary_oarchive : @@ -73,7 +73,7 @@ class BOOST_SYMBOL_VISIBLE basic_binary_oarchive : friend class detail::interface_oarchive; #endif #endif - // any datatype not specifed below will be handled by base class + // any datatype not specified below will be handled by base class typedef detail::common_oarchive detail_common_oarchive; template void save_override(const T & t){ diff --git a/inst/include/boost/archive/basic_binary_oprimitive.hpp b/inst/include/boost/archive/basic_binary_oprimitive.hpp index 6c5e8e5e9..bf44ac50d 100644 --- a/inst/include/boost/archive/basic_binary_oprimitive.hpp +++ b/inst/include/boost/archive/basic_binary_oprimitive.hpp @@ -17,7 +17,7 @@ // See http://www.boost.org for updates, documentation, and revision history. // archives stored as native binary - this should be the fastest way -// to archive the state of a group of obects. It makes no attempt to +// to archive the state of a group of objects. It makes no attempt to // convert to any canonical form. // IN GENERAL, ARCHIVES CREATED WITH THIS CLASS WILL NOT BE READABLE @@ -56,7 +56,7 @@ namespace boost { namespace archive { ///////////////////////////////////////////////////////////////////////// -// class basic_binary_oprimitive - binary output of prmitives +// class basic_binary_oprimitive - binary output of primitives template class BOOST_SYMBOL_VISIBLE basic_binary_oprimitive { @@ -156,7 +156,7 @@ basic_binary_oprimitive::save_binary( // BOOST_ASSERT(count <= std::size_t(boost::integer_traits::const_max)); // note: if the following assertions fail // a likely cause is that the output stream is set to "text" - // mode where by cr characters recieve special treatment. + // mode where by cr characters receive special treatment. // be sure that the output stream is opened with ios::binary //if(os.fail()) // boost::serialization::throw_exception( diff --git a/inst/include/boost/archive/basic_text_oprimitive.hpp b/inst/include/boost/archive/basic_text_oprimitive.hpp index adc0e896f..3776958f0 100644 --- a/inst/include/boost/archive/basic_text_oprimitive.hpp +++ b/inst/include/boost/archive/basic_text_oprimitive.hpp @@ -61,7 +61,7 @@ namespace boost { namespace archive { ///////////////////////////////////////////////////////////////////////// -// class basic_text_oprimitive - output of prmitives to stream +// class basic_text_oprimitive - output of primitives to stream template class BOOST_SYMBOL_VISIBLE basic_text_oprimitive { @@ -159,17 +159,18 @@ class BOOST_SYMBOL_VISIBLE basic_text_oprimitive archive_exception(archive_exception::output_stream_error) ); } - // The formulae for the number of decimla digits required is given in + // The formulae for the number of decimal digits required is given in // http://www2.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf // which is derived from Kahan's paper: // www.eecs.berkeley.edu/~wkahan/ieee754status/ieee754.ps // const unsigned int digits = (std::numeric_limits::digits * 3010) / 10000; // note: I've commented out the above because I didn't get good results. e.g. // in one case I got a difference of 19 units. + const unsigned int digits = #ifndef BOOST_NO_CXX11_NUMERIC_LIMITS - const unsigned int digits = std::numeric_limits::max_digits10; + std::numeric_limits::max_digits10; #else - const unsigned int digits = std::numeric_limits::digits10 + 2; + std::numeric_limits::digits10 + 2; #endif os << std::setprecision(digits) << std::scientific << t; } diff --git a/inst/include/boost/archive/binary_iarchive.hpp b/inst/include/boost/archive/binary_iarchive.hpp index 5052631a3..78e3e9a54 100644 --- a/inst/include/boost/archive/binary_iarchive.hpp +++ b/inst/include/boost/archive/binary_iarchive.hpp @@ -29,7 +29,7 @@ namespace boost { namespace archive { // do not derive from this class. If you want to extend this functionality -// via inhertance, derived from binary_iarchive_impl instead. This will +// via inheritance, derived from binary_iarchive_impl instead. This will // preserve correct static polymorphism. class BOOST_SYMBOL_VISIBLE binary_iarchive : public binary_iarchive_impl< diff --git a/inst/include/boost/archive/binary_oarchive.hpp b/inst/include/boost/archive/binary_oarchive.hpp index ba775d5c6..7197e7d5b 100644 --- a/inst/include/boost/archive/binary_oarchive.hpp +++ b/inst/include/boost/archive/binary_oarchive.hpp @@ -30,7 +30,7 @@ namespace boost { namespace archive { // do not derive from this class. If you want to extend this functionality -// via inhertance, derived from binary_oarchive_impl instead. This will +// via inheritance, derived from binary_oarchive_impl instead. This will // preserve correct static polymorphism. class BOOST_SYMBOL_VISIBLE binary_oarchive : public binary_oarchive_impl< diff --git a/inst/include/boost/archive/binary_woarchive.hpp b/inst/include/boost/archive/binary_woarchive.hpp index 6735ceba6..227fa9566 100644 --- a/inst/include/boost/archive/binary_woarchive.hpp +++ b/inst/include/boost/archive/binary_woarchive.hpp @@ -29,7 +29,7 @@ namespace boost { namespace archive { // do not derive from this class. If you want to extend this functionality -// via inhertance, derived from binary_oarchive_impl instead. This will +// via inheritance, derived from binary_oarchive_impl instead. This will // preserve correct static polymorphism. class binary_woarchive : public binary_oarchive_impl< diff --git a/inst/include/boost/archive/codecvt_null.hpp b/inst/include/boost/archive/codecvt_null.hpp index 3905d43ad..e78f126b3 100644 --- a/inst/include/boost/archive/codecvt_null.hpp +++ b/inst/include/boost/archive/codecvt_null.hpp @@ -52,7 +52,7 @@ class codecvt_null; template<> class codecvt_null : public std::codecvt { - bool do_always_noconv() const throw() BOOST_OVERRIDE { + bool do_always_noconv() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return true; } public: @@ -88,15 +88,15 @@ class BOOST_SYMBOL_VISIBLE codecvt_null : wchar_t * & next2 ) const BOOST_OVERRIDE; - BOOST_SYMBOL_EXPORT int do_encoding( ) const throw( ) BOOST_OVERRIDE { + BOOST_SYMBOL_EXPORT int do_encoding( ) const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return sizeof(wchar_t) / sizeof(char); } - BOOST_SYMBOL_EXPORT bool do_always_noconv() const throw() BOOST_OVERRIDE { + BOOST_SYMBOL_EXPORT bool do_always_noconv() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return false; } - BOOST_SYMBOL_EXPORT int do_max_length( ) const throw( ) BOOST_OVERRIDE { + BOOST_SYMBOL_EXPORT int do_max_length( ) const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { return do_encoding(); } public: diff --git a/inst/include/boost/archive/detail/archive_serializer_map.hpp b/inst/include/boost/archive/detail/archive_serializer_map.hpp index 1e94e258a..6c12dcceb 100644 --- a/inst/include/boost/archive/detail/archive_serializer_map.hpp +++ b/inst/include/boost/archive/detail/archive_serializer_map.hpp @@ -7,7 +7,7 @@ #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// archive_serializer_map.hpp: extenstion of type_info required for +// archive_serializer_map.hpp: extension of type_info required for // serialization. // (C) Copyright 2009 Robert Ramey - http://www.rrsd.com . @@ -17,7 +17,7 @@ // See http://www.boost.org for updates, documentation, and revision history. -// note: this is nothing more than the thinest of wrappers around +// note: this is nothing more than the thinnest of wrappers around // basic_serializer_map so we can have a one map / archive type. #include diff --git a/inst/include/boost/archive/detail/basic_iserializer.hpp b/inst/include/boost/archive/detail/basic_iserializer.hpp index 98c9c4745..e70fb65c8 100644 --- a/inst/include/boost/archive/detail/basic_iserializer.hpp +++ b/inst/include/boost/archive/detail/basic_iserializer.hpp @@ -7,7 +7,7 @@ #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// basic_iserializer.hpp: extenstion of type_info required for serialization. +// basic_iserializer.hpp: extension of type_info required for serialization. // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to the Boost Software @@ -78,7 +78,7 @@ class BOOST_SYMBOL_VISIBLE basic_iserializer : virtual void destroy(/*const*/ void *address) const = 0 ; }; -} // namespae detail +} // namespace detail } // namespace archive } // namespace boost diff --git a/inst/include/boost/archive/detail/basic_oserializer.hpp b/inst/include/boost/archive/detail/basic_oserializer.hpp index b3f956776..b9d31969b 100644 --- a/inst/include/boost/archive/detail/basic_oserializer.hpp +++ b/inst/include/boost/archive/detail/basic_oserializer.hpp @@ -7,7 +7,7 @@ #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// basic_oserializer.hpp: extenstion of type_info required for serialization. +// basic_oserializer.hpp: extension of type_info required for serialization. // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to the Boost Software diff --git a/inst/include/boost/archive/detail/basic_pointer_iserializer.hpp b/inst/include/boost/archive/detail/basic_pointer_iserializer.hpp index be805a42a..a499393f0 100644 --- a/inst/include/boost/archive/detail/basic_pointer_iserializer.hpp +++ b/inst/include/boost/archive/detail/basic_pointer_iserializer.hpp @@ -7,7 +7,7 @@ #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// basic_pointer_oserializer.hpp: extenstion of type_info required for +// basic_pointer_oserializer.hpp: extension of type_info required for // serialization. // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . diff --git a/inst/include/boost/archive/detail/basic_pointer_oserializer.hpp b/inst/include/boost/archive/detail/basic_pointer_oserializer.hpp index 86376568a..58aec5772 100644 --- a/inst/include/boost/archive/detail/basic_pointer_oserializer.hpp +++ b/inst/include/boost/archive/detail/basic_pointer_oserializer.hpp @@ -7,7 +7,7 @@ #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// basic_pointer_oserializer.hpp: extenstion of type_info required for +// basic_pointer_oserializer.hpp: extension of type_info required for // serialization. // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . diff --git a/inst/include/boost/archive/detail/basic_serializer.hpp b/inst/include/boost/archive/detail/basic_serializer.hpp index 9c2535bf3..30db65158 100644 --- a/inst/include/boost/archive/detail/basic_serializer.hpp +++ b/inst/include/boost/archive/detail/basic_serializer.hpp @@ -7,7 +7,7 @@ #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// basic_serializer.hpp: extenstion of type_info required for serialization. +// basic_serializer.hpp: extension of type_info required for serialization. // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to the Boost Software diff --git a/inst/include/boost/archive/detail/basic_serializer_map.hpp b/inst/include/boost/archive/detail/basic_serializer_map.hpp index 78c6a52d3..07408cbc0 100644 --- a/inst/include/boost/archive/detail/basic_serializer_map.hpp +++ b/inst/include/boost/archive/detail/basic_serializer_map.hpp @@ -7,7 +7,7 @@ #endif /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// basic_serializer_map.hpp: extenstion of type_info required for serialization. +// basic_serializer_map.hpp: extension of type_info required for serialization. // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to the Boost Software diff --git a/inst/include/boost/archive/detail/check.hpp b/inst/include/boost/archive/detail/check.hpp index 5bf0a48bb..27d1db97c 100644 --- a/inst/include/boost/archive/detail/check.hpp +++ b/inst/include/boost/archive/detail/check.hpp @@ -94,7 +94,7 @@ inline void check_object_tracking(){ // may be an indicator of an error usage of the // serialization library and should be double checked. // See documentation on object tracking. Also, see the - // "rationale" section of the documenation + // "rationale" section of the documentation // for motivation for this checking. BOOST_STATIC_WARNING(typex::value); diff --git a/inst/include/boost/archive/detail/helper_collection.hpp b/inst/include/boost/archive/detail/helper_collection.hpp index edb4125e3..082ad33a6 100644 --- a/inst/include/boost/archive/detail/helper_collection.hpp +++ b/inst/include/boost/archive/detail/helper_collection.hpp @@ -55,10 +55,11 @@ class helper_collection collection m_collection; struct predicate { + BOOST_DEFAULTED_FUNCTION(predicate(const predicate& rhs), : m_ti(rhs.m_ti) {}) BOOST_DELETED_FUNCTION(predicate & operator=(const predicate & rhs)) public: const void * const m_ti; - bool operator()(helper_value_type const &rhs) const { + bool operator()(helper_value_type const &rhs){ return m_ti == rhs.first; } predicate(const void * ti) : diff --git a/inst/include/boost/archive/detail/interface_oarchive.hpp b/inst/include/boost/archive/detail/interface_oarchive.hpp index 44b47e619..88e857bc2 100644 --- a/inst/include/boost/archive/detail/interface_oarchive.hpp +++ b/inst/include/boost/archive/detail/interface_oarchive.hpp @@ -18,6 +18,7 @@ #include // NULL #include #include +#include #include #include @@ -44,7 +45,7 @@ class interface_oarchive // return a pointer to the most derived class Archive * This(){ - return static_cast(this); + return static_cast(this); } template diff --git a/inst/include/boost/archive/detail/iserializer.hpp b/inst/include/boost/archive/detail/iserializer.hpp index b1a9d438b..ce12f4790 100644 --- a/inst/include/boost/archive/detail/iserializer.hpp +++ b/inst/include/boost/archive/detail/iserializer.hpp @@ -169,12 +169,12 @@ BOOST_DLLEXPORT void iserializer::load_object_data( void *x, const unsigned int file_version ) const { - // note: we now comment this out. Before we permited archive + // note: we now comment this out. Before we permitted archive // version # to be very large. Now we don't. To permit // readers of these old archives, we have to suppress this // code. Perhaps in the future we might re-enable it but // permit its suppression with a runtime switch. - #if 0 + #if 1 // trap case where the program cannot handle the current version if(file_version > static_cast(version())) boost::serialization::throw_exception( @@ -184,7 +184,7 @@ BOOST_DLLEXPORT void iserializer::load_object_data( ) ); #endif - // make sure call is routed through the higest interface that might + // make sure call is routed through the highest interface that might // be specialized by the user. boost::serialization::serialize_adl( boost::serialization::smart_cast_reference(ar), @@ -308,7 +308,7 @@ class pointer_iserializer : const unsigned int file_version ) const BOOST_OVERRIDE BOOST_USED; public: - // this should alway be a singleton so make the constructor protected + // this should always be a singleton so make the constructor protected pointer_iserializer(); ~pointer_iserializer() BOOST_OVERRIDE; }; @@ -392,7 +392,7 @@ struct load_non_pointer_type { template static void invoke(Archive & ar, const T & t){ // short cut to user's serializer - // make sure call is routed through the higest interface that might + // make sure call is routed through the highest interface that might // be specialized by the user. boost::serialization::serialize_adl( ar, @@ -589,7 +589,7 @@ struct load_array_type { boost::archive::archive_exception::array_size_too_short ) ); - // explict template arguments to pass intel C++ compiler + // explicit template arguments to pass intel C++ compiler ar >> serialization::make_array< value_type, boost::serialization::collection_size_type diff --git a/inst/include/boost/archive/detail/oserializer.hpp b/inst/include/boost/archive/detail/oserializer.hpp index f6a77edfc..754fe97c2 100644 --- a/inst/include/boost/archive/detail/oserializer.hpp +++ b/inst/include/boost/archive/detail/oserializer.hpp @@ -509,7 +509,7 @@ struct save_array_type ); boost::serialization::collection_size_type count(c); ar << BOOST_SERIALIZATION_NVP(count); - // explict template arguments to pass intel C++ compiler + // explicit template arguments to pass intel C++ compiler ar << serialization::make_array< const value_type, boost::serialization::collection_size_type diff --git a/inst/include/boost/archive/impl/basic_xml_iarchive.ipp b/inst/include/boost/archive/impl/basic_xml_iarchive.ipp index f7490530e..289b31a36 100644 --- a/inst/include/boost/archive/impl/basic_xml_iarchive.ipp +++ b/inst/include/boost/archive/impl/basic_xml_iarchive.ipp @@ -10,6 +10,7 @@ #include #include // NULL +#include // strlen #include #include @@ -58,7 +59,10 @@ basic_xml_iarchive::load_end(const char *name){ if(0 == (this->get_flags() & no_xml_tag_checking)){ // double check that the tag matches what is expected - useful for debug - if(0 != name[this->This()->gimpl->rv.object_name.size()] + std::size_t parameter_name_length = std::strlen(name); + std::size_t object_name_length = this->This()->gimpl->rv.object_name.size(); + + if(parameter_name_length != object_name_length || ! std::equal( this->This()->gimpl->rv.object_name.begin(), this->This()->gimpl->rv.object_name.end(), diff --git a/inst/include/boost/archive/impl/basic_xml_oarchive.ipp b/inst/include/boost/archive/impl/basic_xml_oarchive.ipp index 3184413f3..f4947a047 100644 --- a/inst/include/boost/archive/impl/basic_xml_oarchive.ipp +++ b/inst/include/boost/archive/impl/basic_xml_oarchive.ipp @@ -33,7 +33,7 @@ struct XML_name { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, // -. - 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, // 0-9 + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, // 0-9 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // A- 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, // -Z _ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // a- diff --git a/inst/include/boost/archive/impl/xml_oarchive_impl.ipp b/inst/include/boost/archive/impl/xml_oarchive_impl.ipp index 0f4ccbbf9..9f74c61d0 100644 --- a/inst/include/boost/archive/impl/xml_oarchive_impl.ipp +++ b/inst/include/boost/archive/impl/xml_oarchive_impl.ipp @@ -131,8 +131,9 @@ BOOST_ARCHIVE_DECL xml_oarchive_impl::~xml_oarchive_impl(){ if(boost::core::uncaught_exceptions() > 0) return; - if(0 == (this->get_flags() & no_header)) - this->windup(); + if(0 == (this->get_flags() & no_header)){ + this->put("\n"); + } } } // namespace archive diff --git a/inst/include/boost/archive/iterators/base64_from_binary.hpp b/inst/include/boost/archive/iterators/base64_from_binary.hpp index bd0b38fa5..99be6ce6e 100644 --- a/inst/include/boost/archive/iterators/base64_from_binary.hpp +++ b/inst/include/boost/archive/iterators/base64_from_binary.hpp @@ -84,7 +84,7 @@ class base64_from_binary : > super_t; public: - // make composible buy using templated constructor + // make composable by using templated constructor template base64_from_binary(T start) : super_t( diff --git a/inst/include/boost/archive/iterators/binary_from_base64.hpp b/inst/include/boost/archive/iterators/binary_from_base64.hpp index 5aeccb3aa..926eba0da 100644 --- a/inst/include/boost/archive/iterators/binary_from_base64.hpp +++ b/inst/include/boost/archive/iterators/binary_from_base64.hpp @@ -93,7 +93,7 @@ class binary_from_base64 : public Base > super_t; public: - // make composible buy using templated constructor + // make composable by using templated constructor template binary_from_base64(T start) : super_t( diff --git a/inst/include/boost/archive/iterators/dataflow_exception.hpp b/inst/include/boost/archive/iterators/dataflow_exception.hpp index a144a8bd6..0fa32b090 100644 --- a/inst/include/boost/archive/iterators/dataflow_exception.hpp +++ b/inst/include/boost/archive/iterators/dataflow_exception.hpp @@ -46,7 +46,7 @@ class dataflow_exception : public std::exception dataflow_exception(exception_code c = other_exception) : code(c) {} - const char *what( ) const throw( ) BOOST_OVERRIDE + const char *what( ) const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE { const char *msg = "unknown exception code"; switch(code){ diff --git a/inst/include/boost/archive/iterators/escape.hpp b/inst/include/boost/archive/iterators/escape.hpp index 9af34ac9d..b40914410 100644 --- a/inst/include/boost/archive/iterators/escape.hpp +++ b/inst/include/boost/archive/iterators/escape.hpp @@ -82,7 +82,7 @@ class escape : } void increment(){ - if(++m_bnext < m_bend){ + if(m_bnext != NULL && ++m_bnext < m_bend){ m_current_value = *m_bnext; return; } diff --git a/inst/include/boost/archive/iterators/insert_linebreaks.hpp b/inst/include/boost/archive/iterators/insert_linebreaks.hpp index c75ea8415..a52d3f05b 100644 --- a/inst/include/boost/archive/iterators/insert_linebreaks.hpp +++ b/inst/include/boost/archive/iterators/insert_linebreaks.hpp @@ -79,7 +79,7 @@ class insert_linebreaks : } unsigned int m_count; public: - // make composible buy using templated constructor + // make composable by using templated constructor template insert_linebreaks(T start) : super_t(Base(static_cast< T >(start))), diff --git a/inst/include/boost/archive/iterators/mb_from_wchar.hpp b/inst/include/boost/archive/iterators/mb_from_wchar.hpp index dbd17b7c7..b6130f22b 100644 --- a/inst/include/boost/archive/iterators/mb_from_wchar.hpp +++ b/inst/include/boost/archive/iterators/mb_from_wchar.hpp @@ -18,6 +18,7 @@ #include #include // size_t +#include // memcpy #ifndef BOOST_NO_CWCHAR #include // mbstate_t #endif @@ -25,6 +26,7 @@ #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::mbstate_t; + using ::memcpy; } // namespace std #endif @@ -117,7 +119,7 @@ class mb_from_wchar bool m_full; public: - // make composible buy using templated constructor + // make composable by using templated constructor template mb_from_wchar(T start) : super_t(Base(static_cast< T >(start))), @@ -129,10 +131,13 @@ class mb_from_wchar // intel 7.1 doesn't like default copy constructor mb_from_wchar(const mb_from_wchar & rhs) : super_t(rhs.base_reference()), + m_mbs(rhs.m_mbs), m_bend(rhs.m_bend), m_bnext(rhs.m_bnext), m_full(rhs.m_full) - {} + { + std::memcpy(m_buffer, rhs.m_buffer, sizeof(m_buffer)); + } }; } // namespace iterators diff --git a/inst/include/boost/archive/iterators/remove_whitespace.hpp b/inst/include/boost/archive/iterators/remove_whitespace.hpp index eb756f379..bb549a8b0 100644 --- a/inst/include/boost/archive/iterators/remove_whitespace.hpp +++ b/inst/include/boost/archive/iterators/remove_whitespace.hpp @@ -149,7 +149,7 @@ class remove_whitespace : > super_t; public: // remove_whitespace(){} // why is this needed? - // make composible buy using templated constructor + // make composable by using templated constructor template remove_whitespace(T start) : super_t(Base(static_cast< T >(start))) diff --git a/inst/include/boost/archive/iterators/transform_width.hpp b/inst/include/boost/archive/iterators/transform_width.hpp index 162dccfa9..d1511912a 100644 --- a/inst/include/boost/archive/iterators/transform_width.hpp +++ b/inst/include/boost/archive/iterators/transform_width.hpp @@ -106,7 +106,7 @@ class transform_width : bool m_end_of_sequence; public: - // make composible buy using templated constructor + // make composable by using templated constructor template transform_width(T start) : super_t(Base(static_cast< T >(start))), diff --git a/inst/include/boost/archive/iterators/wchar_from_mb.hpp b/inst/include/boost/archive/iterators/wchar_from_mb.hpp index 6067245d3..65542b625 100644 --- a/inst/include/boost/archive/iterators/wchar_from_mb.hpp +++ b/inst/include/boost/archive/iterators/wchar_from_mb.hpp @@ -124,7 +124,7 @@ class wchar_from_mb sliding_buffer::type> m_output; public: - // make composible buy using templated constructor + // make composable by using templated constructor template wchar_from_mb(T start) : super_t(Base(static_cast< T >(start))), diff --git a/inst/include/boost/archive/iterators/xml_escape.hpp b/inst/include/boost/archive/iterators/xml_escape.hpp index c45733ea1..b018033cb 100644 --- a/inst/include/boost/archive/iterators/xml_escape.hpp +++ b/inst/include/boost/archive/iterators/xml_escape.hpp @@ -76,6 +76,8 @@ char xml_escape::fill( bend = bstart + 6; break; default: + bstart=""; + bend=bstart; return current_value; } return *bstart; diff --git a/inst/include/boost/archive/iterators/xml_unescape.hpp b/inst/include/boost/archive/iterators/xml_unescape.hpp index 7fc9fd5f6..1dc516858 100644 --- a/inst/include/boost/archive/iterators/xml_unescape.hpp +++ b/inst/include/boost/archive/iterators/xml_unescape.hpp @@ -79,7 +79,7 @@ void xml_unescape::drain_residue(const char * literal){ // note key constraint on this function is that can't "look ahead" any // more than necessary into base iterator. Doing so would alter the base -// iterator refenence which would make subsequent iterator comparisons +// iterator reference which would make subsequent iterator comparisons // incorrect and thereby break the composiblity of iterators. template typename xml_unescape::value_type diff --git a/inst/include/boost/array.hpp b/inst/include/boost/array.hpp index f047063d9..02bd76db7 100644 --- a/inst/include/boost/array.hpp +++ b/inst/include/boost/array.hpp @@ -33,18 +33,18 @@ #include -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +# pragma warning(push) # pragma warning(disable:4996) // 'std::equal': Function call with parameters that may be unsafe -# pragma warning(disable:4510) // boost::array' : default constructor could not be generated -# pragma warning(disable:4610) // warning C4610: class 'boost::array' can never be instantiated - user defined constructor required +# pragma warning(disable:4510) // boost::array' : default constructor could not be generated +# pragma warning(disable:4610) // warning C4610: class 'boost::array' can never be instantiated - user defined constructor required #endif #include #include #include #include -#include +#include #include #include @@ -75,7 +75,7 @@ namespace boost { iterator begin() { return elems; } const_iterator begin() const { return elems; } const_iterator cbegin() const { return elems; } - + iterator end() { return elems+N; } const_iterator end() const { return elems+N; } const_iterator cend() const { return elems+N; } @@ -84,9 +84,9 @@ namespace boost { #if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; -#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) - typedef std::reverse_iterator reverse_iterator; +#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) + typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; #else @@ -112,39 +112,39 @@ namespace boost { } // operator[] - reference operator[](size_type i) - { - return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i]; + reference operator[](size_type i) + { + return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i]; } - - /*BOOST_CONSTEXPR*/ const_reference operator[](size_type i) const - { - return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i]; + + /*BOOST_CONSTEXPR*/ const_reference operator[](size_type i) const + { + return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i]; } // at() with range check reference at(size_type i) { return rangecheck(i), elems[i]; } /*BOOST_CONSTEXPR*/ const_reference at(size_type i) const { return rangecheck(i), elems[i]; } - + // front() and back() - reference front() - { - return elems[0]; + reference front() + { + return elems[0]; } - - BOOST_CONSTEXPR const_reference front() const + + BOOST_CONSTEXPR const_reference front() const { return elems[0]; } - - reference back() - { - return elems[N-1]; + + reference back() + { + return elems[N-1]; } - - BOOST_CONSTEXPR const_reference back() const - { - return elems[N-1]; + + BOOST_CONSTEXPR const_reference back() const + { + return elems[N-1]; } // size is constant @@ -156,7 +156,7 @@ namespace boost { // swap (note: linear complexity) void swap (array& y) { for (size_type i = 0; i < N; ++i) - boost::swap(elems[i],y.elems[i]); + boost::core::invoke_swap(elems[i],y.elems[i]); } // direct access to data (read-only) @@ -213,9 +213,9 @@ namespace boost { #if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; -#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) - typedef std::reverse_iterator reverse_iterator; +#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) + typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; #else @@ -301,7 +301,7 @@ namespace boost { // assign one value to all elements void assign (const T& value) { fill ( value ); } void fill (const T& ) {} - + // check range (may be private because it is static) static reference failed_rangecheck () { std::out_of_range e("attempt to access element of an empty array"); @@ -353,16 +353,16 @@ namespace boost { #if defined(__SUNPRO_CC) // Trac ticket #4757; the Sun Solaris compiler can't handle // syntax like 'T(&get_c_array(boost::array& arg))[N]' -// -// We can't just use this for all compilers, because the -// borland compilers can't handle this form. +// +// We can't just use this for all compilers, because the +// borland compilers can't handle this form. namespace detail { template struct c_array { typedef T type[N]; }; } - + // Specific for boost::array: simply returns its elems data member. template typename detail::c_array::type& get_c_array(boost::array& arg) @@ -383,7 +383,7 @@ namespace boost { { return arg.elems; } - + // Const version. template const T(&get_c_array(const boost::array& arg))[N] @@ -391,7 +391,7 @@ namespace boost { return arg.elems; } #endif - + #if 0 // Overload for std::array, assuming that std::array will have // explicit conversion functions as discussed at the WG21 meeting @@ -401,7 +401,7 @@ namespace boost { { return static_cast(arg); } - + // Const version. template const T(&get_c_array(const std::array& arg))[N] @@ -423,7 +423,7 @@ namespace boost { BOOST_STATIC_ASSERT_MSG ( Idx < N, "boost::get<>(boost::array &) index out of range" ); return arr[Idx]; } - + template const T &get(const boost::array &arr) BOOST_NOEXCEPT { BOOST_STATIC_ASSERT_MSG ( Idx < N, "boost::get<>(const boost::array &) index out of range" ); @@ -440,7 +440,7 @@ namespace std { BOOST_STATIC_ASSERT_MSG ( Idx < N, "std::get<>(boost::array &) index out of range" ); return arr[Idx]; } - + template const T &get(const boost::array &arr) BOOST_NOEXCEPT { BOOST_STATIC_ASSERT_MSG ( Idx < N, "std::get<>(const boost::array &) index out of range" ); @@ -449,8 +449,8 @@ namespace std { } #endif -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif +#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) +# pragma warning(pop) +#endif #endif /*BOOST_ARRAY_HPP*/ diff --git a/inst/include/boost/asio.hpp b/inst/include/boost/asio.hpp index ee6f0af4c..7b889de4a 100644 --- a/inst/include/boost/asio.hpp +++ b/inst/include/boost/asio.hpp @@ -2,7 +2,7 @@ // asio.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,8 +23,9 @@ #include #include #include -#include #include +#include +#include #include #include #include @@ -50,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -80,30 +82,15 @@ #include #include #include -#include -#include -#include #include #include -#include #include #include #include #include -#include #include #include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include #include #include #include @@ -112,9 +99,7 @@ #include #include #include -#include #include -#include #include #include #include @@ -152,6 +137,7 @@ #include #include #include +#include #include #include #include @@ -178,6 +164,7 @@ #include #include #include +#include #include #include #include diff --git a/inst/include/boost/asio/any_completion_executor.hpp b/inst/include/boost/asio/any_completion_executor.hpp index 74933b96d..319fab23f 100644 --- a/inst/include/boost/asio/any_completion_executor.hpp +++ b/inst/include/boost/asio/any_completion_executor.hpp @@ -2,7 +2,7 @@ // any_completion_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -76,20 +76,18 @@ class any_completion_executor : #endif // !defined(GENERATING_DOCUMENTATION) /// Default constructor. - BOOST_ASIO_DECL any_completion_executor() BOOST_ASIO_NOEXCEPT; + BOOST_ASIO_DECL any_completion_executor() noexcept; /// Construct in an empty state. Equivalent effects to default constructor. - BOOST_ASIO_DECL any_completion_executor(nullptr_t) BOOST_ASIO_NOEXCEPT; + BOOST_ASIO_DECL any_completion_executor(nullptr_t) noexcept; /// Copy constructor. BOOST_ASIO_DECL any_completion_executor( - const any_completion_executor& e) BOOST_ASIO_NOEXCEPT; + const any_completion_executor& e) noexcept; -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Move constructor. BOOST_ASIO_DECL any_completion_executor( - any_completion_executor&& e) BOOST_ASIO_NOEXCEPT; -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + any_completion_executor&& e) noexcept; /// Construct to point to the same target as another any_executor. #if defined(GENERATING_DOCUMENTATION) @@ -99,7 +97,7 @@ class any_completion_executor : #else // defined(GENERATING_DOCUMENTATION) template any_completion_executor(OtherAnyExecutor e, - typename constraint< + constraint_t< conditional< !is_same::value && is_base_of, false_type >::type::value - >::type = 0) - : base_type(BOOST_ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + > = 0) + : base_type(static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) @@ -123,7 +121,7 @@ class any_completion_executor : #else // defined(GENERATING_DOCUMENTATION) template any_completion_executor(std::nothrow_t, OtherAnyExecutor e, - typename constraint< + constraint_t< conditional< !is_same::value && is_base_of, false_type >::type::value - >::type = 0) BOOST_ASIO_NOEXCEPT - : base_type(std::nothrow, BOOST_ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + > = 0) noexcept + : base_type(std::nothrow, static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) /// Construct to point to the same target as another any_executor. BOOST_ASIO_DECL any_completion_executor(std::nothrow_t, - const any_completion_executor& e) BOOST_ASIO_NOEXCEPT; + const any_completion_executor& e) noexcept; -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Construct to point to the same target as another any_executor. BOOST_ASIO_DECL any_completion_executor(std::nothrow_t, - any_completion_executor&& e) BOOST_ASIO_NOEXCEPT; -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + any_completion_executor&& e) noexcept; /// Construct a polymorphic wrapper for the specified executor. #if defined(GENERATING_DOCUMENTATION) @@ -156,7 +152,7 @@ class any_completion_executor : #else // defined(GENERATING_DOCUMENTATION) template any_completion_executor(Executor e, - typename constraint< + constraint_t< conditional< !is_same::value && !is_base_of, false_type >::type::value - >::type = 0) - : base_type(BOOST_ASIO_MOVE_CAST(Executor)(e)) + > = 0) + : base_type(static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) @@ -178,7 +174,7 @@ class any_completion_executor : #else // defined(GENERATING_DOCUMENTATION) template any_completion_executor(std::nothrow_t, Executor e, - typename constraint< + constraint_t< conditional< !is_same::value && !is_base_of, false_type >::type::value - >::type = 0) BOOST_ASIO_NOEXCEPT - : base_type(std::nothrow, BOOST_ASIO_MOVE_CAST(Executor)(e)) + > = 0) noexcept + : base_type(std::nothrow, static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) /// Assignment operator. BOOST_ASIO_DECL any_completion_executor& operator=( - const any_completion_executor& e) BOOST_ASIO_NOEXCEPT; + const any_completion_executor& e) noexcept; -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Move assignment operator. BOOST_ASIO_DECL any_completion_executor& operator=( - any_completion_executor&& e) BOOST_ASIO_NOEXCEPT; -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + any_completion_executor&& e) noexcept; /// Assignment operator that sets the polymorphic wrapper to the empty state. BOOST_ASIO_DECL any_completion_executor& operator=(nullptr_t); @@ -210,7 +204,7 @@ class any_completion_executor : BOOST_ASIO_DECL ~any_completion_executor(); /// Swap targets with another polymorphic wrapper. - BOOST_ASIO_DECL void swap(any_completion_executor& other) BOOST_ASIO_NOEXCEPT; + BOOST_ASIO_DECL void swap(any_completion_executor& other) noexcept; /// Obtain a polymorphic wrapper with the specified property. /** @@ -223,9 +217,9 @@ class any_completion_executor : */ template any_completion_executor require(const Property& p, - typename constraint< + constraint_t< traits::require_member::is_valid - >::type = 0) const + > = 0) const { return static_cast(*this).require(p); } @@ -241,9 +235,9 @@ class any_completion_executor : */ template any_completion_executor prefer(const Property& p, - typename constraint< + constraint_t< traits::prefer_member::is_valid - >::type = 0) const + > = 0) const { return static_cast(*this).prefer(p); } diff --git a/inst/include/boost/asio/any_completion_handler.hpp b/inst/include/boost/asio/any_completion_handler.hpp index b7510a824..17c727592 100644 --- a/inst/include/boost/asio/any_completion_handler.hpp +++ b/inst/include/boost/asio/any_completion_handler.hpp @@ -2,7 +2,7 @@ // any_completion_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -12,20 +12,16 @@ #define BOOST_ASIO_ANY_COMPLETION_HANDLER_HPP #include - -#if (defined(BOOST_ASIO_HAS_STD_TUPLE) \ - && defined(BOOST_ASIO_HAS_MOVE) \ - && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)) \ - || defined(GENERATING_DOCUMENTATION) - #include #include #include #include #include +#include #include #include #include +#include #include #include @@ -40,11 +36,11 @@ class any_completion_handler_impl_base public: template explicit any_completion_handler_impl_base(S&& slot) - : cancel_state_(BOOST_ASIO_MOVE_CAST(S)(slot), enable_total_cancellation()) + : cancel_state_(static_cast(slot), enable_total_cancellation()) { } - cancellation_slot get_cancellation_slot() const BOOST_ASIO_NOEXCEPT + cancellation_slot get_cancellation_slot() const noexcept { return cancel_state_.slot(); } @@ -60,8 +56,8 @@ class any_completion_handler_impl : public: template any_completion_handler_impl(S&& slot, H&& h) - : any_completion_handler_impl_base(BOOST_ASIO_MOVE_CAST(S)(slot)), - handler_(BOOST_ASIO_MOVE_CAST(H)(h)) + : any_completion_handler_impl_base(static_cast(slot)), + handler_(static_cast(h)) { } @@ -104,7 +100,7 @@ class any_completion_handler_impl : any_completion_handler_impl* ptr = new (uninit_ptr.get()) any_completion_handler_impl( - BOOST_ASIO_MOVE_CAST(S)(slot), BOOST_ASIO_MOVE_CAST(H)(h)); + static_cast(slot), static_cast(h)); uninit_ptr.release(); return ptr; @@ -120,12 +116,19 @@ class any_completion_handler_impl : } any_completion_executor executor( - const any_completion_executor& candidate) const BOOST_ASIO_NOEXCEPT + const any_completion_executor& candidate) const noexcept { return any_completion_executor(std::nothrow, (get_associated_executor)(handler_, candidate)); } + any_completion_executor immediate_executor( + const any_io_executor& candidate) const noexcept + { + return any_completion_executor(std::nothrow, + (get_associated_immediate_executor)(handler_, candidate)); + } + void* allocate(std::size_t size, std::size_t align) const { typename std::allocator_traits< @@ -181,11 +184,11 @@ class any_completion_handler_impl : boost::asio::recycling_allocator())}; std::unique_ptr ptr(this, d); - Handler handler(BOOST_ASIO_MOVE_CAST(Handler)(handler_)); + Handler handler(static_cast(handler_)); ptr.reset(); - BOOST_ASIO_MOVE_CAST(Handler)(handler)( - BOOST_ASIO_MOVE_CAST(Args)(args)...); + static_cast(handler)( + static_cast(args)...); } private: @@ -208,14 +211,14 @@ class any_completion_handler_call_fn void call(any_completion_handler_impl_base* impl, Args... args) const { - call_fn_(impl, BOOST_ASIO_MOVE_CAST(Args)(args)...); + call_fn_(impl, static_cast(args)...); } template static void impl(any_completion_handler_impl_base* impl, Args... args) { static_cast*>(impl)->call( - BOOST_ASIO_MOVE_CAST(Args)(args)...); + static_cast(args)...); } private: @@ -306,6 +309,36 @@ class any_completion_handler_executor_fn type executor_fn_; }; +class any_completion_handler_immediate_executor_fn +{ +public: + using type = any_completion_executor(*)( + any_completion_handler_impl_base*, const any_io_executor&); + + constexpr any_completion_handler_immediate_executor_fn(type fn) + : immediate_executor_fn_(fn) + { + } + + any_completion_executor immediate_executor( + any_completion_handler_impl_base* impl, + const any_io_executor& candidate) const + { + return immediate_executor_fn_(impl, candidate); + } + + template + static any_completion_executor impl(any_completion_handler_impl_base* impl, + const any_io_executor& candidate) + { + return static_cast*>( + impl)->immediate_executor(candidate); + } + +private: + type immediate_executor_fn_; +}; + class any_completion_handler_allocate_fn { public: @@ -368,6 +401,7 @@ template class any_completion_handler_fn_table : private any_completion_handler_destroy_fn, private any_completion_handler_executor_fn, + private any_completion_handler_immediate_executor_fn, private any_completion_handler_allocate_fn, private any_completion_handler_deallocate_fn, private any_completion_handler_call_fns @@ -377,11 +411,13 @@ class any_completion_handler_fn_table constexpr any_completion_handler_fn_table( any_completion_handler_destroy_fn::type destroy_fn, any_completion_handler_executor_fn::type executor_fn, + any_completion_handler_immediate_executor_fn::type immediate_executor_fn, any_completion_handler_allocate_fn::type allocate_fn, any_completion_handler_deallocate_fn::type deallocate_fn, CallFns... call_fns) : any_completion_handler_destroy_fn(destroy_fn), any_completion_handler_executor_fn(executor_fn), + any_completion_handler_immediate_executor_fn(immediate_executor_fn), any_completion_handler_allocate_fn(allocate_fn), any_completion_handler_deallocate_fn(deallocate_fn), any_completion_handler_call_fns(call_fns...) @@ -390,6 +426,7 @@ class any_completion_handler_fn_table using any_completion_handler_destroy_fn::destroy; using any_completion_handler_executor_fn::executor; + using any_completion_handler_immediate_executor_fn::immediate_executor; using any_completion_handler_allocate_fn::allocate; using any_completion_handler_deallocate_fn::deallocate; using any_completion_handler_call_fns::call; @@ -402,6 +439,7 @@ struct any_completion_handler_fn_table_instance value = any_completion_handler_fn_table( &any_completion_handler_destroy_fn::impl, &any_completion_handler_executor_fn::impl, + &any_completion_handler_immediate_executor_fn::impl, &any_completion_handler_allocate_fn::impl, &any_completion_handler_deallocate_fn::impl, &any_completion_handler_call_fn::template impl...); @@ -416,6 +454,8 @@ any_completion_handler_fn_table_instance::value; template class any_completion_handler; +/// An allocator type that forwards memory allocation operations through an +/// instance of @c any_completion_handler. template class any_completion_handler_allocator { @@ -430,55 +470,72 @@ class any_completion_handler_allocator detail::any_completion_handler_impl_base* impl_; constexpr any_completion_handler_allocator(int, - const any_completion_handler& h) BOOST_ASIO_NOEXCEPT + const any_completion_handler& h) noexcept : fn_table_(h.fn_table_), impl_(h.impl_) { } public: + /// The type of objects that may be allocated by the allocator. typedef T value_type; + /// Rebinds an allocator to another value type. template struct rebind { + /// Specifies the type of the rebound allocator. typedef any_completion_handler_allocator other; }; + /// Construct from another @c any_completion_handler_allocator. template constexpr any_completion_handler_allocator( const any_completion_handler_allocator& a) - BOOST_ASIO_NOEXCEPT + noexcept : fn_table_(a.fn_table_), impl_(a.impl_) { } + /// Equality operator. constexpr bool operator==( - const any_completion_handler_allocator& other) const BOOST_ASIO_NOEXCEPT + const any_completion_handler_allocator& other) const noexcept { return fn_table_ == other.fn_table_ && impl_ == other.impl_; } + /// Inequality operator. constexpr bool operator!=( - const any_completion_handler_allocator& other) const BOOST_ASIO_NOEXCEPT + const any_completion_handler_allocator& other) const noexcept { return fn_table_ != other.fn_table_ || impl_ != other.impl_; } + /// Allocate space for @c n objects of the allocator's value type. T* allocate(std::size_t n) const { - return static_cast( - fn_table_->allocate( - impl_, sizeof(T) * n, alignof(T))); + if (fn_table_) + { + return static_cast( + fn_table_->allocate( + impl_, sizeof(T) * n, alignof(T))); + } + std::bad_alloc ex; + boost::asio::detail::throw_exception(ex); + return nullptr; } + /// Deallocate space for @c n objects of the allocator's value type. void deallocate(T* p, std::size_t n) const { fn_table_->deallocate(impl_, p, sizeof(T) * n, alignof(T)); } }; +/// A protoco-allocator type that may be rebound to obtain an allocator that +/// forwards memory allocation operations through an instance of +/// @c any_completion_handler. template class any_completion_handler_allocator { @@ -493,46 +550,70 @@ class any_completion_handler_allocator detail::any_completion_handler_impl_base* impl_; constexpr any_completion_handler_allocator(int, - const any_completion_handler& h) BOOST_ASIO_NOEXCEPT + const any_completion_handler& h) noexcept : fn_table_(h.fn_table_), impl_(h.impl_) { } public: + /// @c void as no objects can be allocated through a proto-allocator. typedef void value_type; + /// Rebinds an allocator to another value type. template struct rebind { + /// Specifies the type of the rebound allocator. typedef any_completion_handler_allocator other; }; + /// Construct from another @c any_completion_handler_allocator. template constexpr any_completion_handler_allocator( const any_completion_handler_allocator& a) - BOOST_ASIO_NOEXCEPT + noexcept : fn_table_(a.fn_table_), impl_(a.impl_) { } + /// Equality operator. constexpr bool operator==( - const any_completion_handler_allocator& other) const BOOST_ASIO_NOEXCEPT + const any_completion_handler_allocator& other) const noexcept { return fn_table_ == other.fn_table_ && impl_ == other.impl_; } + /// Inequality operator. constexpr bool operator!=( - const any_completion_handler_allocator& other) const BOOST_ASIO_NOEXCEPT + const any_completion_handler_allocator& other) const noexcept { return fn_table_ != other.fn_table_ || impl_ != other.impl_; } }; +/// Polymorphic wrapper for completion handlers. +/** + * The @c any_completion_handler class template is a polymorphic wrapper for + * completion handlers that propagates the associated executor, associated + * allocator, and associated cancellation slot through a type-erasing interface. + * + * When using @c any_completion_handler, specify one or more completion + * signatures as template parameters. These will dictate the arguments that may + * be passed to the handler through the polymorphic interface. + * + * Typical uses for @c any_completion_handler include: + * + * @li Separate compilation of asynchronous operation implementations. + * + * @li Enabling interoperability between asynchronous operations and virtual + * functions. + */ template class any_completion_handler { +#if !defined(GENERATING_DOCUMENTATION) private: template friend class any_completion_handler_allocator; @@ -540,36 +621,55 @@ class any_completion_handler template friend struct associated_executor; + template + friend struct associated_immediate_executor; + const detail::any_completion_handler_fn_table* fn_table_; detail::any_completion_handler_impl_base* impl_; +#endif // !defined(GENERATING_DOCUMENTATION) public: + /// The associated allocator type. using allocator_type = any_completion_handler_allocator; + + /// The associated cancellation slot type. using cancellation_slot_type = cancellation_slot; + /// Construct an @c any_completion_handler in an empty state, without a target + /// object. constexpr any_completion_handler() : fn_table_(nullptr), impl_(nullptr) { } + /// Construct an @c any_completion_handler in an empty state, without a target + /// object. constexpr any_completion_handler(nullptr_t) : fn_table_(nullptr), impl_(nullptr) { } - template ::type> - any_completion_handler(H&& h) + /// Construct an @c any_completion_handler to contain the specified target. + template > + any_completion_handler(H&& h, + constraint_t< + !is_same, any_completion_handler>::value + > = 0) : fn_table_( &detail::any_completion_handler_fn_table_instance< Handler, Signatures...>::value), impl_(detail::any_completion_handler_impl::create( - (get_associated_cancellation_slot)(h), BOOST_ASIO_MOVE_CAST(H)(h))) + (get_associated_cancellation_slot)(h), static_cast(h))) { } - any_completion_handler(any_completion_handler&& other) BOOST_ASIO_NOEXCEPT + /// Move-construct an @c any_completion_handler from another. + /** + * After the operation, the moved-from object @c other has no target. + */ + any_completion_handler(any_completion_handler&& other) noexcept : fn_table_(other.fn_table_), impl_(other.impl_) { @@ -577,84 +677,109 @@ class any_completion_handler other.impl_ = nullptr; } + /// Move-assign an @c any_completion_handler from another. + /** + * After the operation, the moved-from object @c other has no target. + */ any_completion_handler& operator=( - any_completion_handler&& other) BOOST_ASIO_NOEXCEPT + any_completion_handler&& other) noexcept { - any_completion_handler(other).swap(*this); + any_completion_handler( + static_cast(other)).swap(*this); return *this; } - any_completion_handler& operator=(nullptr_t) BOOST_ASIO_NOEXCEPT + /// Assignment operator that sets the polymorphic wrapper to the empty state. + any_completion_handler& operator=(nullptr_t) noexcept { any_completion_handler().swap(*this); return *this; } + /// Destructor. ~any_completion_handler() { if (impl_) fn_table_->destroy(impl_); } - constexpr explicit operator bool() const BOOST_ASIO_NOEXCEPT + /// Test if the polymorphic wrapper is empty. + constexpr explicit operator bool() const noexcept { return impl_ != nullptr; } - constexpr bool operator!() const BOOST_ASIO_NOEXCEPT + /// Test if the polymorphic wrapper is non-empty. + constexpr bool operator!() const noexcept { return impl_ == nullptr; } - void swap(any_completion_handler& other) BOOST_ASIO_NOEXCEPT + /// Swap the content of an @c any_completion_handler with another. + void swap(any_completion_handler& other) noexcept { std::swap(fn_table_, other.fn_table_); std::swap(impl_, other.impl_); } - allocator_type get_allocator() const BOOST_ASIO_NOEXCEPT + /// Get the associated allocator. + allocator_type get_allocator() const noexcept { return allocator_type(0, *this); } - cancellation_slot_type get_cancellation_slot() const BOOST_ASIO_NOEXCEPT + /// Get the associated cancellation slot. + cancellation_slot_type get_cancellation_slot() const noexcept { - return impl_->get_cancellation_slot(); + return impl_ ? impl_->get_cancellation_slot() : cancellation_slot_type(); } + /// Function call operator. + /** + * Invokes target completion handler with the supplied arguments. + * + * This function may only be called once, as the target handler is moved from. + * The polymorphic wrapper is left in an empty state. + * + * Throws @c std::bad_function_call if the polymorphic wrapper is empty. + */ template auto operator()(Args&&... args) - -> decltype(fn_table_->call(impl_, BOOST_ASIO_MOVE_CAST(Args)(args)...)) + -> decltype(fn_table_->call(impl_, static_cast(args)...)) { if (detail::any_completion_handler_impl_base* impl = impl_) { impl_ = nullptr; - return fn_table_->call(impl, BOOST_ASIO_MOVE_CAST(Args)(args)...); + return fn_table_->call(impl, static_cast(args)...); } std::bad_function_call ex; boost::asio::detail::throw_exception(ex); } + /// Equality operator. friend constexpr bool operator==( - const any_completion_handler& a, nullptr_t) BOOST_ASIO_NOEXCEPT + const any_completion_handler& a, nullptr_t) noexcept { return a.impl_ == nullptr; } + /// Equality operator. friend constexpr bool operator==( - nullptr_t, const any_completion_handler& b) BOOST_ASIO_NOEXCEPT + nullptr_t, const any_completion_handler& b) noexcept { return nullptr == b.impl_; } + /// Inequality operator. friend constexpr bool operator!=( - const any_completion_handler& a, nullptr_t) BOOST_ASIO_NOEXCEPT + const any_completion_handler& a, nullptr_t) noexcept { return a.impl_ != nullptr; } + /// Inequality operator. friend constexpr bool operator!=( - nullptr_t, const any_completion_handler& b) BOOST_ASIO_NOEXCEPT + nullptr_t, const any_completion_handler& b) noexcept { return nullptr != b.impl_; } @@ -666,10 +791,28 @@ struct associated_executor, Candidate> using type = any_completion_executor; static type get(const any_completion_handler& handler, - const Candidate& candidate = Candidate()) BOOST_ASIO_NOEXCEPT + const Candidate& candidate = Candidate()) noexcept { - return handler.fn_table_->executor(handler.impl_, - any_completion_executor(std::nothrow, candidate)); + any_completion_executor any_candidate(std::nothrow, candidate); + return handler.fn_table_ + ? handler.fn_table_->executor(handler.impl_, any_candidate) + : any_candidate; + } +}; + +template +struct associated_immediate_executor< + any_completion_handler, Candidate> +{ + using type = any_completion_executor; + + static type get(const any_completion_handler& handler, + const Candidate& candidate = Candidate()) noexcept + { + any_io_executor any_candidate(std::nothrow, candidate); + return handler.fn_table_ + ? handler.fn_table_->immediate_executor(handler.impl_, any_candidate) + : any_candidate; } }; @@ -678,9 +821,4 @@ struct associated_executor, Candidate> #include -#endif // (defined(BOOST_ASIO_HAS_STD_TUPLE) - // && defined(BOOST_ASIO_HAS_MOVE) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)) - // || defined(GENERATING_DOCUMENTATION) - #endif // BOOST_ASIO_ANY_COMPLETION_HANDLER_HPP diff --git a/inst/include/boost/asio/any_io_executor.hpp b/inst/include/boost/asio/any_io_executor.hpp index 523ae94d2..4d6a058d9 100644 --- a/inst/include/boost/asio/any_io_executor.hpp +++ b/inst/include/boost/asio/any_io_executor.hpp @@ -2,7 +2,7 @@ // any_io_executor.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -88,18 +88,16 @@ class any_io_executor : #endif // !defined(GENERATING_DOCUMENTATION) /// Default constructor. - BOOST_ASIO_DECL any_io_executor() BOOST_ASIO_NOEXCEPT; + BOOST_ASIO_DECL any_io_executor() noexcept; /// Construct in an empty state. Equivalent effects to default constructor. - BOOST_ASIO_DECL any_io_executor(nullptr_t) BOOST_ASIO_NOEXCEPT; + BOOST_ASIO_DECL any_io_executor(nullptr_t) noexcept; /// Copy constructor. - BOOST_ASIO_DECL any_io_executor(const any_io_executor& e) BOOST_ASIO_NOEXCEPT; + BOOST_ASIO_DECL any_io_executor(const any_io_executor& e) noexcept; -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Move constructor. - BOOST_ASIO_DECL any_io_executor(any_io_executor&& e) BOOST_ASIO_NOEXCEPT; -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + BOOST_ASIO_DECL any_io_executor(any_io_executor&& e) noexcept; /// Construct to point to the same target as another any_executor. #if defined(GENERATING_DOCUMENTATION) @@ -108,8 +106,8 @@ class any_io_executor : #else // defined(GENERATING_DOCUMENTATION) template any_io_executor(OtherAnyExecutor e, - typename constraint< - conditional< + constraint_t< + conditional_t< !is_same::value && is_base_of::value, @@ -117,9 +115,9 @@ class any_io_executor : 0, supportable_properties_type>::template is_valid_target, false_type - >::type::value - >::type = 0) - : base_type(BOOST_ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + >::value + > = 0) + : base_type(static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) @@ -132,8 +130,8 @@ class any_io_executor : #else // defined(GENERATING_DOCUMENTATION) template any_io_executor(std::nothrow_t, OtherAnyExecutor e, - typename constraint< - conditional< + constraint_t< + conditional_t< !is_same::value && is_base_of::value, @@ -141,22 +139,19 @@ class any_io_executor : 0, supportable_properties_type>::template is_valid_target, false_type - >::type::value - >::type = 0) BOOST_ASIO_NOEXCEPT - : base_type(std::nothrow, BOOST_ASIO_MOVE_CAST(OtherAnyExecutor)(e)) + >::value + > = 0) noexcept + : base_type(std::nothrow, static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) /// Construct to point to the same target as another any_executor. BOOST_ASIO_DECL any_io_executor(std::nothrow_t, - const any_io_executor& e) BOOST_ASIO_NOEXCEPT; + const any_io_executor& e) noexcept; -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Construct to point to the same target as another any_executor. - BOOST_ASIO_DECL any_io_executor(std::nothrow_t, - any_io_executor&& e) BOOST_ASIO_NOEXCEPT; -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + BOOST_ASIO_DECL any_io_executor(std::nothrow_t, any_io_executor&& e) noexcept; /// Construct a polymorphic wrapper for the specified executor. #if defined(GENERATING_DOCUMENTATION) @@ -165,17 +160,17 @@ class any_io_executor : #else // defined(GENERATING_DOCUMENTATION) template any_io_executor(Executor e, - typename constraint< - conditional< + constraint_t< + conditional_t< !is_same::value && !is_base_of::value, execution::detail::is_valid_target_executor< Executor, supportable_properties_type>, false_type - >::type::value - >::type = 0) - : base_type(BOOST_ASIO_MOVE_CAST(Executor)(e)) + >::value + > = 0) + : base_type(static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) @@ -187,30 +182,27 @@ class any_io_executor : #else // defined(GENERATING_DOCUMENTATION) template any_io_executor(std::nothrow_t, Executor e, - typename constraint< - conditional< + constraint_t< + conditional_t< !is_same::value && !is_base_of::value, execution::detail::is_valid_target_executor< Executor, supportable_properties_type>, false_type - >::type::value - >::type = 0) BOOST_ASIO_NOEXCEPT - : base_type(std::nothrow, BOOST_ASIO_MOVE_CAST(Executor)(e)) + >::value + > = 0) noexcept + : base_type(std::nothrow, static_cast(e)) { } #endif // defined(GENERATING_DOCUMENTATION) /// Assignment operator. BOOST_ASIO_DECL any_io_executor& operator=( - const any_io_executor& e) BOOST_ASIO_NOEXCEPT; + const any_io_executor& e) noexcept; -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Move assignment operator. - BOOST_ASIO_DECL any_io_executor& operator=( - any_io_executor&& e) BOOST_ASIO_NOEXCEPT; -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + BOOST_ASIO_DECL any_io_executor& operator=(any_io_executor&& e) noexcept; /// Assignment operator that sets the polymorphic wrapper to the empty state. BOOST_ASIO_DECL any_io_executor& operator=(nullptr_t); @@ -219,7 +211,7 @@ class any_io_executor : BOOST_ASIO_DECL ~any_io_executor(); /// Swap targets with another polymorphic wrapper. - BOOST_ASIO_DECL void swap(any_io_executor& other) BOOST_ASIO_NOEXCEPT; + BOOST_ASIO_DECL void swap(any_io_executor& other) noexcept; /// Obtain a polymorphic wrapper with the specified property. /** @@ -232,9 +224,9 @@ class any_io_executor : */ template any_io_executor require(const Property& p, - typename constraint< + constraint_t< traits::require_member::is_valid - >::type = 0) const + > = 0) const { return static_cast(*this).require(p); } @@ -250,9 +242,9 @@ class any_io_executor : */ template any_io_executor prefer(const Property& p, - typename constraint< + constraint_t< traits::prefer_member::is_valid - >::type = 0) const + > = 0) const { return static_cast(*this).prefer(p); } diff --git a/inst/include/boost/asio/append.hpp b/inst/include/boost/asio/append.hpp index 0963236f6..fc3d86249 100644 --- a/inst/include/boost/asio/append.hpp +++ b/inst/include/boost/asio/append.hpp @@ -2,7 +2,7 @@ // append.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,11 +16,6 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include - -#if (defined(BOOST_ASIO_HAS_STD_TUPLE) \ - && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)) \ - || defined(GENERATING_DOCUMENTATION) - #include #include @@ -38,11 +33,9 @@ class append_t public: /// Constructor. template - BOOST_ASIO_CONSTEXPR explicit append_t( - BOOST_ASIO_MOVE_ARG(T) completion_token, - BOOST_ASIO_MOVE_ARG(V)... values) - : token_(BOOST_ASIO_MOVE_CAST(T)(completion_token)), - values_(BOOST_ASIO_MOVE_CAST(V)(values)...) + constexpr explicit append_t(T&& completion_token, V&&... values) + : token_(static_cast(completion_token)), + values_(static_cast(values)...) { } @@ -55,15 +48,13 @@ class append_t /// arguments should be passed additional values after the results of the /// operation. template -BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONSTEXPR append_t< - typename decay::type, typename decay::type...> -append(BOOST_ASIO_MOVE_ARG(CompletionToken) completion_token, - BOOST_ASIO_MOVE_ARG(Values)... values) +BOOST_ASIO_NODISCARD inline constexpr +append_t, decay_t...> +append(CompletionToken&& completion_token, Values&&... values) { - return append_t< - typename decay::type, typename decay::type...>( - BOOST_ASIO_MOVE_CAST(CompletionToken)(completion_token), - BOOST_ASIO_MOVE_CAST(Values)(values)...); + return append_t, decay_t...>( + static_cast(completion_token), + static_cast(values)...); } } // namespace asio @@ -73,8 +64,4 @@ append(BOOST_ASIO_MOVE_ARG(CompletionToken) completion_token, #include -#endif // (defined(BOOST_ASIO_HAS_STD_TUPLE) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)) - // || defined(GENERATING_DOCUMENTATION) - #endif // BOOST_ASIO_APPEND_HPP diff --git a/inst/include/boost/asio/as_tuple.hpp b/inst/include/boost/asio/as_tuple.hpp index 613fe1add..0f89b4600 100644 --- a/inst/include/boost/asio/as_tuple.hpp +++ b/inst/include/boost/asio/as_tuple.hpp @@ -2,7 +2,7 @@ // as_tuple.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,11 +16,6 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include - -#if (defined(BOOST_ASIO_HAS_STD_TUPLE) \ - && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)) \ - || defined(GENERATING_DOCUMENTATION) - #include #include @@ -51,18 +46,18 @@ class as_tuple_t * token is itself defaulted as an argument to allow it to capture a source * location. */ - BOOST_ASIO_CONSTEXPR as_tuple_t( + constexpr as_tuple_t( default_constructor_tag = default_constructor_tag(), CompletionToken token = CompletionToken()) - : token_(BOOST_ASIO_MOVE_CAST(CompletionToken)(token)) + : token_(static_cast(token)) { } /// Constructor. template - BOOST_ASIO_CONSTEXPR explicit as_tuple_t( - BOOST_ASIO_MOVE_ARG(T) completion_token) - : token_(BOOST_ASIO_MOVE_CAST(T)(completion_token)) + constexpr explicit as_tuple_t( + T&& completion_token) + : token_(static_cast(completion_token)) { } @@ -77,13 +72,13 @@ class as_tuple_t /// Construct the adapted executor from the inner executor type. template executor_with_default(const InnerExecutor1& ex, - typename constraint< - conditional< + constraint_t< + conditional_t< !is_same::value, is_convertible, false_type - >::type::value - >::type = 0) BOOST_ASIO_NOEXCEPT + >::value + > = 0) noexcept : InnerExecutor(ex) { } @@ -91,25 +86,21 @@ class as_tuple_t /// Type alias to adapt an I/O object to use @c as_tuple_t as its /// default completion token type. -#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) \ - || defined(GENERATING_DOCUMENTATION) template using as_default_on_t = typename T::template rebind_executor< - executor_with_default >::other; -#endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) + executor_with_default>::other; /// Function helper to adapt an I/O object to use @c as_tuple_t as its /// default completion token type. template - static typename decay::type::template rebind_executor< - executor_with_default::type::executor_type> + static typename decay_t::template rebind_executor< + executor_with_default::executor_type> >::other - as_default_on(BOOST_ASIO_MOVE_ARG(T) object) + as_default_on(T&& object) { - return typename decay::type::template rebind_executor< - executor_with_default::type::executor_type> - >::other(BOOST_ASIO_MOVE_CAST(T)(object)); + return typename decay_t::template rebind_executor< + executor_with_default::executor_type> + >::other(static_cast(object)); } //private: @@ -120,11 +111,11 @@ class as_tuple_t /// arguments should be combined into a single tuple argument. template BOOST_ASIO_NODISCARD inline -BOOST_ASIO_CONSTEXPR as_tuple_t::type> -as_tuple(BOOST_ASIO_MOVE_ARG(CompletionToken) completion_token) +constexpr as_tuple_t> +as_tuple(CompletionToken&& completion_token) { - return as_tuple_t::type>( - BOOST_ASIO_MOVE_CAST(CompletionToken)(completion_token)); + return as_tuple_t>( + static_cast(completion_token)); } } // namespace asio @@ -134,8 +125,4 @@ as_tuple(BOOST_ASIO_MOVE_ARG(CompletionToken) completion_token) #include -#endif // (defined(BOOST_ASIO_HAS_STD_TUPLE) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)) - // || defined(GENERATING_DOCUMENTATION) - #endif // BOOST_ASIO_AS_TUPLE_HPP diff --git a/inst/include/boost/asio/associated_allocator.hpp b/inst/include/boost/asio/associated_allocator.hpp index ed085703e..38825fa31 100644 --- a/inst/include/boost/asio/associated_allocator.hpp +++ b/inst/include/boost/asio/associated_allocator.hpp @@ -2,7 +2,7 @@ // associated_allocator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -37,9 +37,7 @@ struct has_allocator_type : false_type }; template -struct has_allocator_type::type> - : true_type +struct has_allocator_type> : true_type { }; @@ -50,33 +48,30 @@ struct associated_allocator_impl typedef A type; - static type get(const T&) BOOST_ASIO_NOEXCEPT + static type get(const T&) noexcept { return type(); } - static const type& get(const T&, const A& a) BOOST_ASIO_NOEXCEPT + static const type& get(const T&, const A& a) noexcept { return a; } }; template -struct associated_allocator_impl::type> +struct associated_allocator_impl> { typedef typename T::allocator_type type; - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - const T& t) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator())) + static auto get(const T& t) noexcept + -> decltype(t.get_allocator()) { return t.get_allocator(); } - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - const T& t, const A&) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_allocator())) + static auto get(const T& t, const A&) noexcept + -> decltype(t.get_allocator()) { return t.get_allocator(); } @@ -84,12 +79,12 @@ struct associated_allocator_impl struct associated_allocator_impl::value - >::type, - typename void_type< + >, + void_t< typename associator::type - >::type> : associator + >> : associator { }; @@ -116,7 +111,7 @@ struct associated_allocator_impl > +template > struct associated_allocator #if !defined(GENERATING_DOCUMENTATION) : detail::associated_allocator_impl @@ -129,11 +124,11 @@ struct associated_allocator /// If @c T has a nested type @c allocator_type, returns /// t.get_allocator(). Otherwise returns @c type(). - static decltype(auto) get(const T& t) BOOST_ASIO_NOEXCEPT; + static decltype(auto) get(const T& t) noexcept; /// If @c T has a nested type @c allocator_type, returns /// t.get_allocator(). Otherwise returns @c a. - static decltype(auto) get(const T& t, const Allocator& a) BOOST_ASIO_NOEXCEPT; + static decltype(auto) get(const T& t, const Allocator& a) noexcept; #endif // defined(GENERATING_DOCUMENTATION) }; @@ -143,7 +138,7 @@ struct associated_allocator */ template BOOST_ASIO_NODISCARD inline typename associated_allocator::type -get_associated_allocator(const T& t) BOOST_ASIO_NOEXCEPT +get_associated_allocator(const T& t) noexcept { return associated_allocator::get(t); } @@ -153,23 +148,17 @@ get_associated_allocator(const T& t) BOOST_ASIO_NOEXCEPT * @returns associated_allocator::get(t, a) */ template -BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2( - typename associated_allocator::type) -get_associated_allocator(const T& t, const Allocator& a) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX(( - associated_allocator::get(t, a))) +BOOST_ASIO_NODISCARD inline auto get_associated_allocator( + const T& t, const Allocator& a) noexcept + -> decltype(associated_allocator::get(t, a)) { return associated_allocator::get(t, a); } -#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) - -template > +template > using associated_allocator_t = typename associated_allocator::type; -#endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) - namespace detail { template @@ -179,22 +168,19 @@ struct associated_allocator_forwarding_base template struct associated_allocator_forwarding_base::asio_associated_allocator_is_unspecialised, void >::value - >::type> + >> { typedef void asio_associated_allocator_is_unspecialised; }; } // namespace detail -#if defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) \ - || defined(GENERATING_DOCUMENTATION) - /// Specialisation of associated_allocator for @c std::reference_wrapper. template struct associated_allocator, Allocator> @@ -208,25 +194,20 @@ struct associated_allocator, Allocator> /// Forwards the request to get the allocator to the associator specialisation /// for the unwrapped type @c T. - static type get(reference_wrapper t) BOOST_ASIO_NOEXCEPT + static type get(reference_wrapper t) noexcept { return associated_allocator::get(t.get()); } /// Forwards the request to get the allocator to the associator specialisation /// for the unwrapped type @c T. - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - reference_wrapper t, const Allocator& a) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX(( - associated_allocator::get(t.get(), a))) + static auto get(reference_wrapper t, const Allocator& a) noexcept + -> decltype(associated_allocator::get(t.get(), a)) { return associated_allocator::get(t.get(), a); } }; -#endif // defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) - // || defined(GENERATING_DOCUMENTATION) - } // namespace asio } // namespace boost diff --git a/inst/include/boost/asio/associated_cancellation_slot.hpp b/inst/include/boost/asio/associated_cancellation_slot.hpp index 3ee637ff2..e44bff9f4 100644 --- a/inst/include/boost/asio/associated_cancellation_slot.hpp +++ b/inst/include/boost/asio/associated_cancellation_slot.hpp @@ -2,7 +2,7 @@ // associated_cancellation_slot.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -37,9 +37,8 @@ struct has_cancellation_slot_type : false_type }; template -struct has_cancellation_slot_type::type> - : true_type +struct has_cancellation_slot_type> + : true_type { }; @@ -50,12 +49,12 @@ struct associated_cancellation_slot_impl typedef S type; - static type get(const T&) BOOST_ASIO_NOEXCEPT + static type get(const T&) noexcept { return type(); } - static const type& get(const T&, const S& s) BOOST_ASIO_NOEXCEPT + static const type& get(const T&, const S& s) noexcept { return s; } @@ -63,20 +62,18 @@ struct associated_cancellation_slot_impl template struct associated_cancellation_slot_impl::type> + void_t> { typedef typename T::cancellation_slot_type type; - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - const T& t) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot())) + static auto get(const T& t) noexcept + -> decltype(t.get_cancellation_slot()) { return t.get_cancellation_slot(); } - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - const T& t, const S&) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_cancellation_slot())) + static auto get(const T& t, const S&) noexcept + -> decltype(t.get_cancellation_slot()) { return t.get_cancellation_slot(); } @@ -84,12 +81,12 @@ struct associated_cancellation_slot_impl struct associated_cancellation_slot_impl::value - >::type, - typename void_type< + >, + void_t< typename associator::type - >::type> : associator + >> : associator { }; @@ -130,12 +127,12 @@ struct associated_cancellation_slot /// If @c T has a nested type @c cancellation_slot_type, returns /// t.get_cancellation_slot(). Otherwise returns @c type(). - static decltype(auto) get(const T& t) BOOST_ASIO_NOEXCEPT; + static decltype(auto) get(const T& t) noexcept; /// If @c T has a nested type @c cancellation_slot_type, returns /// t.get_cancellation_slot(). Otherwise returns @c s. static decltype(auto) get(const T& t, - const CancellationSlot& s) BOOST_ASIO_NOEXCEPT; + const CancellationSlot& s) noexcept; #endif // defined(GENERATING_DOCUMENTATION) }; @@ -145,7 +142,7 @@ struct associated_cancellation_slot */ template BOOST_ASIO_NODISCARD inline typename associated_cancellation_slot::type -get_associated_cancellation_slot(const T& t) BOOST_ASIO_NOEXCEPT +get_associated_cancellation_slot(const T& t) noexcept { return associated_cancellation_slot::get(t); } @@ -156,24 +153,17 @@ get_associated_cancellation_slot(const T& t) BOOST_ASIO_NOEXCEPT * CancellationSlot>::get(t, st) */ template -BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2( - typename associated_cancellation_slot::type) -get_associated_cancellation_slot(const T& t, - const CancellationSlot& st) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX(( - associated_cancellation_slot::get(t, st))) +BOOST_ASIO_NODISCARD inline auto get_associated_cancellation_slot( + const T& t, const CancellationSlot& st) noexcept + -> decltype(associated_cancellation_slot::get(t, st)) { return associated_cancellation_slot::get(t, st); } -#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) - template using associated_cancellation_slot_t = typename associated_cancellation_slot::type; -#endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) - namespace detail { template @@ -183,22 +173,19 @@ struct associated_cancellation_slot_forwarding_base template struct associated_cancellation_slot_forwarding_base::asio_associated_cancellation_slot_is_unspecialised, void >::value - >::type> + >> { typedef void asio_associated_cancellation_slot_is_unspecialised; }; } // namespace detail -#if defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) \ - || defined(GENERATING_DOCUMENTATION) - /// Specialisation of associated_cancellation_slot for @c /// std::reference_wrapper. template @@ -213,25 +200,21 @@ struct associated_cancellation_slot, CancellationSlot> /// Forwards the request to get the cancellation slot to the associator /// specialisation for the unwrapped type @c T. - static type get(reference_wrapper t) BOOST_ASIO_NOEXCEPT + static type get(reference_wrapper t) noexcept { return associated_cancellation_slot::get(t.get()); } /// Forwards the request to get the cancellation slot to the associator /// specialisation for the unwrapped type @c T. - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get(reference_wrapper t, - const CancellationSlot& s = CancellationSlot()) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX(( - associated_cancellation_slot::get(t.get(), s))) + static auto get(reference_wrapper t, const CancellationSlot& s) noexcept + -> decltype( + associated_cancellation_slot::get(t.get(), s)) { return associated_cancellation_slot::get(t.get(), s); } }; -#endif // defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) - // || defined(GENERATING_DOCUMENTATION) - } // namespace asio } // namespace boost diff --git a/inst/include/boost/asio/associated_executor.hpp b/inst/include/boost/asio/associated_executor.hpp index a110182cb..a8d4776a0 100644 --- a/inst/include/boost/asio/associated_executor.hpp +++ b/inst/include/boost/asio/associated_executor.hpp @@ -2,7 +2,7 @@ // associated_executor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -39,8 +39,7 @@ struct has_executor_type : false_type }; template -struct has_executor_type::type> +struct has_executor_type> : true_type { }; @@ -52,33 +51,30 @@ struct associated_executor_impl typedef E type; - static type get(const T&) BOOST_ASIO_NOEXCEPT + static type get(const T&) noexcept { return type(); } - static const type& get(const T&, const E& e) BOOST_ASIO_NOEXCEPT + static const type& get(const T&, const E& e) noexcept { return e; } }; template -struct associated_executor_impl::type> +struct associated_executor_impl> { typedef typename T::executor_type type; - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - const T& t) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_executor())) + static auto get(const T& t) noexcept + -> decltype(t.get_executor()) { return t.get_executor(); } - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - const T& t, const E&) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((t.get_executor())) + static auto get(const T& t, const E&) noexcept + -> decltype(t.get_executor()) { return t.get_executor(); } @@ -86,12 +82,12 @@ struct associated_executor_impl struct associated_executor_impl::value - >::type, - typename void_type< + >, + void_t< typename associator::type - >::type> : associator + >> : associator { }; @@ -131,11 +127,11 @@ struct associated_executor /// If @c T has a nested type @c executor_type, returns /// t.get_executor(). Otherwise returns @c type(). - static decltype(auto) get(const T& t) BOOST_ASIO_NOEXCEPT; + static decltype(auto) get(const T& t) noexcept; /// If @c T has a nested type @c executor_type, returns /// t.get_executor(). Otherwise returns @c ex. - static decltype(auto) get(const T& t, const Executor& ex) BOOST_ASIO_NOEXCEPT; + static decltype(auto) get(const T& t, const Executor& ex) noexcept; #endif // defined(GENERATING_DOCUMENTATION) }; @@ -145,7 +141,7 @@ struct associated_executor */ template BOOST_ASIO_NODISCARD inline typename associated_executor::type -get_associated_executor(const T& t) BOOST_ASIO_NOEXCEPT +get_associated_executor(const T& t) noexcept { return associated_executor::get(t); } @@ -155,14 +151,12 @@ get_associated_executor(const T& t) BOOST_ASIO_NOEXCEPT * @returns associated_executor::get(t, ex) */ template -BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2( - typename associated_executor::type) -get_associated_executor(const T& t, const Executor& ex, - typename constraint< +BOOST_ASIO_NODISCARD inline auto get_associated_executor( + const T& t, const Executor& ex, + constraint_t< is_executor::value || execution::is_executor::value - >::type = 0) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX(( - associated_executor::get(t, ex))) + > = 0) noexcept + -> decltype(associated_executor::get(t, ex)) { return associated_executor::get(t, ex); } @@ -173,27 +167,19 @@ get_associated_executor(const T& t, const Executor& ex, * ExecutionContext::executor_type>::get(t, ctx.get_executor()) */ template -BOOST_ASIO_NODISCARD inline BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2( - typename associated_executor::type) +BOOST_ASIO_NODISCARD inline typename associated_executor::type get_associated_executor(const T& t, ExecutionContext& ctx, - typename constraint::value>::type = 0) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX(( - associated_executor::get(t, ctx.get_executor()))) + constraint_t::value> = 0) noexcept { return associated_executor::get(t, ctx.get_executor()); } -#if defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) - template using associated_executor_t = typename associated_executor::type; -#endif // defined(BOOST_ASIO_HAS_ALIAS_TEMPLATES) - namespace detail { template @@ -203,22 +189,19 @@ struct associated_executor_forwarding_base template struct associated_executor_forwarding_base::asio_associated_executor_is_unspecialised, void >::value - >::type> + >> { typedef void asio_associated_executor_is_unspecialised; }; } // namespace detail -#if defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) \ - || defined(GENERATING_DOCUMENTATION) - /// Specialisation of associated_executor for @c std::reference_wrapper. template struct associated_executor, Executor> @@ -232,25 +215,20 @@ struct associated_executor, Executor> /// Forwards the request to get the executor to the associator specialisation /// for the unwrapped type @c T. - static type get(reference_wrapper t) BOOST_ASIO_NOEXCEPT + static type get(reference_wrapper t) noexcept { return associated_executor::get(t.get()); } /// Forwards the request to get the executor to the associator specialisation /// for the unwrapped type @c T. - static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX(type) get( - reference_wrapper t, const Executor& ex) BOOST_ASIO_NOEXCEPT - BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX(( - associated_executor::get(t.get(), ex))) + static auto get(reference_wrapper t, const Executor& ex) noexcept + -> decltype(associated_executor::get(t.get(), ex)) { return associated_executor::get(t.get(), ex); } }; -#endif // defined(BOOST_ASIO_HAS_STD_REFERENCE_WRAPPER) - // || defined(GENERATING_DOCUMENTATION) - } // namespace asio } // namespace boost diff --git a/inst/include/boost/asio/associated_immediate_executor.hpp b/inst/include/boost/asio/associated_immediate_executor.hpp new file mode 100644 index 000000000..ff0b8b882 --- /dev/null +++ b/inst/include/boost/asio/associated_immediate_executor.hpp @@ -0,0 +1,282 @@ +// +// associated_immediate_executor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP +#define BOOST_ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { + +template +struct associated_immediate_executor; + +namespace detail { + +template +struct has_immediate_executor_type : false_type +{ +}; + +template +struct has_immediate_executor_type> + : true_type +{ +}; + +template +struct default_immediate_executor +{ + typedef require_result_t type; + + static type get(const E& e) noexcept + { + return boost::asio::require(e, execution::blocking.never); + } +}; + +template +struct default_immediate_executor::value + >, + enable_if_t< + is_executor::value + >> +{ + class type : public E + { + public: + template + explicit type(const Executor1& e, + constraint_t< + conditional_t< + !is_same::value, + is_convertible, + false_type + >::value + > = 0) noexcept + : E(e) + { + } + + type(const type& other) noexcept + : E(static_cast(other)) + { + } + + type(type&& other) noexcept + : E(static_cast(other)) + { + } + + template + void dispatch(Function&& f, const Allocator& a) const + { + this->post(static_cast(f), a); + } + + friend bool operator==(const type& a, const type& b) noexcept + { + return static_cast(a) == static_cast(b); + } + + friend bool operator!=(const type& a, const type& b) noexcept + { + return static_cast(a) != static_cast(b); + } + }; + + static type get(const E& e) noexcept + { + return type(e); + } +}; + +template +struct associated_immediate_executor_impl +{ + typedef void asio_associated_immediate_executor_is_unspecialised; + + typedef typename default_immediate_executor::type type; + + static auto get(const T&, const E& e) noexcept + -> decltype(default_immediate_executor::get(e)) + { + return default_immediate_executor::get(e); + } +}; + +template +struct associated_immediate_executor_impl> +{ + typedef typename T::immediate_executor_type type; + + static auto get(const T& t, const E&) noexcept + -> decltype(t.get_immediate_executor()) + { + return t.get_immediate_executor(); + } +}; + +template +struct associated_immediate_executor_impl::value + >, + void_t< + typename associator::type + >> : associator +{ +}; + +} // namespace detail + +/// Traits type used to obtain the immediate executor associated with an object. +/** + * A program may specialise this traits type if the @c T template parameter in + * the specialisation is a user-defined type. The template parameter @c + * Executor shall be a type meeting the Executor requirements. + * + * Specialisations shall meet the following requirements, where @c t is a const + * reference to an object of type @c T, and @c e is an object of type @c + * Executor. + * + * @li Provide a nested typedef @c type that identifies a type meeting the + * Executor requirements. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t) and with return type @c type or a (possibly const) reference to @c + * type. + * + * @li Provide a noexcept static member function named @c get, callable as @c + * get(t,e) and with return type @c type or a (possibly const) reference to @c + * type. + */ +template +struct associated_immediate_executor +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_immediate_executor_impl +#endif // !defined(GENERATING_DOCUMENTATION) +{ +#if defined(GENERATING_DOCUMENTATION) + /// If @c T has a nested type @c immediate_executor_type, + // T::immediate_executor_type. Otherwise @c Executor. + typedef see_below type; + + /// If @c T has a nested type @c immediate_executor_type, returns + /// t.get_immediate_executor(). Otherwise returns + /// boost::asio::require(ex, boost::asio::execution::blocking.never). + static decltype(auto) get(const T& t, const Executor& ex) noexcept; +#endif // defined(GENERATING_DOCUMENTATION) +}; + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_immediate_executor::get(t, ex) + */ +template +BOOST_ASIO_NODISCARD inline auto get_associated_immediate_executor( + const T& t, const Executor& ex, + constraint_t< + is_executor::value || execution::is_executor::value + > = 0) noexcept + -> decltype(associated_immediate_executor::get(t, ex)) +{ + return associated_immediate_executor::get(t, ex); +} + +/// Helper function to obtain an object's associated executor. +/** + * @returns associated_immediate_executor::get(t, ctx.get_executor()) + */ +template +BOOST_ASIO_NODISCARD inline typename associated_immediate_executor::type +get_associated_immediate_executor(const T& t, ExecutionContext& ctx, + constraint_t< + is_convertible::value + > = 0) noexcept +{ + return associated_immediate_executor::get(t, ctx.get_executor()); +} + +template +using associated_immediate_executor_t = + typename associated_immediate_executor::type; + +namespace detail { + +template +struct associated_immediate_executor_forwarding_base +{ +}; + +template +struct associated_immediate_executor_forwarding_base::asio_associated_immediate_executor_is_unspecialised, + void + >::value + >> +{ + typedef void asio_associated_immediate_executor_is_unspecialised; +}; + +} // namespace detail + +/// Specialisation of associated_immediate_executor for +/// @c std::reference_wrapper. +template +struct associated_immediate_executor, Executor> +#if !defined(GENERATING_DOCUMENTATION) + : detail::associated_immediate_executor_forwarding_base +#endif // !defined(GENERATING_DOCUMENTATION) +{ + /// Forwards @c type to the associator specialisation for the unwrapped type + /// @c T. + typedef typename associated_immediate_executor::type type; + + /// Forwards the request to get the executor to the associator specialisation + /// for the unwrapped type @c T. + static auto get(reference_wrapper t, const Executor& ex) noexcept + -> decltype(associated_immediate_executor::get(t.get(), ex)) + { + return associated_immediate_executor::get(t.get(), ex); + } +}; + +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_ASSOCIATED_IMMEDIATE_EXECUTOR_HPP diff --git a/inst/include/boost/asio/associator.hpp b/inst/include/boost/asio/associator.hpp index bc775b010..b0b5b44c0 100644 --- a/inst/include/boost/asio/associator.hpp +++ b/inst/include/boost/asio/associator.hpp @@ -2,7 +2,7 @@ // associator.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/inst/include/boost/asio/async_result.hpp b/inst/include/boost/asio/async_result.hpp index c25a2fae9..a45259518 100644 --- a/inst/include/boost/asio/async_result.hpp +++ b/inst/include/boost/asio/async_result.hpp @@ -2,7 +2,7 @@ // async_result.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,16 +17,13 @@ #include #include -#include #include namespace boost { namespace asio { -#if defined(BOOST_ASIO_HAS_CONCEPTS) \ - && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) \ - && defined(BOOST_ASIO_HAS_DECLTYPE) +#if defined(BOOST_ASIO_HAS_CONCEPTS) namespace detail { @@ -40,8 +37,6 @@ struct is_completion_signature : true_type { }; -#if defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - template struct is_completion_signature : true_type { @@ -70,7 +65,6 @@ struct is_completion_signature : true_type }; # endif // defined(BOOST_ASIO_HAS_NOEXCEPT_FUNCTION_TYPE) -#endif // defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) template struct are_completion_signatures : false_type @@ -108,8 +102,6 @@ struct is_completion_handler_for { }; -#if defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - template struct is_completion_handler_for : integral_constant)> @@ -143,7 +135,6 @@ struct is_completion_handler_for }; # endif // defined(BOOST_ASIO_HAS_NOEXCEPT_FUNCTION_TYPE) -#endif // defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) template struct is_completion_handler_for @@ -175,8 +166,6 @@ BOOST_ASIO_CONCEPT completion_handler_for = ::boost::asio::completion_handler_for #else // defined(BOOST_ASIO_HAS_CONCEPTS) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(BOOST_ASIO_HAS_DECLTYPE) #define BOOST_ASIO_COMPLETION_SIGNATURE typename #define BOOST_ASIO_COMPLETION_HANDLER_FOR(sig) typename @@ -184,8 +173,6 @@ BOOST_ASIO_CONCEPT completion_handler_for = #define BOOST_ASIO_COMPLETION_HANDLER_FOR3(sig0, sig1, sig2) typename #endif // defined(BOOST_ASIO_HAS_CONCEPTS) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(BOOST_ASIO_HAS_DECLTYPE) namespace detail { @@ -197,8 +184,6 @@ struct is_simple_completion_signature : false_type template struct simple_completion_signature; -#if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - template struct is_simple_completion_signature : true_type { @@ -229,8 +214,6 @@ struct simple_completion_signature typedef R type(Args...); }; -#if defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - template struct simple_completion_signature { @@ -264,197 +247,9 @@ struct simple_completion_signature }; # endif // defined(BOOST_ASIO_HAS_NOEXCEPT_FUNCTION_TYPE) -#endif // defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - -#else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct is_simple_completion_signature : true_type -{ -}; - -#define BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF(n) \ - template \ - struct is_simple_completion_signature \ - : true_type \ - { \ - }; \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF) -#undef BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF - -template -struct are_simple_completion_signatures : false_type -{ -}; - -template -struct are_simple_completion_signatures - : is_simple_completion_signature -{ -}; - -template -struct are_simple_completion_signatures - : integral_constant::value - && is_simple_completion_signature::value)> -{ -}; - -template -struct are_simple_completion_signatures - : integral_constant::value - && is_simple_completion_signature::value - && is_simple_completion_signature::value)> -{ -}; - -template <> -struct simple_completion_signature -{ - typedef void type; -}; - -template -struct simple_completion_signature -{ - typedef R type(); -}; - -#define BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF(n) \ - template \ - struct simple_completion_signature \ - { \ - typedef R type(BOOST_ASIO_VARIADIC_TARGS(n)); \ - }; \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF) -#undef BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF - -#if defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - -template -struct simple_completion_signature -{ - typedef R type(); -}; - -template -struct simple_completion_signature -{ - typedef R type(); -}; - -#define BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF(n) \ - template \ - struct simple_completion_signature< \ - R(BOOST_ASIO_VARIADIC_TARGS(n)) &> \ - { \ - typedef R type(BOOST_ASIO_VARIADIC_TARGS(n)); \ - }; \ - \ - template \ - struct simple_completion_signature< \ - R(BOOST_ASIO_VARIADIC_TARGS(n)) &&> \ - { \ - typedef R type(BOOST_ASIO_VARIADIC_TARGS(n)); \ - }; \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF) -#undef BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF - -# if defined(BOOST_ASIO_HAS_NOEXCEPT_FUNCTION_TYPE) - -template -struct simple_completion_signature -{ - typedef R type(); -}; - -template -struct simple_completion_signature -{ - typedef R type(); -}; - -template -struct simple_completion_signature -{ - typedef R type(); -}; - -#define BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF(n) \ - template \ - struct simple_completion_signature< \ - R(BOOST_ASIO_VARIADIC_TARGS(n)) noexcept> \ - { \ - typedef R type(BOOST_ASIO_VARIADIC_TARGS(n)); \ - }; \ - \ - template \ - struct simple_completion_signature< \ - R(BOOST_ASIO_VARIADIC_TARGS(n)) & noexcept> \ - { \ - typedef R type(BOOST_ASIO_VARIADIC_TARGS(n)); \ - }; \ - \ - template \ - struct simple_completion_signature< \ - R(BOOST_ASIO_VARIADIC_TARGS(n)) && noexcept> \ - { \ - typedef R type(BOOST_ASIO_VARIADIC_TARGS(n)); \ - }; \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF) -#undef BOOST_ASIO_PRIVATE_SIMPLE_SIG_DEF - -# endif // defined(BOOST_ASIO_HAS_NOEXCEPT_FUNCTION_TYPE) -#endif // defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - -#endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - -#if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) \ - || defined(GENERATING_DOCUMENTATION) - -# define BOOST_ASIO_COMPLETION_SIGNATURES_TPARAMS \ - BOOST_ASIO_COMPLETION_SIGNATURE... Signatures - -# define BOOST_ASIO_COMPLETION_SIGNATURES_TSPECPARAMS \ - BOOST_ASIO_COMPLETION_SIGNATURE... Signatures - -# define BOOST_ASIO_COMPLETION_SIGNATURES_TARGS Signatures... - -# define BOOST_ASIO_COMPLETION_SIGNATURES_TSIMPLEARGS \ - typename boost::asio::detail::simple_completion_signature< \ - Signatures>::type... - -#else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -# define BOOST_ASIO_COMPLETION_SIGNATURES_TPARAMS \ - typename Sig0 = void, \ - typename Sig1 = void, \ - typename Sig2 = void -# define BOOST_ASIO_COMPLETION_SIGNATURES_TSPECPARAMS \ - typename Sig0, \ - typename Sig1, \ - typename Sig2 - -# define BOOST_ASIO_COMPLETION_SIGNATURES_TARGS Sig0, Sig1, Sig2 - -# define BOOST_ASIO_COMPLETION_SIGNATURES_TSIMPLEARGS \ - typename ::boost::asio::detail::simple_completion_signature::type, \ - typename ::boost::asio::detail::simple_completion_signature::type, \ - typename ::boost::asio::detail::simple_completion_signature::type - -#endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - // || defined(GENERATING_DOCUMENTATION) - -template +template class completion_handler_async_result { public: @@ -469,56 +264,22 @@ class completion_handler_async_result { } -#if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - template - static return_type initiate( - BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_MOVE_ARG(RawCompletionToken) token, - BOOST_ASIO_MOVE_ARG(Args)... args) - { - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( - BOOST_ASIO_MOVE_CAST(RawCompletionToken)(token), - BOOST_ASIO_MOVE_CAST(Args)(args)...); - } - -#else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - - template - static return_type initiate( - BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_MOVE_ARG(RawCompletionToken) token) + static return_type initiate(Initiation&& initiation, + RawCompletionToken&& token, Args&&... args) { - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( - BOOST_ASIO_MOVE_CAST(RawCompletionToken)(token)); + static_cast(initiation)( + static_cast(token), + static_cast(args)...); } -#define BOOST_ASIO_PRIVATE_INITIATE_DEF(n) \ - template \ - static return_type initiate( \ - BOOST_ASIO_MOVE_ARG(Initiation) initiation, \ - BOOST_ASIO_MOVE_ARG(RawCompletionToken) token, \ - BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( \ - BOOST_ASIO_MOVE_CAST(RawCompletionToken)(token), \ - BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_INITIATE_DEF) -#undef BOOST_ASIO_PRIVATE_INITIATE_DEF - -#endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - private: completion_handler_async_result( - const completion_handler_async_result&) BOOST_ASIO_DELETED; + const completion_handler_async_result&) = delete; completion_handler_async_result& operator=( - const completion_handler_async_result&) BOOST_ASIO_DELETED; + const completion_handler_async_result&) = delete; }; } // namespace detail @@ -543,7 +304,8 @@ class completion_handler_async_result * The primary template assumes that the CompletionToken is the completion * handler. */ -template +template class async_result { public: @@ -568,70 +330,44 @@ class async_result /// obtain the value to be returned from the initiating function. template static return_type initiate( - BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_MOVE_ARG(RawCompletionToken) token, - BOOST_ASIO_MOVE_ARG(Args)... args); + Initiation&& initiation, + RawCompletionToken&& token, + Args&&... args); private: - async_result(const async_result&) BOOST_ASIO_DELETED; - async_result& operator=(const async_result&) BOOST_ASIO_DELETED; + async_result(const async_result&) = delete; + async_result& operator=(const async_result&) = delete; }; #else // defined(GENERATING_DOCUMENTATION) -#if defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - -template +template class async_result : - public conditional< - detail::are_simple_completion_signatures< - BOOST_ASIO_COMPLETION_SIGNATURES_TARGS>::value, - detail::completion_handler_async_result< - CompletionToken, BOOST_ASIO_COMPLETION_SIGNATURES_TARGS>, + public conditional_t< + detail::are_simple_completion_signatures::value, + detail::completion_handler_async_result, async_result - >::type + typename detail::simple_completion_signature::type...> + > { public: - typedef typename conditional< - detail::are_simple_completion_signatures< - BOOST_ASIO_COMPLETION_SIGNATURES_TARGS>::value, - detail::completion_handler_async_result< - CompletionToken, BOOST_ASIO_COMPLETION_SIGNATURES_TARGS>, + typedef conditional_t< + detail::are_simple_completion_signatures::value, + detail::completion_handler_async_result, async_result - >::type base_type; + typename detail::simple_completion_signature::type...> + > base_type; using base_type::base_type; private: - async_result(const async_result&) BOOST_ASIO_DELETED; - async_result& operator=(const async_result&) BOOST_ASIO_DELETED; + async_result(const async_result&) = delete; + async_result& operator=(const async_result&) = delete; }; -#else // defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - -template -class async_result : - public detail::completion_handler_async_result< - CompletionToken, BOOST_ASIO_COMPLETION_SIGNATURES_TARGS> -{ -public: - explicit async_result(CompletionToken& h) - : detail::completion_handler_async_result< - CompletionToken, BOOST_ASIO_COMPLETION_SIGNATURES_TARGS>(h) - { - } - -private: - async_result(const async_result&) BOOST_ASIO_DELETED; - async_result& operator=(const async_result&) BOOST_ASIO_DELETED; -}; - -#endif // defined(BOOST_ASIO_HAS_REF_QUALIFIED_FUNCTIONS) - -template -class async_result +template +class async_result { // Empty. }; @@ -641,65 +377,39 @@ class async_result /// Helper template to deduce the handler type from a CompletionToken, capture /// a local copy of the handler, and then create an async_result for the /// handler. -template +template struct async_completion { /// The real handler type to be used for the asynchronous operation. typedef typename boost::asio::async_result< - typename decay::type, - BOOST_ASIO_COMPLETION_SIGNATURES_TARGS>::completion_handler_type - completion_handler_type; + decay_t, Signatures...>::completion_handler_type + completion_handler_type; -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) /// Constructor. /** * The constructor creates the concrete completion handler and makes the link * between the handler and the asynchronous result. */ explicit async_completion(CompletionToken& token) - : completion_handler(static_cast::value, - completion_handler_type&, CompletionToken&&>::type>(token)), - result(completion_handler) - { - } -#else // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - explicit async_completion(typename decay::type& token) - : completion_handler(token), + completion_handler_type&, CompletionToken&&>>(token)), result(completion_handler) { } - explicit async_completion(const typename decay::type& token) - : completion_handler(token), - result(completion_handler) - { - } -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - /// A copy of, or reference to, a real handler object. -#if defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - typename conditional< + conditional_t< is_same::value, - completion_handler_type&, completion_handler_type>::type completion_handler; -#else // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) - completion_handler_type completion_handler; -#endif // defined(BOOST_ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) + completion_handler_type&, completion_handler_type> completion_handler; /// The result of the asynchronous operation's initiating function. - async_result::type, - BOOST_ASIO_COMPLETION_SIGNATURES_TARGS> result; + async_result, Signatures...> result; }; namespace detail { -template -struct async_result_helper - : async_result::type, - BOOST_ASIO_COMPLETION_SIGNATURES_TARGS> -{ -}; - struct async_result_memfns_base { void initiate(); @@ -725,11 +435,11 @@ char async_result_initiate_memfn_helper( void (async_result_memfns_base::*)(), &async_result_memfns_derived::initiate>*); -template +template struct async_result_has_initiate_memfn : integral_constant::type, - BOOST_ASIO_COMPLETION_SIGNATURES_TARGS> + async_result, Signatures...> >(0)) != 1> { }; @@ -743,25 +453,6 @@ struct async_result_has_initiate_memfn void_or_deduced # define BOOST_ASIO_INITFN_RESULT_TYPE3(ct, sig0, sig1, sig2) \ void_or_deduced -#elif defined(_MSC_VER) && (_MSC_VER < 1500) -# define BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) \ - typename ::boost::asio::detail::async_result_helper< \ - ct, sig>::return_type -# define BOOST_ASIO_INITFN_RESULT_TYPE2(ct, sig0, sig1) \ - typename ::boost::asio::detail::async_result_helper< \ - ct, sig0, sig1>::return_type -# define BOOST_ASIO_INITFN_RESULT_TYPE3(ct, sig0, sig1, sig2) \ - typename ::boost::asio::detail::async_result_helper< \ - ct, sig0, sig1, sig2>::return_type -#define BOOST_ASIO_HANDLER_TYPE(ct, sig) \ - typename ::boost::asio::detail::async_result_helper< \ - ct, sig>::completion_handler_type -#define BOOST_ASIO_HANDLER_TYPE2(ct, sig0, sig1) \ - typename ::boost::asio::detail::async_result_helper< \ - ct, sig0, sig1>::completion_handler_type -#define BOOST_ASIO_HANDLER_TYPE3(ct, sig0, sig1, sig2) \ - typename ::boost::asio::detail::async_result_helper< \ - ct, sig0, sig1, sig2>::completion_handler_type #else # define BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) \ typename ::boost::asio::async_result< \ @@ -824,7 +515,7 @@ struct async_result_has_initiate_memfn # define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX3(ct, sig0, sig1, sig2) \ auto # define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_SUFFIX(expr) -#elif defined(BOOST_ASIO_HAS_DECLTYPE) +#else # define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX(ct, sig) \ auto # define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX2(ct, sig0, sig1) \ @@ -832,14 +523,6 @@ struct async_result_has_initiate_memfn # define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX3(ct, sig0, sig1, sig2) \ auto # define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_SUFFIX(expr) -> decltype expr -#else -# define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX(ct, sig) \ - BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) -# define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX2(ct, sig0, sig1) \ - BOOST_ASIO_INITFN_RESULT_TYPE2(ct, sig0, sig1) -# define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX3(ct, sig0, sig1, sig2) \ - BOOST_ASIO_INITFN_RESULT_TYPE3(ct, sig0, sig1, sig2) -# define BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_SUFFIX(expr) #endif #if defined(GENERATING_DOCUMENTATION) @@ -849,20 +532,13 @@ struct async_result_has_initiate_memfn void_or_deduced # define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE3(ct, sig0, sig1, sig2, expr) \ void_or_deduced -#elif defined(BOOST_ASIO_HAS_DECLTYPE) +#else # define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(ct, sig, expr) \ decltype expr # define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE2(ct, sig0, sig1, expr) \ decltype expr # define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE3(ct, sig0, sig1, sig2, expr) \ decltype expr -#else -# define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(ct, sig, expr) \ - BOOST_ASIO_INITFN_RESULT_TYPE(ct, sig) -# define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE2(ct, sig0, sig1, expr) \ - BOOST_ASIO_INITFN_RESULT_TYPE2(ct, sig0, sig1) -# define BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE3(ct, sig0, sig1, sig2, expr) \ - BOOST_ASIO_INITFN_RESULT_TYPE3(ct, sig0, sig1, sig2) #endif #if defined(GENERATING_DOCUMENTATION) @@ -871,326 +547,57 @@ template void_or_deduced async_initiate( - BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken), - BOOST_ASIO_MOVE_ARG(Args)... args); + Initiation&& initiation, + type_identity_t& token, + Args&&... args); -#elif defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) +#else // defined(GENERATING_DOCUMENTATION) template -inline typename constraint< +inline auto async_initiate(Initiation&& initiation, + type_identity_t& token, Args&&... args) + -> constraint_t< detail::async_result_has_initiate_memfn< CompletionToken, Signatures...>::value, - BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Signatures..., - (async_result::type, - Signatures...>::initiate(declval(), - declval(), - declval()...)))>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, - BOOST_ASIO_MOVE_ARG(Args)... args) -{ - return async_result::type, - Signatures...>::initiate(BOOST_ASIO_MOVE_CAST(Initiation)(initiation), - BOOST_ASIO_MOVE_CAST(CompletionToken)(token), - BOOST_ASIO_MOVE_CAST(Args)(args)...); + decltype( + async_result, Signatures...>::initiate( + static_cast(initiation), + static_cast(token), + static_cast(args)...))> +{ + return async_result, Signatures...>::initiate( + static_cast(initiation), + static_cast(token), + static_cast(args)...); } template -inline typename constraint< +inline constraint_t< !detail::async_result_has_initiate_memfn< CompletionToken, Signatures...>::value, - BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, Signatures...)>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, - BOOST_ASIO_MOVE_ARG(Args)... args) + typename async_result, Signatures...>::return_type> +async_initiate(Initiation&& initiation, + type_identity_t& token, Args&&... args) { async_completion completion(token); - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( - BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE(CompletionToken, - Signatures...))(completion.completion_handler), - BOOST_ASIO_MOVE_CAST(Args)(args)...); - - return completion.result.get(); -} - -#else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - -template -inline typename constraint< - detail::async_result_has_initiate_memfn< - CompletionToken, Sig0>::value, - BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE(CompletionToken, Sig0, - (async_result::type, - Sig0>::initiate(declval(), - declval())))>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - return async_result::type, - Sig0>::initiate(BOOST_ASIO_MOVE_CAST(Initiation)(initiation), - BOOST_ASIO_MOVE_CAST(CompletionToken)(token)); -} - -template -inline typename constraint< - detail::async_result_has_initiate_memfn< - CompletionToken, Sig0, Sig1>::value, - BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE2(CompletionToken, Sig0, Sig1, - (async_result::type, - Sig0, Sig1>::initiate(declval(), - declval())))>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - return async_result::type, - Sig0, Sig1>::initiate(BOOST_ASIO_MOVE_CAST(Initiation)(initiation), - BOOST_ASIO_MOVE_CAST(CompletionToken)(token)); -} - -template -inline typename constraint< - detail::async_result_has_initiate_memfn< - CompletionToken, Sig0, Sig1, Sig2>::value, - BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE3(CompletionToken, Sig0, Sig1, Sig2, - (async_result::type, - Sig0, Sig1, Sig2>::initiate(declval(), - declval())))>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - return async_result::type, - Sig0, Sig1, Sig2>::initiate(BOOST_ASIO_MOVE_CAST(Initiation)(initiation), - BOOST_ASIO_MOVE_CAST(CompletionToken)(token)); -} - -template -inline typename constraint< - !detail::async_result_has_initiate_memfn< - CompletionToken, Sig0>::value, - BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, Sig0)>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - async_completion completion(token); - - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( - BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE(CompletionToken, - Sig0))(completion.completion_handler)); + static_cast(initiation)( + static_cast< + typename async_result, + Signatures...>::completion_handler_type&&>( + completion.completion_handler), + static_cast(args)...); return completion.result.get(); } -template -inline typename constraint< - !detail::async_result_has_initiate_memfn< - CompletionToken, Sig0, Sig1>::value, - BOOST_ASIO_INITFN_RESULT_TYPE2(CompletionToken, Sig0, Sig1)>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - async_completion completion(token); - - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( - BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE2(CompletionToken, - Sig0, Sig1))(completion.completion_handler)); - - return completion.result.get(); -} - -template -inline typename constraint< - !detail::async_result_has_initiate_memfn< - CompletionToken, Sig0, Sig1, Sig2>::value, - BOOST_ASIO_INITFN_RESULT_TYPE3(CompletionToken, Sig0, Sig1, Sig2)>::type -async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token) -{ - async_completion completion(token); - - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( - BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE3(CompletionToken, - Sig0, Sig1, Sig2))(completion.completion_handler)); - - return completion.result.get(); -} +#endif // defined(GENERATING_DOCUMENTATION) -#define BOOST_ASIO_PRIVATE_INITIATE_DEF(n) \ - template \ - inline typename constraint< \ - detail::async_result_has_initiate_memfn< \ - CompletionToken, Sig0>::value, \ - BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE( \ - CompletionToken, Sig0, \ - (async_result::type, \ - Sig0>::initiate( \ - declval(), \ - declval(), \ - BOOST_ASIO_VARIADIC_MOVE_DECLVAL(n))))>::type \ - async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, \ - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - return async_result::type, \ - Sig0>::initiate( \ - BOOST_ASIO_MOVE_CAST(Initiation)(initiation), \ - BOOST_ASIO_MOVE_CAST(CompletionToken)(token), \ - BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - \ - template \ - inline typename constraint< \ - detail::async_result_has_initiate_memfn< \ - CompletionToken, Sig0, Sig1>::value, \ - BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE2( \ - CompletionToken, Sig0, Sig1, \ - (async_result::type, \ - Sig0, Sig1>::initiate( \ - declval(), \ - declval(), \ - BOOST_ASIO_VARIADIC_MOVE_DECLVAL(n))))>::type \ - async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, \ - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - return async_result::type, \ - Sig0, Sig1>::initiate( \ - BOOST_ASIO_MOVE_CAST(Initiation)(initiation), \ - BOOST_ASIO_MOVE_CAST(CompletionToken)(token), \ - BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - \ - template \ - inline typename constraint< \ - detail::async_result_has_initiate_memfn< \ - CompletionToken, Sig0, Sig1, Sig2>::value, \ - BOOST_ASIO_INITFN_DEDUCED_RESULT_TYPE3( \ - CompletionToken, Sig0, Sig1, Sig2, \ - (async_result::type, \ - Sig0, Sig1, Sig2>::initiate( \ - declval(), \ - declval(), \ - BOOST_ASIO_VARIADIC_MOVE_DECLVAL(n))))>::type \ - async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, \ - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - return async_result::type, \ - Sig0, Sig1, Sig2>::initiate( \ - BOOST_ASIO_MOVE_CAST(Initiation)(initiation), \ - BOOST_ASIO_MOVE_CAST(CompletionToken)(token), \ - BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \ - } \ - \ - template \ - inline typename constraint< \ - !detail::async_result_has_initiate_memfn< \ - CompletionToken, Sig0>::value, \ - BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, Sig0)>::type \ - async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, \ - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - async_completion completion(token); \ - \ - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( \ - BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE(CompletionToken, \ - Sig0))(completion.completion_handler), \ - BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \ - \ - return completion.result.get(); \ - } \ - \ - template \ - inline typename constraint< \ - !detail::async_result_has_initiate_memfn< \ - CompletionToken, Sig0, Sig1>::value, \ - BOOST_ASIO_INITFN_RESULT_TYPE2(CompletionToken, Sig0, Sig1)>::type \ - async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, \ - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - async_completion completion(token); \ - \ - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( \ - BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE2(CompletionToken, \ - Sig0, Sig1))(completion.completion_handler), \ - BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \ - \ - return completion.result.get(); \ - } \ - \ - template \ - inline typename constraint< \ - !detail::async_result_has_initiate_memfn< \ - CompletionToken, Sig0, Sig1, Sig2>::value, \ - BOOST_ASIO_INITFN_RESULT_TYPE3(CompletionToken, Sig0, Sig1, Sig2)>::type \ - async_initiate(BOOST_ASIO_MOVE_ARG(Initiation) initiation, \ - BOOST_ASIO_NONDEDUCED_MOVE_ARG(CompletionToken) token, \ - BOOST_ASIO_VARIADIC_MOVE_PARAMS(n)) \ - { \ - async_completion completion(token); \ - \ - BOOST_ASIO_MOVE_CAST(Initiation)(initiation)( \ - BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE3(CompletionToken, \ - Sig0, Sig1, Sig2))(completion.completion_handler), \ - BOOST_ASIO_VARIADIC_MOVE_ARGS(n)); \ - \ - return completion.result.get(); \ - } \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_INITIATE_DEF) -#undef BOOST_ASIO_PRIVATE_INITIATE_DEF - -#endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - -#if defined(BOOST_ASIO_HAS_CONCEPTS) \ - && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) \ - && defined(BOOST_ASIO_HAS_DECLTYPE) +#if defined(BOOST_ASIO_HAS_CONCEPTS) namespace detail { @@ -1223,16 +630,12 @@ BOOST_ASIO_CONCEPT completion_token_for = ::boost::asio::completion_token_for #else // defined(BOOST_ASIO_HAS_CONCEPTS) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(BOOST_ASIO_HAS_DECLTYPE) #define BOOST_ASIO_COMPLETION_TOKEN_FOR(sig) typename #define BOOST_ASIO_COMPLETION_TOKEN_FOR2(sig0, sig1) typename #define BOOST_ASIO_COMPLETION_TOKEN_FOR3(sig0, sig1, sig2) typename #endif // defined(BOOST_ASIO_HAS_CONCEPTS) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - // && defined(BOOST_ASIO_HAS_DECLTYPE) namespace detail { @@ -1246,21 +649,21 @@ struct is_async_operation_call : false_type template struct is_async_operation_call::type, + result_of_t, async_operation_probe_result >::value - >::type - >::type> : true_type + > + > + > : true_type { }; } // namespace detail #if !defined(GENERATING_DOCUMENTATION) -#if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) template class async_result @@ -1269,59 +672,16 @@ class async_result typedef detail::async_operation_probe_result return_type; template - static return_type initiate(BOOST_ASIO_MOVE_ARG(Initiation), - detail::async_operation_probe, BOOST_ASIO_MOVE_ARG(InitArgs)...) + static return_type initiate(Initiation&&, + detail::async_operation_probe, InitArgs&&...) { return return_type(); } }; -#else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - -namespace detail { - -struct async_result_probe_base -{ - typedef detail::async_operation_probe_result return_type; - - template - static return_type initiate(BOOST_ASIO_MOVE_ARG(Initiation), - detail::async_operation_probe) - { - return return_type(); - } - -#define BOOST_ASIO_PRIVATE_INITIATE_DEF(n) \ - template \ - static return_type initiate(BOOST_ASIO_MOVE_ARG(Initiation), \ - detail::async_operation_probe, \ - BOOST_ASIO_VARIADIC_UNNAMED_MOVE_PARAMS(n)) \ - { \ - return return_type(); \ - } \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_INITIATE_DEF) -#undef BOOST_ASIO_PRIVATE_INITIATE_DEF -}; - -} // namespace detail - -template -class async_result - : public detail::async_result_probe_base {}; - -template -class async_result - : public detail::async_result_probe_base {}; - -template -class async_result - : public detail::async_result_probe_base {}; - -#endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) #endif // !defined(GENERATING_DOCUMENTATION) -#if defined(GENERATION_DOCUMENTATION) +#if defined(GENERATING_DOCUMENTATION) /// The is_async_operation trait detects whether a type @c T and arguments /// @c Args... may be used to initiate an asynchronous operation. @@ -1336,7 +696,7 @@ struct is_async_operation : integral_constant { }; -#elif defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) +#else // defined(GENERATING_DOCUMENTATION) template struct is_async_operation : @@ -1345,32 +705,9 @@ struct is_async_operation : { }; -#else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) - -template -struct is_async_operation : - detail::is_async_operation_call< - T(detail::async_operation_probe)> -{ -}; - -#define BOOST_ASIO_PRIVATE_IS_ASYNC_OP_DEF(n) \ - template \ - struct is_async_operation : \ - detail::is_async_operation_call< \ - T(BOOST_ASIO_VARIADIC_TARGS(n), detail::async_operation_probe)> \ - { \ - }; \ - /**/ - BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_IS_ASYNC_OP_DEF) -#undef BOOST_ASIO_PRIVATE_IS_ASYNC_OP_DEF - -#endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) +#endif // defined(GENERATING_DOCUMENTATION) -#if defined(BOOST_ASIO_HAS_CONCEPTS) \ - && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) +#if defined(BOOST_ASIO_HAS_CONCEPTS) template BOOST_ASIO_CONCEPT async_operation = is_async_operation::value; @@ -1385,7 +722,6 @@ BOOST_ASIO_CONCEPT async_operation = is_async_operation::value; ::boost::asio::async_operation #else // defined(BOOST_ASIO_HAS_CONCEPTS) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) #define BOOST_ASIO_ASYNC_OPERATION(t) typename #define BOOST_ASIO_ASYNC_OPERATION1(t, a0) typename @@ -1393,37 +729,56 @@ BOOST_ASIO_CONCEPT async_operation = is_async_operation::value; #define BOOST_ASIO_ASYNC_OPERATION3(t, a0, a1, a2) typename #endif // defined(BOOST_ASIO_HAS_CONCEPTS) - // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) namespace detail { struct completion_signature_probe {}; -template +template struct completion_signature_probe_result +{ + template