summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/src/tests
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/src/tests')
-rw-r--r--3rdparty/asio/src/tests/.gitignore11
-rw-r--r--3rdparty/asio/src/tests/Makefile.am344
-rw-r--r--3rdparty/asio/src/tests/Makefile.in6367
-rw-r--r--3rdparty/asio/src/tests/latency/.gitignore11
-rw-r--r--3rdparty/asio/src/tests/latency/allocator.hpp2
-rw-r--r--3rdparty/asio/src/tests/latency/coroutine.hpp87
-rw-r--r--3rdparty/asio/src/tests/latency/high_res_clock.hpp2
-rw-r--r--3rdparty/asio/src/tests/latency/tcp_client.cpp2
-rw-r--r--3rdparty/asio/src/tests/latency/tcp_server.cpp10
-rw-r--r--3rdparty/asio/src/tests/latency/udp_client.cpp2
-rw-r--r--3rdparty/asio/src/tests/latency/udp_server.cpp8
-rw-r--r--3rdparty/asio/src/tests/latency/unyield.hpp21
-rw-r--r--3rdparty/asio/src/tests/latency/yield.hpp23
-rw-r--r--3rdparty/asio/src/tests/performance/.gitignore11
-rw-r--r--3rdparty/asio/src/tests/performance/client.cpp12
-rw-r--r--3rdparty/asio/src/tests/performance/handler_allocator.hpp2
-rw-r--r--3rdparty/asio/src/tests/performance/server.cpp8
-rw-r--r--3rdparty/asio/src/tests/properties/Makefile.am367
-rw-r--r--3rdparty/asio/src/tests/properties/Makefile.in5585
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_prefer.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_require.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_prefer.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_require.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_require.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_require.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_static.cpp45
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_unsupported.cpp33
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_require.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_require.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_static.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_unsupported.cpp43
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_static.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_prefer_unsupported.cpp43
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_free.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_member.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_free.cpp41
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_member.cpp41
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_static.cpp41
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_unsupported.cpp26
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_static.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_query_unsupported.cpp36
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_free.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_member.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_free.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_member.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_static.cpp41
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp28
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_static.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_concept_unsupported.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_free.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_member.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_free.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_member.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_static.cpp45
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_unsupported.cpp32
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_static.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/can_require_unsupported.cpp42
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/prefer_free_prefer.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/prefer_free_require.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/prefer_member_prefer.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/prefer_member_require.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/prefer_static.cpp61
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/prefer_unsupported.cpp46
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/query_free.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/query_member.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/query_static.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/require_concept_free.cpp60
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/require_concept_member.cpp60
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/require_concept_static.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/require_free.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/require_member.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp03/require_static.cpp61
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_prefer.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_require.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_prefer.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_require.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_require.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_require.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_static.cpp45
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_unsupported.cpp33
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_require.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_require.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_static.cpp43
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_unsupported.cpp43
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_static.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_prefer_unsupported.cpp43
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_free.cpp37
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_member.cpp37
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_free.cpp27
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_member.cpp27
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_static.cpp41
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_unsupported.cpp26
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_static.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_query_unsupported.cpp36
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_free.cpp44
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_member.cpp44
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_free.cpp34
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_member.cpp34
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_static.cpp41
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp28
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_static.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_concept_unsupported.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_free.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_member.cpp48
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_free.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_member.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_static.cpp45
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_unsupported.cpp32
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_static.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/can_require_unsupported.cpp42
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/prefer_free_prefer.cpp64
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/prefer_free_require.cpp64
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/prefer_member_prefer.cpp64
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/prefer_member_require.cpp64
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/prefer_static.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/prefer_unsupported.cpp59
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/query_free.cpp49
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/query_member.cpp49
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/query_static.cpp60
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/require_concept_free.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/require_concept_member.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/require_concept_static.cpp58
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/require_free.cpp64
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/require_member.cpp64
-rw-r--r--3rdparty/asio/src/tests/properties/cpp11/require_static.cpp68
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_prefer.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_require.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_prefer.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_require.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_require.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_require.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_static.cpp35
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_unsupported.cpp32
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_require.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_require.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_static.cpp34
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_unsupported.cpp34
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_static.cpp36
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_prefer_unsupported.cpp42
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_free.cpp28
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_member.cpp28
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_free.cpp27
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_member.cpp27
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_static.cpp27
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_unsupported.cpp26
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_static.cpp28
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_query_unsupported.cpp27
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_free.cpp35
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_member.cpp35
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_free.cpp34
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_member.cpp34
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_static.cpp31
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp28
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_static.cpp32
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_concept_unsupported.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_free.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_member.cpp39
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_free.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_member.cpp38
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_static.cpp35
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_unsupported.cpp32
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_static.cpp36
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/can_require_unsupported.cpp42
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/prefer_free_prefer.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/prefer_free_require.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/prefer_member_prefer.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/prefer_member_require.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/prefer_static.cpp52
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/prefer_unsupported.cpp50
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/query_free.cpp40
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/query_member.cpp40
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/query_static.cpp40
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/require_concept_free.cpp43
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/require_concept_member.cpp43
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/require_concept_static.cpp42
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/require_free.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/require_member.cpp55
-rw-r--r--3rdparty/asio/src/tests/properties/cpp14/require_static.cpp52
-rw-r--r--3rdparty/asio/src/tests/unit/.gitignore74
-rw-r--r--3rdparty/asio/src/tests/unit/any_completion_executor.cpp463
-rw-r--r--3rdparty/asio/src/tests/unit/any_completion_handler.cpp260
-rw-r--r--3rdparty/asio/src/tests/unit/any_io_executor.cpp515
-rw-r--r--3rdparty/asio/src/tests/unit/append.cpp58
-rw-r--r--3rdparty/asio/src/tests/unit/archetypes/async_ops.hpp132
-rw-r--r--3rdparty/asio/src/tests/unit/archetypes/async_result.hpp100
-rw-r--r--3rdparty/asio/src/tests/unit/archetypes/deprecated_async_ops.hpp345
-rw-r--r--3rdparty/asio/src/tests/unit/archetypes/deprecated_async_result.hpp82
-rw-r--r--3rdparty/asio/src/tests/unit/archetypes/gettable_socket_option.hpp2
-rw-r--r--3rdparty/asio/src/tests/unit/archetypes/io_control_command.hpp2
-rw-r--r--3rdparty/asio/src/tests/unit/archetypes/settable_socket_option.hpp2
-rw-r--r--3rdparty/asio/src/tests/unit/as_tuple.cpp122
-rw-r--r--3rdparty/asio/src/tests/unit/associated_allocator.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/associated_cancellation_slot.cpp (renamed from 3rdparty/asio/src/tests/unit/seq_packet_socket_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/associated_executor.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/associated_immediate_executor.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/associator.cpp (renamed from 3rdparty/asio/src/tests/unit/signal_set_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/async_result.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/awaitable.cpp (renamed from 3rdparty/asio/src/tests/unit/stream_socket_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/basic_datagram_socket.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_deadline_timer.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_file.cpp (renamed from 3rdparty/asio/src/tests/unit/deadline_timer_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/basic_random_access_file.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/basic_raw_socket.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_readable_pipe.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/basic_seq_packet_socket.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_serial_port.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_signal_set.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_socket.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/basic_socket_acceptor.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_stream_file.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/basic_stream_socket.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_streambuf.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_waitable_timer.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/basic_writable_pipe.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/bind_allocator.cpp237
-rw-r--r--3rdparty/asio/src/tests/unit/bind_cancellation_slot.cpp202
-rw-r--r--3rdparty/asio/src/tests/unit/bind_executor.cpp168
-rw-r--r--3rdparty/asio/src/tests/unit/bind_immediate_executor.cpp199
-rw-r--r--3rdparty/asio/src/tests/unit/buffer.cpp382
-rw-r--r--3rdparty/asio/src/tests/unit/buffer_registration.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/buffered_read_stream.cpp27
-rw-r--r--3rdparty/asio/src/tests/unit/buffered_stream.cpp27
-rw-r--r--3rdparty/asio/src/tests/unit/buffered_write_stream.cpp27
-rw-r--r--3rdparty/asio/src/tests/unit/buffers_iterator.cpp17
-rw-r--r--3rdparty/asio/src/tests/unit/cancellation_signal.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/cancellation_state.cpp (renamed from 3rdparty/asio/src/tests/unit/raw_socket_service.cpp)8
-rw-r--r--3rdparty/asio/src/tests/unit/cancellation_type.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/co_spawn.cpp133
-rw-r--r--3rdparty/asio/src/tests/unit/completion_condition.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/compose.cpp528
-rw-r--r--3rdparty/asio/src/tests/unit/connect.cpp1159
-rw-r--r--3rdparty/asio/src/tests/unit/connect_pipe.cpp154
-rw-r--r--3rdparty/asio/src/tests/unit/consign.cpp56
-rw-r--r--3rdparty/asio/src/tests/unit/coroutine.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/deadline_timer.cpp92
-rw-r--r--3rdparty/asio/src/tests/unit/defer.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/deferred.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/detached.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/dispatch.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/error.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/execution/any_executor.cpp1202
-rw-r--r--3rdparty/asio/src/tests/unit/execution/blocking.cpp1921
-rw-r--r--3rdparty/asio/src/tests/unit/execution/blocking_adaptation.cpp1323
-rw-r--r--3rdparty/asio/src/tests/unit/execution/context_as.cpp147
-rw-r--r--3rdparty/asio/src/tests/unit/execution/executor.cpp106
-rw-r--r--3rdparty/asio/src/tests/unit/execution/invocable_archetype.cpp (renamed from 3rdparty/asio/src/tests/unit/windows/basic_handle.cpp)11
-rw-r--r--3rdparty/asio/src/tests/unit/execution/mapping.cpp1985
-rw-r--r--3rdparty/asio/src/tests/unit/execution/outstanding_work.cpp1252
-rw-r--r--3rdparty/asio/src/tests/unit/execution/prefer_only.cpp533
-rw-r--r--3rdparty/asio/src/tests/unit/execution/relationship.cpp1252
-rw-r--r--3rdparty/asio/src/tests/unit/execution_context.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/executor.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/executor_work_guard.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/awaitable_operators.cpp297
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/basic_channel.cpp (renamed from 3rdparty/asio/src/tests/unit/posix/stream_descriptor_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/basic_concurrent_channel.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/channel.cpp888
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/channel_traits.cpp (renamed from 3rdparty/asio/src/tests/unit/windows/object_handle_service.cpp)11
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/co_composed.cpp518
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/concurrent_channel.cpp165
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/allocator.cpp113
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/cancel.cpp179
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/co_spawn.cpp67
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/exception.cpp172
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/executor.cpp116
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/partial.cpp45
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/simple_test.cpp264
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/stack_test.cpp83
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/coro/use_coro.cpp77
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/parallel_group.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/experimental/promise.cpp226
-rw-r--r--3rdparty/asio/src/tests/unit/file_base.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/generic/.gitignore14
-rw-r--r--3rdparty/asio/src/tests/unit/generic/basic_endpoint.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/generic/datagram_protocol.cpp53
-rw-r--r--3rdparty/asio/src/tests/unit/generic/raw_protocol.cpp54
-rw-r--r--3rdparty/asio/src/tests/unit/generic/seq_packet_protocol.cpp31
-rw-r--r--3rdparty/asio/src/tests/unit/generic/stream_protocol.cpp39
-rw-r--r--3rdparty/asio/src/tests/unit/high_resolution_timer.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/io_context.cpp230
-rw-r--r--3rdparty/asio/src/tests/unit/io_context_strand.cpp316
-rw-r--r--3rdparty/asio/src/tests/unit/ip/.gitignore28
-rw-r--r--3rdparty/asio/src/tests/unit/ip/address.cpp17
-rw-r--r--3rdparty/asio/src/tests/unit/ip/address_v4.cpp19
-rw-r--r--3rdparty/asio/src/tests/unit/ip/address_v4_iterator.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/address_v4_range.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/address_v6.cpp19
-rw-r--r--3rdparty/asio/src/tests/unit/ip/address_v6_iterator.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/address_v6_range.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/basic_endpoint.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/basic_resolver.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/basic_resolver_entry.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/basic_resolver_iterator.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/basic_resolver_query.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/host_name.cpp4
-rw-r--r--3rdparty/asio/src/tests/unit/ip/icmp.cpp238
-rw-r--r--3rdparty/asio/src/tests/unit/ip/multicast.cpp4
-rw-r--r--3rdparty/asio/src/tests/unit/ip/network_v4.cpp27
-rw-r--r--3rdparty/asio/src/tests/unit/ip/network_v6.cpp27
-rw-r--r--3rdparty/asio/src/tests/unit/ip/resolver_query_base.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ip/tcp.cpp424
-rw-r--r--3rdparty/asio/src/tests/unit/ip/udp.cpp259
-rw-r--r--3rdparty/asio/src/tests/unit/ip/unicast.cpp4
-rw-r--r--3rdparty/asio/src/tests/unit/ip/v6_only.cpp4
-rw-r--r--3rdparty/asio/src/tests/unit/is_read_buffered.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/is_write_buffered.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/local/.gitignore13
-rw-r--r--3rdparty/asio/src/tests/unit/local/basic_endpoint.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/local/connect_pair.cpp4
-rw-r--r--3rdparty/asio/src/tests/unit/local/datagram_protocol.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/local/seq_packet_protocol.cpp209
-rw-r--r--3rdparty/asio/src/tests/unit/local/stream_protocol.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/packaged_task.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/placeholders.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/posix/.gitignore15
-rw-r--r--3rdparty/asio/src/tests/unit/posix/basic_descriptor.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/posix/basic_stream_descriptor.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/posix/descriptor.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/posix/descriptor_base.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/posix/stream_descriptor.cpp35
-rw-r--r--3rdparty/asio/src/tests/unit/post.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/prepend.cpp58
-rw-r--r--3rdparty/asio/src/tests/unit/random_access_file.cpp171
-rw-r--r--3rdparty/asio/src/tests/unit/read.cpp1258
-rw-r--r--3rdparty/asio/src/tests/unit/read_at.cpp259
-rw-r--r--3rdparty/asio/src/tests/unit/read_until.cpp820
-rw-r--r--3rdparty/asio/src/tests/unit/readable_pipe.cpp131
-rw-r--r--3rdparty/asio/src/tests/unit/recycling_allocator.cpp80
-rw-r--r--3rdparty/asio/src/tests/unit/redirect_error.cpp121
-rw-r--r--3rdparty/asio/src/tests/unit/registered_buffer.cpp111
-rw-r--r--3rdparty/asio/src/tests/unit/serial_port.cpp50
-rw-r--r--3rdparty/asio/src/tests/unit/serial_port_base.cpp4
-rw-r--r--3rdparty/asio/src/tests/unit/serial_port_service.cpp26
-rw-r--r--3rdparty/asio/src/tests/unit/signal_set.cpp21
-rw-r--r--3rdparty/asio/src/tests/unit/signal_set_base.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/socket_acceptor_service.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/socket_base.cpp15
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/.gitignore14
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/context.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/context_base.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/error.cpp (renamed from 3rdparty/asio/src/tests/unit/ip/resolver_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/host_name_verification.cpp (renamed from 3rdparty/asio/src/tests/unit/waitable_timer_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/rfc2818_verification.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/stream.cpp24
-rw-r--r--3rdparty/asio/src/tests/unit/ssl/stream_base.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/static_thread_pool.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/steady_timer.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/strand.cpp270
-rw-r--r--3rdparty/asio/src/tests/unit/stream_file.cpp173
-rw-r--r--3rdparty/asio/src/tests/unit/streambuf.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/system_context.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/system_executor.cpp147
-rw-r--r--3rdparty/asio/src/tests/unit/system_timer.cpp192
-rw-r--r--3rdparty/asio/src/tests/unit/this_coro.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/thread.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/thread_pool.cpp283
-rw-r--r--3rdparty/asio/src/tests/unit/time_traits.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/ts/buffer.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/ts/executor.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/ts/internet.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/ts/io_context.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/ts/net.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/ts/netfwd.cpp33
-rw-r--r--3rdparty/asio/src/tests/unit/ts/socket.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/ts/timer.cpp30
-rw-r--r--3rdparty/asio/src/tests/unit/unit_test.hpp21
-rw-r--r--3rdparty/asio/src/tests/unit/use_awaitable.cpp25
-rw-r--r--3rdparty/asio/src/tests/unit/use_future.cpp684
-rw-r--r--3rdparty/asio/src/tests/unit/uses_executor.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/wait_traits.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/windows/.gitignore21
-rw-r--r--3rdparty/asio/src/tests/unit/windows/basic_object_handle.cpp5
-rw-r--r--3rdparty/asio/src/tests/unit/windows/basic_overlapped_handle.cpp (renamed from 3rdparty/asio/src/tests/unit/datagram_socket_service.cpp)10
-rw-r--r--3rdparty/asio/src/tests/unit/windows/basic_random_access_handle.cpp5
-rw-r--r--3rdparty/asio/src/tests/unit/windows/basic_stream_handle.cpp5
-rw-r--r--3rdparty/asio/src/tests/unit/windows/object_handle.cpp44
-rw-r--r--3rdparty/asio/src/tests/unit/windows/overlapped_handle.cpp2
-rw-r--r--3rdparty/asio/src/tests/unit/windows/overlapped_ptr.cpp32
-rw-r--r--3rdparty/asio/src/tests/unit/windows/random_access_handle.cpp53
-rw-r--r--3rdparty/asio/src/tests/unit/windows/random_access_handle_service.cpp26
-rw-r--r--3rdparty/asio/src/tests/unit/windows/stream_handle.cpp53
-rw-r--r--3rdparty/asio/src/tests/unit/windows/stream_handle_service.cpp26
-rw-r--r--3rdparty/asio/src/tests/unit/writable_pipe.cpp136
-rw-r--r--3rdparty/asio/src/tests/unit/write.cpp1194
-rw-r--r--3rdparty/asio/src/tests/unit/write_at.cpp289
397 files changed, 45596 insertions, 3487 deletions
diff --git a/3rdparty/asio/src/tests/.gitignore b/3rdparty/asio/src/tests/.gitignore
deleted file mode 100644
index a35502b4e5d..00000000000
--- a/3rdparty/asio/src/tests/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*_test
-*.ilk
-*.manifest
-*.pdb
-*.tds
-*.winmd
diff --git a/3rdparty/asio/src/tests/Makefile.am b/3rdparty/asio/src/tests/Makefile.am
index 381377f2288..04f8a03a4ec 100644
--- a/3rdparty/asio/src/tests/Makefile.am
+++ b/3rdparty/asio/src/tests/Makefile.am
@@ -9,38 +9,77 @@ endif
LDADD = libasio.a
endif
+SUBDIRS = properties
+
check_PROGRAMS = \
+ unit/any_completion_executor \
+ unit/any_completion_handler \
+ unit/any_io_executor \
+ unit/append \
+ unit/as_tuple \
unit/associated_allocator \
+ unit/associated_cancellation_slot \
unit/associated_executor \
+ unit/associated_immediate_executor \
+ unit/associator \
unit/async_result \
+ unit/awaitable \
unit/basic_datagram_socket \
unit/basic_deadline_timer \
+ unit/basic_file \
+ unit/basic_random_access_file \
unit/basic_raw_socket \
+ unit/basic_readable_pipe \
unit/basic_seq_packet_socket \
unit/basic_serial_port \
unit/basic_signal_set \
+ unit/basic_socket \
unit/basic_socket_acceptor \
+ unit/basic_stream_file \
unit/basic_stream_socket \
unit/basic_streambuf \
unit/basic_waitable_timer \
+ unit/basic_writable_pipe \
+ unit/bind_allocator \
+ unit/bind_cancellation_slot \
unit/bind_executor \
+ unit/bind_immediate_executor \
unit/buffered_read_stream \
unit/buffered_stream \
unit/buffered_write_stream \
unit/buffer \
+ unit/buffer_registration \
unit/buffers_iterator \
+ unit/cancellation_signal \
+ unit/cancellation_state \
+ unit/cancellation_type \
+ unit/co_spawn \
unit/completion_condition \
+ unit/compose \
unit/connect \
+ unit/connect_pipe \
+ unit/consign \
unit/coroutine \
- unit/datagram_socket_service \
- unit/deadline_timer_service \
unit/deadline_timer \
unit/defer \
+ unit/deferred \
+ unit/detached \
unit/dispatch \
unit/error \
+ unit/execution/any_executor \
+ unit/execution/blocking \
+ unit/execution/blocking_adaptation \
+ unit/execution/context_as \
+ unit/execution/executor \
+ unit/execution/invocable_archetype \
+ unit/execution/mapping \
+ unit/execution/outstanding_work \
+ unit/execution/prefer_only \
+ unit/execution/relationship \
unit/execution_context \
unit/executor \
unit/executor_work_guard \
+ unit/file_base \
unit/generic/basic_endpoint \
unit/generic/datagram_protocol \
unit/generic/raw_protocol \
@@ -48,6 +87,7 @@ check_PROGRAMS = \
unit/generic/stream_protocol \
unit/high_resolution_timer \
unit/io_context \
+ unit/io_context_strand \
unit/ip/address \
unit/ip/address_v4 \
unit/ip/address_v4_iterator \
@@ -66,7 +106,6 @@ check_PROGRAMS = \
unit/ip/network_v4 \
unit/ip/network_v6 \
unit/ip/resolver_query_base \
- unit/ip/resolver_service \
unit/ip/tcp \
unit/ip/udp \
unit/ip/unicast \
@@ -76,6 +115,7 @@ check_PROGRAMS = \
unit/local/basic_endpoint \
unit/local/connect_pair \
unit/local/datagram_protocol \
+ unit/local/seq_packet_protocol \
unit/local/stream_protocol \
unit/packaged_task \
unit/placeholders \
@@ -84,43 +124,55 @@ check_PROGRAMS = \
unit/posix/descriptor \
unit/posix/descriptor_base \
unit/posix/stream_descriptor \
- unit/posix/stream_descriptor_service \
unit/post \
- unit/raw_socket_service \
+ unit/prepend \
+ unit/random_access_file \
unit/read \
unit/read_at \
unit/read_until \
- unit/seq_packet_socket_service \
+ unit/readable_pipe \
+ unit/recycling_allocator \
+ unit/redirect_error \
+ unit/registered_buffer \
unit/serial_port \
unit/serial_port_base \
- unit/serial_port_service \
unit/signal_set \
- unit/signal_set_service \
- unit/socket_acceptor_service \
+ unit/signal_set_base \
unit/socket_base \
+ unit/static_thread_pool \
unit/steady_timer \
unit/strand \
- unit/stream_socket_service \
+ unit/stream_file \
unit/streambuf \
+ unit/system_context \
+ unit/system_executor \
unit/system_timer \
+ unit/this_coro \
unit/thread \
+ unit/thread_pool \
unit/time_traits \
+ unit/ts/buffer \
+ unit/ts/executor \
+ unit/ts/internet \
+ unit/ts/io_context \
+ unit/ts/net \
+ unit/ts/netfwd \
+ unit/ts/socket \
+ unit/ts/timer \
+ unit/use_awaitable \
unit/use_future \
unit/uses_executor \
unit/wait_traits \
- unit/waitable_timer_service \
- unit/windows/basic_handle \
unit/windows/basic_object_handle \
+ unit/windows/basic_overlapped_handle \
unit/windows/basic_random_access_handle \
unit/windows/basic_stream_handle \
unit/windows/object_handle \
- unit/windows/object_handle_service \
unit/windows/overlapped_handle \
unit/windows/overlapped_ptr \
unit/windows/random_access_handle \
- unit/windows/random_access_handle_service \
unit/windows/stream_handle \
- unit/windows/stream_handle_service \
+ unit/writable_pipe \
unit/write \
unit/write_at
@@ -134,48 +186,118 @@ noinst_PROGRAMS = \
performance/server
endif
+if HAVE_CXX11
+check_PROGRAMS += \
+ unit/experimental/basic_channel \
+ unit/experimental/basic_concurrent_channel \
+ unit/experimental/channel \
+ unit/experimental/channel_traits \
+ unit/experimental/concurrent_channel \
+ unit/experimental/parallel_group
+endif
+
+if HAVE_CXX20
+check_PROGRAMS += \
+ unit/experimental/promise
+
+if HAVE_COROUTINES
+check_PROGRAMS += \
+ unit/experimental/awaitable_operators \
+ unit/experimental/co_composed \
+ unit/experimental/coro/allocator \
+ unit/experimental/coro/cancel \
+ unit/experimental/coro/co_spawn \
+ unit/experimental/coro/exception \
+ unit/experimental/coro/executor \
+ unit/experimental/coro/partial \
+ unit/experimental/coro/simple_test \
+ unit/experimental/coro/stack_test \
+ unit/experimental/coro/use_coro
+endif
+endif
+
if HAVE_OPENSSL
check_PROGRAMS += \
unit/ssl/context_base \
unit/ssl/context \
+ unit/ssl/error \
+ unit/ssl/host_name_verification \
unit/ssl/rfc2818_verification \
unit/ssl/stream_base \
unit/ssl/stream
endif
TESTS = \
+ unit/any_completion_executor \
+ unit/any_completion_handler \
+ unit/any_io_executor \
+ unit/append \
+ unit/as_tuple \
unit/associated_allocator \
+ unit/associated_cancellation_slot \
unit/associated_executor \
+ unit/associated_immediate_executor \
+ unit/associator \
unit/async_result \
+ unit/awaitable \
unit/basic_datagram_socket \
unit/basic_deadline_timer \
+ unit/basic_file \
+ unit/basic_random_access_file \
unit/basic_raw_socket \
+ unit/basic_readable_pipe \
unit/basic_seq_packet_socket \
unit/basic_serial_port \
unit/basic_signal_set \
+ unit/basic_socket \
unit/basic_socket_acceptor \
+ unit/basic_stream_file \
unit/basic_stream_socket \
unit/basic_streambuf \
unit/basic_waitable_timer \
+ unit/basic_writable_pipe \
+ unit/bind_allocator \
+ unit/bind_cancellation_slot \
unit/bind_executor \
+ unit/bind_immediate_executor \
unit/buffered_read_stream \
unit/buffered_stream \
unit/buffered_write_stream \
unit/buffer \
+ unit/buffer_registration \
unit/buffers_iterator \
+ unit/cancellation_signal \
+ unit/cancellation_state \
+ unit/cancellation_type \
+ unit/co_spawn \
unit/completion_condition \
+ unit/compose \
unit/connect \
- unit/datagram_socket_service \
- unit/deadline_timer_service \
+ unit/connect_pipe \
+ unit/consign \
unit/deadline_timer \
unit/defer \
+ unit/deferred \
+ unit/detached \
unit/dispatch \
unit/error \
+ unit/execution/any_executor \
+ unit/execution/blocking \
+ unit/execution/blocking_adaptation \
+ unit/execution/context_as \
+ unit/execution/executor \
+ unit/execution/invocable_archetype \
+ unit/execution/mapping \
+ unit/execution/outstanding_work \
+ unit/execution/prefer_only \
+ unit/execution/relationship \
unit/execution_context \
unit/executor \
unit/executor_work_guard \
+ unit/file_base \
unit/high_resolution_timer \
unit/io_context \
+ unit/io_context_strand \
unit/ip/address \
unit/ip/address_v4 \
unit/ip/address_v4_iterator \
@@ -194,7 +316,6 @@ TESTS = \
unit/ip/network_v4 \
unit/ip/network_v6 \
unit/ip/resolver_query_base \
- unit/ip/resolver_service \
unit/ip/tcp \
unit/ip/udp \
unit/ip/unicast \
@@ -204,68 +325,110 @@ TESTS = \
unit/local/basic_endpoint \
unit/local/connect_pair \
unit/local/datagram_protocol \
+ unit/local/seq_packet_protocol \
unit/local/stream_protocol \
unit/packaged_task \
unit/placeholders \
- unit/posix/basic_descriptor \
- unit/posix/basic_stream_descriptor \
+ unit/posix/basic_descriptor\
+ unit/posix/basic_stream_descriptor\
unit/posix/descriptor\
unit/posix/descriptor_base \
unit/posix/stream_descriptor \
- unit/posix/stream_descriptor_service \
unit/post \
- unit/raw_socket_service \
+ unit/prepend \
+ unit/random_access_file \
unit/read \
unit/read_at \
unit/read_until \
- unit/seq_packet_socket_service \
+ unit/readable_pipe \
+ unit/recycling_allocator \
+ unit/redirect_error \
+ unit/registered_buffer \
unit/serial_port \
unit/serial_port_base \
- unit/serial_port_service \
unit/signal_set \
- unit/signal_set_service \
- unit/socket_acceptor_service \
+ unit/signal_set_base \
unit/socket_base \
+ unit/static_thread_pool \
unit/steady_timer \
unit/strand \
- unit/stream_socket_service \
+ unit/stream_file \
unit/streambuf \
+ unit/system_context \
+ unit/system_executor \
unit/system_timer \
+ unit/this_coro \
unit/thread \
+ unit/thread_pool \
unit/time_traits \
+ unit/ts/buffer \
+ unit/ts/executor \
+ unit/ts/internet \
+ unit/ts/io_context \
+ unit/ts/net \
+ unit/ts/netfwd \
+ unit/ts/socket \
+ unit/ts/timer \
+ unit/use_awaitable \
unit/use_future \
unit/uses_executor \
unit/wait_traits \
- unit/waitable_timer_service \
- unit/windows/basic_handle \
unit/windows/basic_object_handle \
+ unit/windows/basic_overlapped_handle \
unit/windows/basic_random_access_handle \
unit/windows/basic_stream_handle \
unit/windows/object_handle \
- unit/windows/object_handle_service \
unit/windows/overlapped_handle \
unit/windows/overlapped_ptr \
unit/windows/random_access_handle \
- unit/windows/random_access_handle_service \
unit/windows/stream_handle \
- unit/windows/stream_handle_service \
+ unit/writable_pipe \
unit/write \
unit/write_at
+if HAVE_CXX11
+TESTS += \
+ unit/experimental/basic_channel \
+ unit/experimental/basic_concurrent_channel \
+ unit/experimental/channel \
+ unit/experimental/channel_traits \
+ unit/experimental/concurrent_channel \
+ unit/experimental/parallel_group
+endif
+
+if HAVE_CXX20
+TESTS += \
+ unit/experimental/promise
+
+if HAVE_COROUTINES
+TESTS += \
+ unit/experimental/awaitable_operators \
+ unit/experimental/co_composed \
+ unit/experimental/coro/allocator \
+ unit/experimental/coro/cancel \
+ unit/experimental/coro/co_spawn \
+ unit/experimental/coro/exception \
+ unit/experimental/coro/executor \
+ unit/experimental/coro/partial \
+ unit/experimental/coro/simple_test \
+ unit/experimental/coro/stack_test \
+ unit/experimental/coro/use_coro
+endif
+endif
+
if HAVE_OPENSSL
TESTS += \
unit/ssl/context_base \
unit/ssl/context \
+ unit/ssl/error \
+ unit/ssl/host_name_verification \
unit/ssl/rfc2818_verification \
unit/ssl/stream_base \
unit/ssl/stream
endif
noinst_HEADERS = \
- latency/coroutine.hpp \
latency/high_res_clock.hpp \
- latency/unyield.hpp \
- latency/yield.hpp \
unit/unit_test.hpp
AM_CXXFLAGS = -I$(srcdir)/../../include
@@ -279,37 +442,74 @@ performance_client_SOURCES = performance/client.cpp
performance_server_SOURCES = performance/server.cpp
endif
+unit_any_completion_executor_SOURCES = unit/any_completion_executor.cpp
+unit_any_completion_handler_SOURCES = unit/any_completion_handler.cpp
+unit_any_io_executor_SOURCES = unit/any_io_executor.cpp
+unit_append_SOURCES = unit/append.cpp
+unit_as_tuple_SOURCES = unit/as_tuple.cpp
unit_associated_allocator_SOURCES = unit/associated_allocator.cpp
+unit_associated_cancellation_slot_SOURCES = unit/associated_cancellation_slot.cpp
unit_associated_executor_SOURCES = unit/associated_executor.cpp
+unit_associated_immediate_executor_SOURCES = unit/associated_immediate_executor.cpp
+unit_associator_SOURCES = unit/associator.cpp
unit_async_result_SOURCES = unit/async_result.cpp
+unit_awaitable_SOURCES = unit/awaitable.cpp
unit_basic_datagram_socket_SOURCES = unit/basic_datagram_socket.cpp
unit_basic_deadline_timer_SOURCES = unit/basic_deadline_timer.cpp
+unit_basic_file_SOURCES = unit/basic_file.cpp
+unit_basic_random_access_file_SOURCES = unit/basic_random_access_file.cpp
unit_basic_raw_socket_SOURCES = unit/basic_raw_socket.cpp
+unit_basic_readable_pipe_SOURCES = unit/basic_readable_pipe.cpp
unit_basic_seq_packet_socket_SOURCES = unit/basic_seq_packet_socket.cpp
unit_basic_serial_port_SOURCES = unit/basic_serial_port.cpp
unit_basic_signal_set_SOURCES = unit/basic_signal_set.cpp
+unit_basic_socket_SOURCES = unit/basic_socket.cpp
unit_basic_socket_acceptor_SOURCES = unit/basic_socket_acceptor.cpp
+unit_basic_stream_file_SOURCES = unit/basic_stream_file.cpp
unit_basic_stream_socket_SOURCES = unit/basic_stream_socket.cpp
unit_basic_streambuf_SOURCES = unit/basic_streambuf.cpp
unit_basic_waitable_timer_SOURCES = unit/basic_waitable_timer.cpp
+unit_basic_writable_pipe_SOURCES = unit/basic_writable_pipe.cpp
+unit_bind_allocator_SOURCES = unit/bind_allocator.cpp
+unit_bind_cancellation_slot_SOURCES = unit/bind_cancellation_slot.cpp
unit_bind_executor_SOURCES = unit/bind_executor.cpp
+unit_bind_immediate_executor_SOURCES = unit/bind_immediate_executor.cpp
unit_buffer_SOURCES = unit/buffer.cpp
+unit_buffer_registration_SOURCES = unit/buffer_registration.cpp
unit_buffers_iterator_SOURCES = unit/buffers_iterator.cpp
unit_buffered_read_stream_SOURCES = unit/buffered_read_stream.cpp
unit_buffered_stream_SOURCES = unit/buffered_stream.cpp
unit_buffered_write_stream_SOURCES = unit/buffered_write_stream.cpp
+unit_cancellation_signal_SOURCES = unit/cancellation_signal.cpp
+unit_cancellation_state_SOURCES = unit/cancellation_state.cpp
+unit_cancellation_type_SOURCES = unit/cancellation_type.cpp
+unit_co_spawn_SOURCES = unit/co_spawn.cpp
unit_completion_condition_SOURCES = unit/completion_condition.cpp
+unit_compose_SOURCES = unit/compose.cpp
unit_connect_SOURCES = unit/connect.cpp
+unit_connect_pipe_SOURCES = unit/connect_pipe.cpp
+unit_consign_SOURCES = unit/consign.cpp
unit_coroutine_SOURCES = unit/coroutine.cpp
-unit_datagram_socket_service_SOURCES = unit/datagram_socket_service.cpp
-unit_deadline_timer_service_SOURCES = unit/deadline_timer_service.cpp
unit_deadline_timer_SOURCES = unit/deadline_timer.cpp
unit_defer_SOURCES = unit/defer.cpp
+unit_deferred_SOURCES = unit/deferred.cpp
+unit_detached_SOURCES = unit/detached.cpp
unit_dispatch_SOURCES = unit/dispatch.cpp
unit_error_SOURCES = unit/error.cpp
+unit_execution_any_executor_SOURCES = unit/execution/any_executor.cpp
+unit_execution_blocking_SOURCES = unit/execution/blocking.cpp
+unit_execution_blocking_adaptation_SOURCES = unit/execution/blocking_adaptation.cpp
+unit_execution_context_as_SOURCES = unit/execution/context_as.cpp
+unit_execution_executor_SOURCES = unit/execution/executor.cpp
+unit_execution_invocable_archetype_SOURCES = unit/execution/invocable_archetype.cpp
+unit_execution_mapping_SOURCES = unit/execution/mapping.cpp
+unit_execution_outstanding_work_SOURCES = unit/execution/outstanding_work.cpp
+unit_execution_prefer_only_SOURCES = unit/execution/prefer_only.cpp
+unit_execution_relationship_SOURCES = unit/execution/relationship.cpp
unit_execution_context_SOURCES = unit/execution_context.cpp
unit_executor_SOURCES = unit/executor.cpp
unit_executor_work_guard_SOURCES = unit/executor_work_guard.cpp
+unit_file_base_SOURCES = unit/file_base.cpp
unit_generic_basic_endpoint_SOURCES = unit/generic/basic_endpoint.cpp
unit_generic_datagram_protocol_SOURCES = unit/generic/datagram_protocol.cpp
unit_generic_raw_protocol_SOURCES = unit/generic/raw_protocol.cpp
@@ -317,6 +517,7 @@ unit_generic_seq_packet_protocol_SOURCES = unit/generic/seq_packet_protocol.cpp
unit_generic_stream_protocol_SOURCES = unit/generic/stream_protocol.cpp
unit_high_resolution_timer_SOURCES = unit/high_resolution_timer.cpp
unit_io_context_SOURCES = unit/io_context.cpp
+unit_io_context_strand_SOURCES = unit/io_context_strand.cpp
unit_ip_address_SOURCES = unit/ip/address.cpp
unit_ip_address_v4_SOURCES = unit/ip/address_v4.cpp
unit_ip_address_v4_iterator_SOURCES = unit/ip/address_v4_iterator.cpp
@@ -335,7 +536,6 @@ unit_ip_multicast_SOURCES = unit/ip/multicast.cpp
unit_ip_network_v4_SOURCES = unit/ip/network_v4.cpp
unit_ip_network_v6_SOURCES = unit/ip/network_v6.cpp
unit_ip_resolver_query_base_SOURCES = unit/ip/resolver_query_base.cpp
-unit_ip_resolver_service_SOURCES = unit/ip/resolver_service.cpp
unit_ip_tcp_SOURCES = unit/ip/tcp.cpp
unit_ip_udp_SOURCES = unit/ip/udp.cpp
unit_ip_unicast_SOURCES = unit/ip/unicast.cpp
@@ -345,6 +545,7 @@ unit_is_write_buffered_SOURCES = unit/is_write_buffered.cpp
unit_local_basic_endpoint_SOURCES = unit/local/basic_endpoint.cpp
unit_local_connect_pair_SOURCES = unit/local/connect_pair.cpp
unit_local_datagram_protocol_SOURCES = unit/local/datagram_protocol.cpp
+unit_local_seq_packet_protocol_SOURCES = unit/local/seq_packet_protocol.cpp
unit_local_stream_protocol_SOURCES = unit/local/stream_protocol.cpp
unit_packaged_task_SOURCES = unit/packaged_task.cpp
unit_placeholders_SOURCES = unit/placeholders.cpp
@@ -353,50 +554,91 @@ unit_posix_basic_stream_descriptor_SOURCES = unit/posix/basic_stream_descriptor.
unit_posix_descriptor_SOURCES = unit/posix/descriptor.cpp
unit_posix_descriptor_base_SOURCES = unit/posix/descriptor_base.cpp
unit_posix_stream_descriptor_SOURCES = unit/posix/stream_descriptor.cpp
-unit_posix_stream_descriptor_service_SOURCES = unit/posix/stream_descriptor_service.cpp
unit_post_SOURCES = unit/post.cpp
-unit_raw_socket_service_SOURCES = unit/raw_socket_service.cpp
+unit_prepend_SOURCES = unit/prepend.cpp
+unit_random_access_file_SOURCES = unit/random_access_file.cpp
unit_read_SOURCES = unit/read.cpp
unit_read_at_SOURCES = unit/read_at.cpp
unit_read_until_SOURCES = unit/read_until.cpp
-unit_seq_packet_socket_service_SOURCES = unit/seq_packet_socket_service.cpp
+unit_readable_pipe_SOURCES = unit/readable_pipe.cpp
+unit_recycling_allocator_SOURCES = unit/recycling_allocator.cpp
+unit_redirect_error_SOURCES = unit/redirect_error.cpp
+unit_registered_buffer_SOURCES = unit/registered_buffer.cpp
unit_serial_port_SOURCES = unit/serial_port.cpp
unit_serial_port_base_SOURCES = unit/serial_port_base.cpp
-unit_serial_port_service_SOURCES = unit/serial_port_service.cpp
unit_signal_set_SOURCES = unit/signal_set.cpp
-unit_signal_set_service_SOURCES = unit/signal_set_service.cpp
-unit_socket_acceptor_service_SOURCES = unit/socket_acceptor_service.cpp
+unit_signal_set_base_SOURCES = unit/signal_set_base.cpp
unit_socket_base_SOURCES = unit/socket_base.cpp
+unit_static_thread_pool_SOURCES = unit/static_thread_pool.cpp
unit_steady_timer_SOURCES = unit/steady_timer.cpp
unit_strand_SOURCES = unit/strand.cpp
-unit_stream_socket_service_SOURCES = unit/stream_socket_service.cpp
+unit_stream_file_SOURCES = unit/stream_file.cpp
unit_streambuf_SOURCES = unit/streambuf.cpp
+unit_system_context_SOURCES = unit/system_context.cpp
+unit_system_executor_SOURCES = unit/system_executor.cpp
unit_system_timer_SOURCES = unit/system_timer.cpp
+unit_this_coro_SOURCES = unit/this_coro.cpp
unit_thread_SOURCES = unit/thread.cpp
+unit_thread_pool_SOURCES = unit/thread_pool.cpp
unit_time_traits_SOURCES = unit/time_traits.cpp
+unit_ts_buffer_SOURCES = unit/ts/buffer.cpp
+unit_ts_executor_SOURCES = unit/ts/executor.cpp
+unit_ts_internet_SOURCES = unit/ts/internet.cpp
+unit_ts_io_context_SOURCES = unit/ts/io_context.cpp
+unit_ts_net_SOURCES = unit/ts/net.cpp
+unit_ts_netfwd_SOURCES = unit/ts/netfwd.cpp
+unit_ts_socket_SOURCES = unit/ts/socket.cpp
+unit_ts_timer_SOURCES = unit/ts/timer.cpp
+unit_use_awaitable_SOURCES = unit/use_awaitable.cpp
unit_use_future_SOURCES = unit/use_future.cpp
unit_uses_executor_SOURCES = unit/uses_executor.cpp
unit_wait_traits_SOURCES = unit/wait_traits.cpp
-unit_waitable_timer_service_SOURCES = unit/waitable_timer_service.cpp
-unit_windows_basic_handle_SOURCES = unit/windows/basic_handle.cpp
unit_windows_basic_object_handle_SOURCES = unit/windows/basic_object_handle.cpp
+unit_windows_basic_overlapped_handle_SOURCES = unit/windows/basic_overlapped_handle.cpp
unit_windows_basic_random_access_handle_SOURCES = unit/windows/basic_random_access_handle.cpp
unit_windows_basic_stream_handle_SOURCES = unit/windows/basic_stream_handle.cpp
unit_windows_object_handle_SOURCES = unit/windows/object_handle.cpp
-unit_windows_object_handle_service_SOURCES = unit/windows/object_handle_service.cpp
unit_windows_overlapped_handle_SOURCES = unit/windows/overlapped_handle.cpp
unit_windows_overlapped_ptr_SOURCES = unit/windows/overlapped_ptr.cpp
unit_windows_random_access_handle_SOURCES = unit/windows/random_access_handle.cpp
-unit_windows_random_access_handle_service_SOURCES = unit/windows/random_access_handle_service.cpp
unit_windows_stream_handle_SOURCES = unit/windows/stream_handle.cpp
-unit_windows_stream_handle_service_SOURCES = unit/windows/stream_handle_service.cpp
+unit_writable_pipe_SOURCES = unit/writable_pipe.cpp
unit_write_SOURCES = unit/write.cpp
unit_write_at_SOURCES = unit/write_at.cpp
+if HAVE_CXX11
+unit_experimental_basic_channel_SOURCES = unit/experimental/basic_channel.cpp
+unit_experimental_basic_concurrent_channel_SOURCES = unit/experimental/basic_concurrent_channel.cpp
+unit_experimental_channel_SOURCES = unit/experimental/channel.cpp
+unit_experimental_channel_traits_SOURCES = unit/experimental/channel_traits.cpp
+unit_experimental_concurrent_channel_SOURCES = unit/experimental/concurrent_channel.cpp
+unit_experimental_parallel_group_SOURCES = unit/experimental/parallel_group.cpp
+endif
+
+if HAVE_CXX20
+unit_experimental_promise_SOURCES = unit/experimental/promise.cpp
+
+if HAVE_COROUTINES
+unit_experimental_awaitable_operators_SOURCES = unit/experimental/awaitable_operators.cpp
+unit_experimental_co_composed_SOURCES = unit/experimental/co_composed.cpp
+unit_experimental_coro_allocator_SOURCES = unit/experimental/coro/allocator.cpp
+unit_experimental_coro_cancel_SOURCES = unit/experimental/coro/cancel.cpp
+unit_experimental_coro_co_spawn_SOURCES = unit/experimental/coro/co_spawn.cpp
+unit_experimental_coro_exception_SOURCES = unit/experimental/coro/exception.cpp
+unit_experimental_coro_executor_SOURCES = unit/experimental/coro/executor.cpp
+unit_experimental_coro_partial_SOURCES = unit/experimental/coro/partial.cpp
+unit_experimental_coro_simple_test_SOURCES = unit/experimental/coro/simple_test.cpp
+unit_experimental_coro_stack_test_SOURCES = unit/experimental/coro/stack_test.cpp
+unit_experimental_coro_use_coro_SOURCES = unit/experimental/coro/use_coro.cpp
+endif
+endif
+
if HAVE_OPENSSL
unit_ssl_context_base_SOURCES = unit/ssl/context_base.cpp
unit_ssl_context_SOURCES = unit/ssl/context.cpp
+unit_ssl_error_SOURCES = unit/ssl/error.cpp
unit_ssl_stream_base_SOURCES = unit/ssl/stream_base.cpp
+unit_ssl_host_name_verification_SOURCES = unit/ssl/host_name_verification.cpp
unit_ssl_rfc2818_verification_SOURCES = unit/ssl/rfc2818_verification.cpp
unit_ssl_stream_SOURCES = unit/ssl/stream.cpp
endif
@@ -406,8 +648,6 @@ EXTRA_DIST = \
performance/handler_allocator.hpp \
unit/archetypes/async_ops.hpp \
unit/archetypes/async_result.hpp \
- unit/archetypes/deprecated_async_result.hpp \
- unit/archetypes/deprecated_async_ops.hpp \
unit/archetypes/gettable_socket_option.hpp \
unit/archetypes/io_control_command.hpp \
unit/archetypes/settable_socket_option.hpp
diff --git a/3rdparty/asio/src/tests/Makefile.in b/3rdparty/asio/src/tests/Makefile.in
new file mode 100644
index 00000000000..a88bd89fec5
--- /dev/null
+++ b/3rdparty/asio/src/tests/Makefile.in
@@ -0,0 +1,6367 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@HAVE_OPENSSL_TRUE@@SEPARATE_COMPILATION_TRUE@am__append_1 = ../asio_ssl.cpp
+check_PROGRAMS = unit/any_completion_executor$(EXEEXT) \
+ unit/any_completion_handler$(EXEEXT) \
+ unit/any_io_executor$(EXEEXT) unit/append$(EXEEXT) \
+ unit/as_tuple$(EXEEXT) unit/associated_allocator$(EXEEXT) \
+ unit/associated_cancellation_slot$(EXEEXT) \
+ unit/associated_executor$(EXEEXT) \
+ unit/associated_immediate_executor$(EXEEXT) \
+ unit/associator$(EXEEXT) unit/async_result$(EXEEXT) \
+ unit/awaitable$(EXEEXT) unit/basic_datagram_socket$(EXEEXT) \
+ unit/basic_deadline_timer$(EXEEXT) unit/basic_file$(EXEEXT) \
+ unit/basic_random_access_file$(EXEEXT) \
+ unit/basic_raw_socket$(EXEEXT) \
+ unit/basic_readable_pipe$(EXEEXT) \
+ unit/basic_seq_packet_socket$(EXEEXT) \
+ unit/basic_serial_port$(EXEEXT) unit/basic_signal_set$(EXEEXT) \
+ unit/basic_socket$(EXEEXT) unit/basic_socket_acceptor$(EXEEXT) \
+ unit/basic_stream_file$(EXEEXT) \
+ unit/basic_stream_socket$(EXEEXT) \
+ unit/basic_streambuf$(EXEEXT) \
+ unit/basic_waitable_timer$(EXEEXT) \
+ unit/basic_writable_pipe$(EXEEXT) unit/bind_allocator$(EXEEXT) \
+ unit/bind_cancellation_slot$(EXEEXT) \
+ unit/bind_executor$(EXEEXT) \
+ unit/bind_immediate_executor$(EXEEXT) \
+ unit/buffered_read_stream$(EXEEXT) \
+ unit/buffered_stream$(EXEEXT) \
+ unit/buffered_write_stream$(EXEEXT) unit/buffer$(EXEEXT) \
+ unit/buffer_registration$(EXEEXT) \
+ unit/buffers_iterator$(EXEEXT) \
+ unit/cancellation_signal$(EXEEXT) \
+ unit/cancellation_state$(EXEEXT) \
+ unit/cancellation_type$(EXEEXT) unit/co_spawn$(EXEEXT) \
+ unit/completion_condition$(EXEEXT) unit/compose$(EXEEXT) \
+ unit/connect$(EXEEXT) unit/connect_pipe$(EXEEXT) \
+ unit/consign$(EXEEXT) unit/coroutine$(EXEEXT) \
+ unit/deadline_timer$(EXEEXT) unit/defer$(EXEEXT) \
+ unit/deferred$(EXEEXT) unit/detached$(EXEEXT) \
+ unit/dispatch$(EXEEXT) unit/error$(EXEEXT) \
+ unit/execution/any_executor$(EXEEXT) \
+ unit/execution/blocking$(EXEEXT) \
+ unit/execution/blocking_adaptation$(EXEEXT) \
+ unit/execution/context_as$(EXEEXT) \
+ unit/execution/executor$(EXEEXT) \
+ unit/execution/invocable_archetype$(EXEEXT) \
+ unit/execution/mapping$(EXEEXT) \
+ unit/execution/outstanding_work$(EXEEXT) \
+ unit/execution/prefer_only$(EXEEXT) \
+ unit/execution/relationship$(EXEEXT) \
+ unit/execution_context$(EXEEXT) unit/executor$(EXEEXT) \
+ unit/executor_work_guard$(EXEEXT) unit/file_base$(EXEEXT) \
+ unit/generic/basic_endpoint$(EXEEXT) \
+ unit/generic/datagram_protocol$(EXEEXT) \
+ unit/generic/raw_protocol$(EXEEXT) \
+ unit/generic/seq_packet_protocol$(EXEEXT) \
+ unit/generic/stream_protocol$(EXEEXT) \
+ unit/high_resolution_timer$(EXEEXT) unit/io_context$(EXEEXT) \
+ unit/io_context_strand$(EXEEXT) unit/ip/address$(EXEEXT) \
+ unit/ip/address_v4$(EXEEXT) \
+ unit/ip/address_v4_iterator$(EXEEXT) \
+ unit/ip/address_v4_range$(EXEEXT) unit/ip/address_v6$(EXEEXT) \
+ unit/ip/address_v6_iterator$(EXEEXT) \
+ unit/ip/address_v6_range$(EXEEXT) \
+ unit/ip/basic_endpoint$(EXEEXT) \
+ unit/ip/basic_resolver$(EXEEXT) \
+ unit/ip/basic_resolver_entry$(EXEEXT) \
+ unit/ip/basic_resolver_iterator$(EXEEXT) \
+ unit/ip/basic_resolver_query$(EXEEXT) \
+ unit/ip/host_name$(EXEEXT) unit/ip/icmp$(EXEEXT) \
+ unit/ip/multicast$(EXEEXT) unit/ip/network_v4$(EXEEXT) \
+ unit/ip/network_v6$(EXEEXT) \
+ unit/ip/resolver_query_base$(EXEEXT) unit/ip/tcp$(EXEEXT) \
+ unit/ip/udp$(EXEEXT) unit/ip/unicast$(EXEEXT) \
+ unit/ip/v6_only$(EXEEXT) unit/is_read_buffered$(EXEEXT) \
+ unit/is_write_buffered$(EXEEXT) \
+ unit/local/basic_endpoint$(EXEEXT) \
+ unit/local/connect_pair$(EXEEXT) \
+ unit/local/datagram_protocol$(EXEEXT) \
+ unit/local/seq_packet_protocol$(EXEEXT) \
+ unit/local/stream_protocol$(EXEEXT) \
+ unit/packaged_task$(EXEEXT) unit/placeholders$(EXEEXT) \
+ unit/posix/basic_descriptor$(EXEEXT) \
+ unit/posix/basic_stream_descriptor$(EXEEXT) \
+ unit/posix/descriptor$(EXEEXT) \
+ unit/posix/descriptor_base$(EXEEXT) \
+ unit/posix/stream_descriptor$(EXEEXT) unit/post$(EXEEXT) \
+ unit/prepend$(EXEEXT) unit/random_access_file$(EXEEXT) \
+ unit/read$(EXEEXT) unit/read_at$(EXEEXT) \
+ unit/read_until$(EXEEXT) unit/readable_pipe$(EXEEXT) \
+ unit/recycling_allocator$(EXEEXT) unit/redirect_error$(EXEEXT) \
+ unit/registered_buffer$(EXEEXT) unit/serial_port$(EXEEXT) \
+ unit/serial_port_base$(EXEEXT) unit/signal_set$(EXEEXT) \
+ unit/signal_set_base$(EXEEXT) unit/socket_base$(EXEEXT) \
+ unit/static_thread_pool$(EXEEXT) unit/steady_timer$(EXEEXT) \
+ unit/strand$(EXEEXT) unit/stream_file$(EXEEXT) \
+ unit/streambuf$(EXEEXT) unit/system_context$(EXEEXT) \
+ unit/system_executor$(EXEEXT) unit/system_timer$(EXEEXT) \
+ unit/this_coro$(EXEEXT) unit/thread$(EXEEXT) \
+ unit/thread_pool$(EXEEXT) unit/time_traits$(EXEEXT) \
+ unit/ts/buffer$(EXEEXT) unit/ts/executor$(EXEEXT) \
+ unit/ts/internet$(EXEEXT) unit/ts/io_context$(EXEEXT) \
+ unit/ts/net$(EXEEXT) unit/ts/netfwd$(EXEEXT) \
+ unit/ts/socket$(EXEEXT) unit/ts/timer$(EXEEXT) \
+ unit/use_awaitable$(EXEEXT) unit/use_future$(EXEEXT) \
+ unit/uses_executor$(EXEEXT) unit/wait_traits$(EXEEXT) \
+ unit/windows/basic_object_handle$(EXEEXT) \
+ unit/windows/basic_overlapped_handle$(EXEEXT) \
+ unit/windows/basic_random_access_handle$(EXEEXT) \
+ unit/windows/basic_stream_handle$(EXEEXT) \
+ unit/windows/object_handle$(EXEEXT) \
+ unit/windows/overlapped_handle$(EXEEXT) \
+ unit/windows/overlapped_ptr$(EXEEXT) \
+ unit/windows/random_access_handle$(EXEEXT) \
+ unit/windows/stream_handle$(EXEEXT) \
+ unit/writable_pipe$(EXEEXT) unit/write$(EXEEXT) \
+ unit/write_at$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
+ $(am__EXEEXT_3) $(am__EXEEXT_4)
+@STANDALONE_FALSE@noinst_PROGRAMS = latency/tcp_client$(EXEEXT) \
+@STANDALONE_FALSE@ latency/tcp_server$(EXEEXT) \
+@STANDALONE_FALSE@ latency/udp_client$(EXEEXT) \
+@STANDALONE_FALSE@ latency/udp_server$(EXEEXT) \
+@STANDALONE_FALSE@ performance/client$(EXEEXT) \
+@STANDALONE_FALSE@ performance/server$(EXEEXT)
+@HAVE_CXX11_TRUE@am__append_2 = \
+@HAVE_CXX11_TRUE@ unit/experimental/basic_channel \
+@HAVE_CXX11_TRUE@ unit/experimental/basic_concurrent_channel \
+@HAVE_CXX11_TRUE@ unit/experimental/channel \
+@HAVE_CXX11_TRUE@ unit/experimental/channel_traits \
+@HAVE_CXX11_TRUE@ unit/experimental/concurrent_channel \
+@HAVE_CXX11_TRUE@ unit/experimental/parallel_group
+
+@HAVE_CXX20_TRUE@am__append_3 = \
+@HAVE_CXX20_TRUE@ unit/experimental/promise
+
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am__append_4 = \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/awaitable_operators \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/co_composed \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/allocator \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/cancel \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/co_spawn \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/exception \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/executor \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/partial \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/simple_test \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/stack_test \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/use_coro
+
+@HAVE_OPENSSL_TRUE@am__append_5 = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/context_base \
+@HAVE_OPENSSL_TRUE@ unit/ssl/context \
+@HAVE_OPENSSL_TRUE@ unit/ssl/error \
+@HAVE_OPENSSL_TRUE@ unit/ssl/host_name_verification \
+@HAVE_OPENSSL_TRUE@ unit/ssl/rfc2818_verification \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream_base \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream
+
+TESTS = unit/any_completion_executor$(EXEEXT) \
+ unit/any_completion_handler$(EXEEXT) \
+ unit/any_io_executor$(EXEEXT) unit/append$(EXEEXT) \
+ unit/as_tuple$(EXEEXT) unit/associated_allocator$(EXEEXT) \
+ unit/associated_cancellation_slot$(EXEEXT) \
+ unit/associated_executor$(EXEEXT) \
+ unit/associated_immediate_executor$(EXEEXT) \
+ unit/associator$(EXEEXT) unit/async_result$(EXEEXT) \
+ unit/awaitable$(EXEEXT) unit/basic_datagram_socket$(EXEEXT) \
+ unit/basic_deadline_timer$(EXEEXT) unit/basic_file$(EXEEXT) \
+ unit/basic_random_access_file$(EXEEXT) \
+ unit/basic_raw_socket$(EXEEXT) \
+ unit/basic_readable_pipe$(EXEEXT) \
+ unit/basic_seq_packet_socket$(EXEEXT) \
+ unit/basic_serial_port$(EXEEXT) unit/basic_signal_set$(EXEEXT) \
+ unit/basic_socket$(EXEEXT) unit/basic_socket_acceptor$(EXEEXT) \
+ unit/basic_stream_file$(EXEEXT) \
+ unit/basic_stream_socket$(EXEEXT) \
+ unit/basic_streambuf$(EXEEXT) \
+ unit/basic_waitable_timer$(EXEEXT) \
+ unit/basic_writable_pipe$(EXEEXT) unit/bind_allocator$(EXEEXT) \
+ unit/bind_cancellation_slot$(EXEEXT) \
+ unit/bind_executor$(EXEEXT) \
+ unit/bind_immediate_executor$(EXEEXT) \
+ unit/buffered_read_stream$(EXEEXT) \
+ unit/buffered_stream$(EXEEXT) \
+ unit/buffered_write_stream$(EXEEXT) unit/buffer$(EXEEXT) \
+ unit/buffer_registration$(EXEEXT) \
+ unit/buffers_iterator$(EXEEXT) \
+ unit/cancellation_signal$(EXEEXT) \
+ unit/cancellation_state$(EXEEXT) \
+ unit/cancellation_type$(EXEEXT) unit/co_spawn$(EXEEXT) \
+ unit/completion_condition$(EXEEXT) unit/compose$(EXEEXT) \
+ unit/connect$(EXEEXT) unit/connect_pipe$(EXEEXT) \
+ unit/consign$(EXEEXT) unit/deadline_timer$(EXEEXT) \
+ unit/defer$(EXEEXT) unit/deferred$(EXEEXT) \
+ unit/detached$(EXEEXT) unit/dispatch$(EXEEXT) \
+ unit/error$(EXEEXT) unit/execution/any_executor$(EXEEXT) \
+ unit/execution/blocking$(EXEEXT) \
+ unit/execution/blocking_adaptation$(EXEEXT) \
+ unit/execution/context_as$(EXEEXT) \
+ unit/execution/executor$(EXEEXT) \
+ unit/execution/invocable_archetype$(EXEEXT) \
+ unit/execution/mapping$(EXEEXT) \
+ unit/execution/outstanding_work$(EXEEXT) \
+ unit/execution/prefer_only$(EXEEXT) \
+ unit/execution/relationship$(EXEEXT) \
+ unit/execution_context$(EXEEXT) unit/executor$(EXEEXT) \
+ unit/executor_work_guard$(EXEEXT) unit/file_base$(EXEEXT) \
+ unit/high_resolution_timer$(EXEEXT) unit/io_context$(EXEEXT) \
+ unit/io_context_strand$(EXEEXT) unit/ip/address$(EXEEXT) \
+ unit/ip/address_v4$(EXEEXT) \
+ unit/ip/address_v4_iterator$(EXEEXT) \
+ unit/ip/address_v4_range$(EXEEXT) unit/ip/address_v6$(EXEEXT) \
+ unit/ip/address_v6_iterator$(EXEEXT) \
+ unit/ip/address_v6_range$(EXEEXT) \
+ unit/ip/basic_endpoint$(EXEEXT) \
+ unit/ip/basic_resolver$(EXEEXT) \
+ unit/ip/basic_resolver_entry$(EXEEXT) \
+ unit/ip/basic_resolver_iterator$(EXEEXT) \
+ unit/ip/basic_resolver_query$(EXEEXT) \
+ unit/ip/host_name$(EXEEXT) unit/ip/icmp$(EXEEXT) \
+ unit/ip/multicast$(EXEEXT) unit/ip/network_v4$(EXEEXT) \
+ unit/ip/network_v6$(EXEEXT) \
+ unit/ip/resolver_query_base$(EXEEXT) unit/ip/tcp$(EXEEXT) \
+ unit/ip/udp$(EXEEXT) unit/ip/unicast$(EXEEXT) \
+ unit/ip/v6_only$(EXEEXT) unit/is_read_buffered$(EXEEXT) \
+ unit/is_write_buffered$(EXEEXT) \
+ unit/local/basic_endpoint$(EXEEXT) \
+ unit/local/connect_pair$(EXEEXT) \
+ unit/local/datagram_protocol$(EXEEXT) \
+ unit/local/seq_packet_protocol$(EXEEXT) \
+ unit/local/stream_protocol$(EXEEXT) \
+ unit/packaged_task$(EXEEXT) unit/placeholders$(EXEEXT) \
+ unit/posix/basic_descriptor$(EXEEXT) \
+ unit/posix/basic_stream_descriptor$(EXEEXT) \
+ unit/posix/descriptor$(EXEEXT) \
+ unit/posix/descriptor_base$(EXEEXT) \
+ unit/posix/stream_descriptor$(EXEEXT) unit/post$(EXEEXT) \
+ unit/prepend$(EXEEXT) unit/random_access_file$(EXEEXT) \
+ unit/read$(EXEEXT) unit/read_at$(EXEEXT) \
+ unit/read_until$(EXEEXT) unit/readable_pipe$(EXEEXT) \
+ unit/recycling_allocator$(EXEEXT) unit/redirect_error$(EXEEXT) \
+ unit/registered_buffer$(EXEEXT) unit/serial_port$(EXEEXT) \
+ unit/serial_port_base$(EXEEXT) unit/signal_set$(EXEEXT) \
+ unit/signal_set_base$(EXEEXT) unit/socket_base$(EXEEXT) \
+ unit/static_thread_pool$(EXEEXT) unit/steady_timer$(EXEEXT) \
+ unit/strand$(EXEEXT) unit/stream_file$(EXEEXT) \
+ unit/streambuf$(EXEEXT) unit/system_context$(EXEEXT) \
+ unit/system_executor$(EXEEXT) unit/system_timer$(EXEEXT) \
+ unit/this_coro$(EXEEXT) unit/thread$(EXEEXT) \
+ unit/thread_pool$(EXEEXT) unit/time_traits$(EXEEXT) \
+ unit/ts/buffer$(EXEEXT) unit/ts/executor$(EXEEXT) \
+ unit/ts/internet$(EXEEXT) unit/ts/io_context$(EXEEXT) \
+ unit/ts/net$(EXEEXT) unit/ts/netfwd$(EXEEXT) \
+ unit/ts/socket$(EXEEXT) unit/ts/timer$(EXEEXT) \
+ unit/use_awaitable$(EXEEXT) unit/use_future$(EXEEXT) \
+ unit/uses_executor$(EXEEXT) unit/wait_traits$(EXEEXT) \
+ unit/windows/basic_object_handle$(EXEEXT) \
+ unit/windows/basic_overlapped_handle$(EXEEXT) \
+ unit/windows/basic_random_access_handle$(EXEEXT) \
+ unit/windows/basic_stream_handle$(EXEEXT) \
+ unit/windows/object_handle$(EXEEXT) \
+ unit/windows/overlapped_handle$(EXEEXT) \
+ unit/windows/overlapped_ptr$(EXEEXT) \
+ unit/windows/random_access_handle$(EXEEXT) \
+ unit/windows/stream_handle$(EXEEXT) \
+ unit/writable_pipe$(EXEEXT) unit/write$(EXEEXT) \
+ unit/write_at$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
+ $(am__EXEEXT_3) $(am__EXEEXT_4)
+@HAVE_CXX11_TRUE@am__append_6 = \
+@HAVE_CXX11_TRUE@ unit/experimental/basic_channel \
+@HAVE_CXX11_TRUE@ unit/experimental/basic_concurrent_channel \
+@HAVE_CXX11_TRUE@ unit/experimental/channel \
+@HAVE_CXX11_TRUE@ unit/experimental/channel_traits \
+@HAVE_CXX11_TRUE@ unit/experimental/concurrent_channel \
+@HAVE_CXX11_TRUE@ unit/experimental/parallel_group
+
+@HAVE_CXX20_TRUE@am__append_7 = \
+@HAVE_CXX20_TRUE@ unit/experimental/promise
+
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am__append_8 = \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/awaitable_operators \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/co_composed \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/allocator \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/cancel \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/co_spawn \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/exception \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/executor \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/partial \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/simple_test \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/stack_test \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/use_coro
+
+@HAVE_OPENSSL_TRUE@am__append_9 = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/context_base \
+@HAVE_OPENSSL_TRUE@ unit/ssl/context \
+@HAVE_OPENSSL_TRUE@ unit/ssl/error \
+@HAVE_OPENSSL_TRUE@ unit/ssl/host_name_verification \
+@HAVE_OPENSSL_TRUE@ unit/ssl/rfc2818_verification \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream_base \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream
+
+subdir = src/tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+ $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+@HAVE_CXX11_TRUE@am__EXEEXT_1 = \
+@HAVE_CXX11_TRUE@ unit/experimental/basic_channel$(EXEEXT) \
+@HAVE_CXX11_TRUE@ unit/experimental/basic_concurrent_channel$(EXEEXT) \
+@HAVE_CXX11_TRUE@ unit/experimental/channel$(EXEEXT) \
+@HAVE_CXX11_TRUE@ unit/experimental/channel_traits$(EXEEXT) \
+@HAVE_CXX11_TRUE@ unit/experimental/concurrent_channel$(EXEEXT) \
+@HAVE_CXX11_TRUE@ unit/experimental/parallel_group$(EXEEXT)
+@HAVE_CXX20_TRUE@am__EXEEXT_2 = unit/experimental/promise$(EXEEXT)
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am__EXEEXT_3 = unit/experimental/awaitable_operators$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/co_composed$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/allocator$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/cancel$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/co_spawn$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/exception$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/executor$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/partial$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/simple_test$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/stack_test$(EXEEXT) \
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@ unit/experimental/coro/use_coro$(EXEEXT)
+@HAVE_OPENSSL_TRUE@am__EXEEXT_4 = unit/ssl/context_base$(EXEEXT) \
+@HAVE_OPENSSL_TRUE@ unit/ssl/context$(EXEEXT) \
+@HAVE_OPENSSL_TRUE@ unit/ssl/error$(EXEEXT) \
+@HAVE_OPENSSL_TRUE@ unit/ssl/host_name_verification$(EXEEXT) \
+@HAVE_OPENSSL_TRUE@ unit/ssl/rfc2818_verification$(EXEEXT) \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream_base$(EXEEXT) \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream$(EXEEXT)
+PROGRAMS = $(noinst_PROGRAMS)
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libasio_a_AR = $(AR) $(ARFLAGS)
+libasio_a_LIBADD =
+am__libasio_a_SOURCES_DIST = ../asio.cpp ../asio_ssl.cpp
+am__dirstamp = $(am__leading_dot)dirstamp
+@HAVE_OPENSSL_TRUE@@SEPARATE_COMPILATION_TRUE@am__objects_1 = ../asio_ssl.$(OBJEXT)
+@SEPARATE_COMPILATION_TRUE@am_libasio_a_OBJECTS = ../asio.$(OBJEXT) \
+@SEPARATE_COMPILATION_TRUE@ $(am__objects_1)
+libasio_a_OBJECTS = $(am_libasio_a_OBJECTS)
+am__latency_tcp_client_SOURCES_DIST = latency/tcp_client.cpp
+@STANDALONE_FALSE@am_latency_tcp_client_OBJECTS = \
+@STANDALONE_FALSE@ latency/tcp_client.$(OBJEXT)
+latency_tcp_client_OBJECTS = $(am_latency_tcp_client_OBJECTS)
+latency_tcp_client_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@latency_tcp_client_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__latency_tcp_server_SOURCES_DIST = latency/tcp_server.cpp
+@STANDALONE_FALSE@am_latency_tcp_server_OBJECTS = \
+@STANDALONE_FALSE@ latency/tcp_server.$(OBJEXT)
+latency_tcp_server_OBJECTS = $(am_latency_tcp_server_OBJECTS)
+latency_tcp_server_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@latency_tcp_server_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__latency_udp_client_SOURCES_DIST = latency/udp_client.cpp
+@STANDALONE_FALSE@am_latency_udp_client_OBJECTS = \
+@STANDALONE_FALSE@ latency/udp_client.$(OBJEXT)
+latency_udp_client_OBJECTS = $(am_latency_udp_client_OBJECTS)
+latency_udp_client_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@latency_udp_client_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__latency_udp_server_SOURCES_DIST = latency/udp_server.cpp
+@STANDALONE_FALSE@am_latency_udp_server_OBJECTS = \
+@STANDALONE_FALSE@ latency/udp_server.$(OBJEXT)
+latency_udp_server_OBJECTS = $(am_latency_udp_server_OBJECTS)
+latency_udp_server_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@latency_udp_server_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__performance_client_SOURCES_DIST = performance/client.cpp
+@STANDALONE_FALSE@am_performance_client_OBJECTS = \
+@STANDALONE_FALSE@ performance/client.$(OBJEXT)
+performance_client_OBJECTS = $(am_performance_client_OBJECTS)
+performance_client_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@performance_client_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__performance_server_SOURCES_DIST = performance/server.cpp
+@STANDALONE_FALSE@am_performance_server_OBJECTS = \
+@STANDALONE_FALSE@ performance/server.$(OBJEXT)
+performance_server_OBJECTS = $(am_performance_server_OBJECTS)
+performance_server_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@performance_server_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_any_completion_executor_OBJECTS = \
+ unit/any_completion_executor.$(OBJEXT)
+unit_any_completion_executor_OBJECTS = \
+ $(am_unit_any_completion_executor_OBJECTS)
+unit_any_completion_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_any_completion_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_any_completion_handler_OBJECTS = \
+ unit/any_completion_handler.$(OBJEXT)
+unit_any_completion_handler_OBJECTS = \
+ $(am_unit_any_completion_handler_OBJECTS)
+unit_any_completion_handler_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_any_completion_handler_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_any_io_executor_OBJECTS = unit/any_io_executor.$(OBJEXT)
+unit_any_io_executor_OBJECTS = $(am_unit_any_io_executor_OBJECTS)
+unit_any_io_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_any_io_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_append_OBJECTS = unit/append.$(OBJEXT)
+unit_append_OBJECTS = $(am_unit_append_OBJECTS)
+unit_append_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_append_DEPENDENCIES = libasio.a
+am_unit_as_tuple_OBJECTS = unit/as_tuple.$(OBJEXT)
+unit_as_tuple_OBJECTS = $(am_unit_as_tuple_OBJECTS)
+unit_as_tuple_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_as_tuple_DEPENDENCIES = libasio.a
+am_unit_associated_allocator_OBJECTS = \
+ unit/associated_allocator.$(OBJEXT)
+unit_associated_allocator_OBJECTS = \
+ $(am_unit_associated_allocator_OBJECTS)
+unit_associated_allocator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_associated_allocator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_associated_cancellation_slot_OBJECTS = \
+ unit/associated_cancellation_slot.$(OBJEXT)
+unit_associated_cancellation_slot_OBJECTS = \
+ $(am_unit_associated_cancellation_slot_OBJECTS)
+unit_associated_cancellation_slot_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_associated_cancellation_slot_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_associated_executor_OBJECTS = \
+ unit/associated_executor.$(OBJEXT)
+unit_associated_executor_OBJECTS = \
+ $(am_unit_associated_executor_OBJECTS)
+unit_associated_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_associated_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_associated_immediate_executor_OBJECTS = \
+ unit/associated_immediate_executor.$(OBJEXT)
+unit_associated_immediate_executor_OBJECTS = \
+ $(am_unit_associated_immediate_executor_OBJECTS)
+unit_associated_immediate_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_associated_immediate_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_associator_OBJECTS = unit/associator.$(OBJEXT)
+unit_associator_OBJECTS = $(am_unit_associator_OBJECTS)
+unit_associator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_associator_DEPENDENCIES = libasio.a
+am_unit_async_result_OBJECTS = unit/async_result.$(OBJEXT)
+unit_async_result_OBJECTS = $(am_unit_async_result_OBJECTS)
+unit_async_result_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_async_result_DEPENDENCIES = libasio.a
+am_unit_awaitable_OBJECTS = unit/awaitable.$(OBJEXT)
+unit_awaitable_OBJECTS = $(am_unit_awaitable_OBJECTS)
+unit_awaitable_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_awaitable_DEPENDENCIES = libasio.a
+am_unit_basic_datagram_socket_OBJECTS = \
+ unit/basic_datagram_socket.$(OBJEXT)
+unit_basic_datagram_socket_OBJECTS = \
+ $(am_unit_basic_datagram_socket_OBJECTS)
+unit_basic_datagram_socket_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_datagram_socket_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_deadline_timer_OBJECTS = \
+ unit/basic_deadline_timer.$(OBJEXT)
+unit_basic_deadline_timer_OBJECTS = \
+ $(am_unit_basic_deadline_timer_OBJECTS)
+unit_basic_deadline_timer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_deadline_timer_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_file_OBJECTS = unit/basic_file.$(OBJEXT)
+unit_basic_file_OBJECTS = $(am_unit_basic_file_OBJECTS)
+unit_basic_file_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_file_DEPENDENCIES = libasio.a
+am_unit_basic_random_access_file_OBJECTS = \
+ unit/basic_random_access_file.$(OBJEXT)
+unit_basic_random_access_file_OBJECTS = \
+ $(am_unit_basic_random_access_file_OBJECTS)
+unit_basic_random_access_file_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_random_access_file_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_raw_socket_OBJECTS = unit/basic_raw_socket.$(OBJEXT)
+unit_basic_raw_socket_OBJECTS = $(am_unit_basic_raw_socket_OBJECTS)
+unit_basic_raw_socket_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_raw_socket_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_readable_pipe_OBJECTS = \
+ unit/basic_readable_pipe.$(OBJEXT)
+unit_basic_readable_pipe_OBJECTS = \
+ $(am_unit_basic_readable_pipe_OBJECTS)
+unit_basic_readable_pipe_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_readable_pipe_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_seq_packet_socket_OBJECTS = \
+ unit/basic_seq_packet_socket.$(OBJEXT)
+unit_basic_seq_packet_socket_OBJECTS = \
+ $(am_unit_basic_seq_packet_socket_OBJECTS)
+unit_basic_seq_packet_socket_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_seq_packet_socket_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_serial_port_OBJECTS = unit/basic_serial_port.$(OBJEXT)
+unit_basic_serial_port_OBJECTS = $(am_unit_basic_serial_port_OBJECTS)
+unit_basic_serial_port_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_serial_port_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_signal_set_OBJECTS = unit/basic_signal_set.$(OBJEXT)
+unit_basic_signal_set_OBJECTS = $(am_unit_basic_signal_set_OBJECTS)
+unit_basic_signal_set_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_signal_set_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_socket_OBJECTS = unit/basic_socket.$(OBJEXT)
+unit_basic_socket_OBJECTS = $(am_unit_basic_socket_OBJECTS)
+unit_basic_socket_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_socket_DEPENDENCIES = libasio.a
+am_unit_basic_socket_acceptor_OBJECTS = \
+ unit/basic_socket_acceptor.$(OBJEXT)
+unit_basic_socket_acceptor_OBJECTS = \
+ $(am_unit_basic_socket_acceptor_OBJECTS)
+unit_basic_socket_acceptor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_socket_acceptor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_stream_file_OBJECTS = unit/basic_stream_file.$(OBJEXT)
+unit_basic_stream_file_OBJECTS = $(am_unit_basic_stream_file_OBJECTS)
+unit_basic_stream_file_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_stream_file_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_stream_socket_OBJECTS = \
+ unit/basic_stream_socket.$(OBJEXT)
+unit_basic_stream_socket_OBJECTS = \
+ $(am_unit_basic_stream_socket_OBJECTS)
+unit_basic_stream_socket_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_stream_socket_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_streambuf_OBJECTS = unit/basic_streambuf.$(OBJEXT)
+unit_basic_streambuf_OBJECTS = $(am_unit_basic_streambuf_OBJECTS)
+unit_basic_streambuf_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_streambuf_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_waitable_timer_OBJECTS = \
+ unit/basic_waitable_timer.$(OBJEXT)
+unit_basic_waitable_timer_OBJECTS = \
+ $(am_unit_basic_waitable_timer_OBJECTS)
+unit_basic_waitable_timer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_waitable_timer_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_basic_writable_pipe_OBJECTS = \
+ unit/basic_writable_pipe.$(OBJEXT)
+unit_basic_writable_pipe_OBJECTS = \
+ $(am_unit_basic_writable_pipe_OBJECTS)
+unit_basic_writable_pipe_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_basic_writable_pipe_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_bind_allocator_OBJECTS = unit/bind_allocator.$(OBJEXT)
+unit_bind_allocator_OBJECTS = $(am_unit_bind_allocator_OBJECTS)
+unit_bind_allocator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_bind_allocator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_bind_cancellation_slot_OBJECTS = \
+ unit/bind_cancellation_slot.$(OBJEXT)
+unit_bind_cancellation_slot_OBJECTS = \
+ $(am_unit_bind_cancellation_slot_OBJECTS)
+unit_bind_cancellation_slot_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_bind_cancellation_slot_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_bind_executor_OBJECTS = unit/bind_executor.$(OBJEXT)
+unit_bind_executor_OBJECTS = $(am_unit_bind_executor_OBJECTS)
+unit_bind_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_bind_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_bind_immediate_executor_OBJECTS = \
+ unit/bind_immediate_executor.$(OBJEXT)
+unit_bind_immediate_executor_OBJECTS = \
+ $(am_unit_bind_immediate_executor_OBJECTS)
+unit_bind_immediate_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_bind_immediate_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_buffer_OBJECTS = unit/buffer.$(OBJEXT)
+unit_buffer_OBJECTS = $(am_unit_buffer_OBJECTS)
+unit_buffer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_buffer_DEPENDENCIES = libasio.a
+am_unit_buffer_registration_OBJECTS = \
+ unit/buffer_registration.$(OBJEXT)
+unit_buffer_registration_OBJECTS = \
+ $(am_unit_buffer_registration_OBJECTS)
+unit_buffer_registration_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_buffer_registration_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_buffered_read_stream_OBJECTS = \
+ unit/buffered_read_stream.$(OBJEXT)
+unit_buffered_read_stream_OBJECTS = \
+ $(am_unit_buffered_read_stream_OBJECTS)
+unit_buffered_read_stream_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_buffered_read_stream_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_buffered_stream_OBJECTS = unit/buffered_stream.$(OBJEXT)
+unit_buffered_stream_OBJECTS = $(am_unit_buffered_stream_OBJECTS)
+unit_buffered_stream_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_buffered_stream_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_buffered_write_stream_OBJECTS = \
+ unit/buffered_write_stream.$(OBJEXT)
+unit_buffered_write_stream_OBJECTS = \
+ $(am_unit_buffered_write_stream_OBJECTS)
+unit_buffered_write_stream_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_buffered_write_stream_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_buffers_iterator_OBJECTS = unit/buffers_iterator.$(OBJEXT)
+unit_buffers_iterator_OBJECTS = $(am_unit_buffers_iterator_OBJECTS)
+unit_buffers_iterator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_buffers_iterator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_cancellation_signal_OBJECTS = \
+ unit/cancellation_signal.$(OBJEXT)
+unit_cancellation_signal_OBJECTS = \
+ $(am_unit_cancellation_signal_OBJECTS)
+unit_cancellation_signal_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_cancellation_signal_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_cancellation_state_OBJECTS = \
+ unit/cancellation_state.$(OBJEXT)
+unit_cancellation_state_OBJECTS = \
+ $(am_unit_cancellation_state_OBJECTS)
+unit_cancellation_state_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_cancellation_state_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_cancellation_type_OBJECTS = unit/cancellation_type.$(OBJEXT)
+unit_cancellation_type_OBJECTS = $(am_unit_cancellation_type_OBJECTS)
+unit_cancellation_type_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_cancellation_type_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_co_spawn_OBJECTS = unit/co_spawn.$(OBJEXT)
+unit_co_spawn_OBJECTS = $(am_unit_co_spawn_OBJECTS)
+unit_co_spawn_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_co_spawn_DEPENDENCIES = libasio.a
+am_unit_completion_condition_OBJECTS = \
+ unit/completion_condition.$(OBJEXT)
+unit_completion_condition_OBJECTS = \
+ $(am_unit_completion_condition_OBJECTS)
+unit_completion_condition_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_completion_condition_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_compose_OBJECTS = unit/compose.$(OBJEXT)
+unit_compose_OBJECTS = $(am_unit_compose_OBJECTS)
+unit_compose_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_compose_DEPENDENCIES = libasio.a
+am_unit_connect_OBJECTS = unit/connect.$(OBJEXT)
+unit_connect_OBJECTS = $(am_unit_connect_OBJECTS)
+unit_connect_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_connect_DEPENDENCIES = libasio.a
+am_unit_connect_pipe_OBJECTS = unit/connect_pipe.$(OBJEXT)
+unit_connect_pipe_OBJECTS = $(am_unit_connect_pipe_OBJECTS)
+unit_connect_pipe_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_connect_pipe_DEPENDENCIES = libasio.a
+am_unit_consign_OBJECTS = unit/consign.$(OBJEXT)
+unit_consign_OBJECTS = $(am_unit_consign_OBJECTS)
+unit_consign_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_consign_DEPENDENCIES = libasio.a
+am_unit_coroutine_OBJECTS = unit/coroutine.$(OBJEXT)
+unit_coroutine_OBJECTS = $(am_unit_coroutine_OBJECTS)
+unit_coroutine_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_coroutine_DEPENDENCIES = libasio.a
+am_unit_deadline_timer_OBJECTS = unit/deadline_timer.$(OBJEXT)
+unit_deadline_timer_OBJECTS = $(am_unit_deadline_timer_OBJECTS)
+unit_deadline_timer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_deadline_timer_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_defer_OBJECTS = unit/defer.$(OBJEXT)
+unit_defer_OBJECTS = $(am_unit_defer_OBJECTS)
+unit_defer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_defer_DEPENDENCIES = libasio.a
+am_unit_deferred_OBJECTS = unit/deferred.$(OBJEXT)
+unit_deferred_OBJECTS = $(am_unit_deferred_OBJECTS)
+unit_deferred_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_deferred_DEPENDENCIES = libasio.a
+am_unit_detached_OBJECTS = unit/detached.$(OBJEXT)
+unit_detached_OBJECTS = $(am_unit_detached_OBJECTS)
+unit_detached_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_detached_DEPENDENCIES = libasio.a
+am_unit_dispatch_OBJECTS = unit/dispatch.$(OBJEXT)
+unit_dispatch_OBJECTS = $(am_unit_dispatch_OBJECTS)
+unit_dispatch_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_dispatch_DEPENDENCIES = libasio.a
+am_unit_error_OBJECTS = unit/error.$(OBJEXT)
+unit_error_OBJECTS = $(am_unit_error_OBJECTS)
+unit_error_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_error_DEPENDENCIES = libasio.a
+am_unit_execution_any_executor_OBJECTS = \
+ unit/execution/any_executor.$(OBJEXT)
+unit_execution_any_executor_OBJECTS = \
+ $(am_unit_execution_any_executor_OBJECTS)
+unit_execution_any_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_any_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_blocking_OBJECTS = \
+ unit/execution/blocking.$(OBJEXT)
+unit_execution_blocking_OBJECTS = \
+ $(am_unit_execution_blocking_OBJECTS)
+unit_execution_blocking_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_blocking_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_blocking_adaptation_OBJECTS = \
+ unit/execution/blocking_adaptation.$(OBJEXT)
+unit_execution_blocking_adaptation_OBJECTS = \
+ $(am_unit_execution_blocking_adaptation_OBJECTS)
+unit_execution_blocking_adaptation_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_blocking_adaptation_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_context_as_OBJECTS = \
+ unit/execution/context_as.$(OBJEXT)
+unit_execution_context_as_OBJECTS = \
+ $(am_unit_execution_context_as_OBJECTS)
+unit_execution_context_as_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_context_as_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_executor_OBJECTS = \
+ unit/execution/executor.$(OBJEXT)
+unit_execution_executor_OBJECTS = \
+ $(am_unit_execution_executor_OBJECTS)
+unit_execution_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_invocable_archetype_OBJECTS = \
+ unit/execution/invocable_archetype.$(OBJEXT)
+unit_execution_invocable_archetype_OBJECTS = \
+ $(am_unit_execution_invocable_archetype_OBJECTS)
+unit_execution_invocable_archetype_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_invocable_archetype_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_mapping_OBJECTS = unit/execution/mapping.$(OBJEXT)
+unit_execution_mapping_OBJECTS = $(am_unit_execution_mapping_OBJECTS)
+unit_execution_mapping_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_mapping_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_outstanding_work_OBJECTS = \
+ unit/execution/outstanding_work.$(OBJEXT)
+unit_execution_outstanding_work_OBJECTS = \
+ $(am_unit_execution_outstanding_work_OBJECTS)
+unit_execution_outstanding_work_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_outstanding_work_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_prefer_only_OBJECTS = \
+ unit/execution/prefer_only.$(OBJEXT)
+unit_execution_prefer_only_OBJECTS = \
+ $(am_unit_execution_prefer_only_OBJECTS)
+unit_execution_prefer_only_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_prefer_only_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_relationship_OBJECTS = \
+ unit/execution/relationship.$(OBJEXT)
+unit_execution_relationship_OBJECTS = \
+ $(am_unit_execution_relationship_OBJECTS)
+unit_execution_relationship_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_relationship_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_execution_context_OBJECTS = unit/execution_context.$(OBJEXT)
+unit_execution_context_OBJECTS = $(am_unit_execution_context_OBJECTS)
+unit_execution_context_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_execution_context_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_executor_OBJECTS = unit/executor.$(OBJEXT)
+unit_executor_OBJECTS = $(am_unit_executor_OBJECTS)
+unit_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_executor_DEPENDENCIES = libasio.a
+am_unit_executor_work_guard_OBJECTS = \
+ unit/executor_work_guard.$(OBJEXT)
+unit_executor_work_guard_OBJECTS = \
+ $(am_unit_executor_work_guard_OBJECTS)
+unit_executor_work_guard_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_executor_work_guard_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_awaitable_operators_SOURCES_DIST = \
+ unit/experimental/awaitable_operators.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_awaitable_operators_OBJECTS = unit/experimental/awaitable_operators.$(OBJEXT)
+unit_experimental_awaitable_operators_OBJECTS = \
+ $(am_unit_experimental_awaitable_operators_OBJECTS)
+unit_experimental_awaitable_operators_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_awaitable_operators_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_basic_channel_SOURCES_DIST = \
+ unit/experimental/basic_channel.cpp
+@HAVE_CXX11_TRUE@am_unit_experimental_basic_channel_OBJECTS = \
+@HAVE_CXX11_TRUE@ unit/experimental/basic_channel.$(OBJEXT)
+unit_experimental_basic_channel_OBJECTS = \
+ $(am_unit_experimental_basic_channel_OBJECTS)
+unit_experimental_basic_channel_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_basic_channel_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_basic_concurrent_channel_SOURCES_DIST = \
+ unit/experimental/basic_concurrent_channel.cpp
+@HAVE_CXX11_TRUE@am_unit_experimental_basic_concurrent_channel_OBJECTS = unit/experimental/basic_concurrent_channel.$(OBJEXT)
+unit_experimental_basic_concurrent_channel_OBJECTS = \
+ $(am_unit_experimental_basic_concurrent_channel_OBJECTS)
+unit_experimental_basic_concurrent_channel_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_basic_concurrent_channel_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_channel_SOURCES_DIST = \
+ unit/experimental/channel.cpp
+@HAVE_CXX11_TRUE@am_unit_experimental_channel_OBJECTS = \
+@HAVE_CXX11_TRUE@ unit/experimental/channel.$(OBJEXT)
+unit_experimental_channel_OBJECTS = \
+ $(am_unit_experimental_channel_OBJECTS)
+unit_experimental_channel_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_channel_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_channel_traits_SOURCES_DIST = \
+ unit/experimental/channel_traits.cpp
+@HAVE_CXX11_TRUE@am_unit_experimental_channel_traits_OBJECTS = \
+@HAVE_CXX11_TRUE@ unit/experimental/channel_traits.$(OBJEXT)
+unit_experimental_channel_traits_OBJECTS = \
+ $(am_unit_experimental_channel_traits_OBJECTS)
+unit_experimental_channel_traits_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_channel_traits_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_co_composed_SOURCES_DIST = \
+ unit/experimental/co_composed.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_co_composed_OBJECTS = unit/experimental/co_composed.$(OBJEXT)
+unit_experimental_co_composed_OBJECTS = \
+ $(am_unit_experimental_co_composed_OBJECTS)
+unit_experimental_co_composed_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_co_composed_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_concurrent_channel_SOURCES_DIST = \
+ unit/experimental/concurrent_channel.cpp
+@HAVE_CXX11_TRUE@am_unit_experimental_concurrent_channel_OBJECTS = unit/experimental/concurrent_channel.$(OBJEXT)
+unit_experimental_concurrent_channel_OBJECTS = \
+ $(am_unit_experimental_concurrent_channel_OBJECTS)
+unit_experimental_concurrent_channel_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_concurrent_channel_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_allocator_SOURCES_DIST = \
+ unit/experimental/coro/allocator.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_allocator_OBJECTS = unit/experimental/coro/allocator.$(OBJEXT)
+unit_experimental_coro_allocator_OBJECTS = \
+ $(am_unit_experimental_coro_allocator_OBJECTS)
+unit_experimental_coro_allocator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_allocator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_cancel_SOURCES_DIST = \
+ unit/experimental/coro/cancel.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_cancel_OBJECTS = unit/experimental/coro/cancel.$(OBJEXT)
+unit_experimental_coro_cancel_OBJECTS = \
+ $(am_unit_experimental_coro_cancel_OBJECTS)
+unit_experimental_coro_cancel_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_cancel_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_co_spawn_SOURCES_DIST = \
+ unit/experimental/coro/co_spawn.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_co_spawn_OBJECTS = unit/experimental/coro/co_spawn.$(OBJEXT)
+unit_experimental_coro_co_spawn_OBJECTS = \
+ $(am_unit_experimental_coro_co_spawn_OBJECTS)
+unit_experimental_coro_co_spawn_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_co_spawn_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_exception_SOURCES_DIST = \
+ unit/experimental/coro/exception.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_exception_OBJECTS = unit/experimental/coro/exception.$(OBJEXT)
+unit_experimental_coro_exception_OBJECTS = \
+ $(am_unit_experimental_coro_exception_OBJECTS)
+unit_experimental_coro_exception_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_exception_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_executor_SOURCES_DIST = \
+ unit/experimental/coro/executor.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_executor_OBJECTS = unit/experimental/coro/executor.$(OBJEXT)
+unit_experimental_coro_executor_OBJECTS = \
+ $(am_unit_experimental_coro_executor_OBJECTS)
+unit_experimental_coro_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_partial_SOURCES_DIST = \
+ unit/experimental/coro/partial.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_partial_OBJECTS = unit/experimental/coro/partial.$(OBJEXT)
+unit_experimental_coro_partial_OBJECTS = \
+ $(am_unit_experimental_coro_partial_OBJECTS)
+unit_experimental_coro_partial_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_partial_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_simple_test_SOURCES_DIST = \
+ unit/experimental/coro/simple_test.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_simple_test_OBJECTS = unit/experimental/coro/simple_test.$(OBJEXT)
+unit_experimental_coro_simple_test_OBJECTS = \
+ $(am_unit_experimental_coro_simple_test_OBJECTS)
+unit_experimental_coro_simple_test_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_simple_test_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_stack_test_SOURCES_DIST = \
+ unit/experimental/coro/stack_test.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_stack_test_OBJECTS = unit/experimental/coro/stack_test.$(OBJEXT)
+unit_experimental_coro_stack_test_OBJECTS = \
+ $(am_unit_experimental_coro_stack_test_OBJECTS)
+unit_experimental_coro_stack_test_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_stack_test_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_coro_use_coro_SOURCES_DIST = \
+ unit/experimental/coro/use_coro.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@am_unit_experimental_coro_use_coro_OBJECTS = unit/experimental/coro/use_coro.$(OBJEXT)
+unit_experimental_coro_use_coro_OBJECTS = \
+ $(am_unit_experimental_coro_use_coro_OBJECTS)
+unit_experimental_coro_use_coro_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_coro_use_coro_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_parallel_group_SOURCES_DIST = \
+ unit/experimental/parallel_group.cpp
+@HAVE_CXX11_TRUE@am_unit_experimental_parallel_group_OBJECTS = \
+@HAVE_CXX11_TRUE@ unit/experimental/parallel_group.$(OBJEXT)
+unit_experimental_parallel_group_OBJECTS = \
+ $(am_unit_experimental_parallel_group_OBJECTS)
+unit_experimental_parallel_group_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_parallel_group_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_experimental_promise_SOURCES_DIST = \
+ unit/experimental/promise.cpp
+@HAVE_CXX20_TRUE@am_unit_experimental_promise_OBJECTS = \
+@HAVE_CXX20_TRUE@ unit/experimental/promise.$(OBJEXT)
+unit_experimental_promise_OBJECTS = \
+ $(am_unit_experimental_promise_OBJECTS)
+unit_experimental_promise_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_experimental_promise_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_file_base_OBJECTS = unit/file_base.$(OBJEXT)
+unit_file_base_OBJECTS = $(am_unit_file_base_OBJECTS)
+unit_file_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_file_base_DEPENDENCIES = libasio.a
+am_unit_generic_basic_endpoint_OBJECTS = \
+ unit/generic/basic_endpoint.$(OBJEXT)
+unit_generic_basic_endpoint_OBJECTS = \
+ $(am_unit_generic_basic_endpoint_OBJECTS)
+unit_generic_basic_endpoint_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_generic_basic_endpoint_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_generic_datagram_protocol_OBJECTS = \
+ unit/generic/datagram_protocol.$(OBJEXT)
+unit_generic_datagram_protocol_OBJECTS = \
+ $(am_unit_generic_datagram_protocol_OBJECTS)
+unit_generic_datagram_protocol_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_generic_datagram_protocol_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_generic_raw_protocol_OBJECTS = \
+ unit/generic/raw_protocol.$(OBJEXT)
+unit_generic_raw_protocol_OBJECTS = \
+ $(am_unit_generic_raw_protocol_OBJECTS)
+unit_generic_raw_protocol_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_generic_raw_protocol_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_generic_seq_packet_protocol_OBJECTS = \
+ unit/generic/seq_packet_protocol.$(OBJEXT)
+unit_generic_seq_packet_protocol_OBJECTS = \
+ $(am_unit_generic_seq_packet_protocol_OBJECTS)
+unit_generic_seq_packet_protocol_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_generic_seq_packet_protocol_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_generic_stream_protocol_OBJECTS = \
+ unit/generic/stream_protocol.$(OBJEXT)
+unit_generic_stream_protocol_OBJECTS = \
+ $(am_unit_generic_stream_protocol_OBJECTS)
+unit_generic_stream_protocol_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_generic_stream_protocol_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_high_resolution_timer_OBJECTS = \
+ unit/high_resolution_timer.$(OBJEXT)
+unit_high_resolution_timer_OBJECTS = \
+ $(am_unit_high_resolution_timer_OBJECTS)
+unit_high_resolution_timer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_high_resolution_timer_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_io_context_OBJECTS = unit/io_context.$(OBJEXT)
+unit_io_context_OBJECTS = $(am_unit_io_context_OBJECTS)
+unit_io_context_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_io_context_DEPENDENCIES = libasio.a
+am_unit_io_context_strand_OBJECTS = unit/io_context_strand.$(OBJEXT)
+unit_io_context_strand_OBJECTS = $(am_unit_io_context_strand_OBJECTS)
+unit_io_context_strand_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_io_context_strand_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_address_OBJECTS = unit/ip/address.$(OBJEXT)
+unit_ip_address_OBJECTS = $(am_unit_ip_address_OBJECTS)
+unit_ip_address_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_address_DEPENDENCIES = libasio.a
+am_unit_ip_address_v4_OBJECTS = unit/ip/address_v4.$(OBJEXT)
+unit_ip_address_v4_OBJECTS = $(am_unit_ip_address_v4_OBJECTS)
+unit_ip_address_v4_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_address_v4_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_address_v4_iterator_OBJECTS = \
+ unit/ip/address_v4_iterator.$(OBJEXT)
+unit_ip_address_v4_iterator_OBJECTS = \
+ $(am_unit_ip_address_v4_iterator_OBJECTS)
+unit_ip_address_v4_iterator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_address_v4_iterator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_address_v4_range_OBJECTS = \
+ unit/ip/address_v4_range.$(OBJEXT)
+unit_ip_address_v4_range_OBJECTS = \
+ $(am_unit_ip_address_v4_range_OBJECTS)
+unit_ip_address_v4_range_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_address_v4_range_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_address_v6_OBJECTS = unit/ip/address_v6.$(OBJEXT)
+unit_ip_address_v6_OBJECTS = $(am_unit_ip_address_v6_OBJECTS)
+unit_ip_address_v6_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_address_v6_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_address_v6_iterator_OBJECTS = \
+ unit/ip/address_v6_iterator.$(OBJEXT)
+unit_ip_address_v6_iterator_OBJECTS = \
+ $(am_unit_ip_address_v6_iterator_OBJECTS)
+unit_ip_address_v6_iterator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_address_v6_iterator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_address_v6_range_OBJECTS = \
+ unit/ip/address_v6_range.$(OBJEXT)
+unit_ip_address_v6_range_OBJECTS = \
+ $(am_unit_ip_address_v6_range_OBJECTS)
+unit_ip_address_v6_range_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_address_v6_range_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_basic_endpoint_OBJECTS = unit/ip/basic_endpoint.$(OBJEXT)
+unit_ip_basic_endpoint_OBJECTS = $(am_unit_ip_basic_endpoint_OBJECTS)
+unit_ip_basic_endpoint_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_basic_endpoint_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_basic_resolver_OBJECTS = unit/ip/basic_resolver.$(OBJEXT)
+unit_ip_basic_resolver_OBJECTS = $(am_unit_ip_basic_resolver_OBJECTS)
+unit_ip_basic_resolver_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_basic_resolver_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_basic_resolver_entry_OBJECTS = \
+ unit/ip/basic_resolver_entry.$(OBJEXT)
+unit_ip_basic_resolver_entry_OBJECTS = \
+ $(am_unit_ip_basic_resolver_entry_OBJECTS)
+unit_ip_basic_resolver_entry_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_basic_resolver_entry_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_basic_resolver_iterator_OBJECTS = \
+ unit/ip/basic_resolver_iterator.$(OBJEXT)
+unit_ip_basic_resolver_iterator_OBJECTS = \
+ $(am_unit_ip_basic_resolver_iterator_OBJECTS)
+unit_ip_basic_resolver_iterator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_basic_resolver_iterator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_basic_resolver_query_OBJECTS = \
+ unit/ip/basic_resolver_query.$(OBJEXT)
+unit_ip_basic_resolver_query_OBJECTS = \
+ $(am_unit_ip_basic_resolver_query_OBJECTS)
+unit_ip_basic_resolver_query_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_basic_resolver_query_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_host_name_OBJECTS = unit/ip/host_name.$(OBJEXT)
+unit_ip_host_name_OBJECTS = $(am_unit_ip_host_name_OBJECTS)
+unit_ip_host_name_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_host_name_DEPENDENCIES = libasio.a
+am_unit_ip_icmp_OBJECTS = unit/ip/icmp.$(OBJEXT)
+unit_ip_icmp_OBJECTS = $(am_unit_ip_icmp_OBJECTS)
+unit_ip_icmp_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_icmp_DEPENDENCIES = libasio.a
+am_unit_ip_multicast_OBJECTS = unit/ip/multicast.$(OBJEXT)
+unit_ip_multicast_OBJECTS = $(am_unit_ip_multicast_OBJECTS)
+unit_ip_multicast_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_multicast_DEPENDENCIES = libasio.a
+am_unit_ip_network_v4_OBJECTS = unit/ip/network_v4.$(OBJEXT)
+unit_ip_network_v4_OBJECTS = $(am_unit_ip_network_v4_OBJECTS)
+unit_ip_network_v4_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_network_v4_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_network_v6_OBJECTS = unit/ip/network_v6.$(OBJEXT)
+unit_ip_network_v6_OBJECTS = $(am_unit_ip_network_v6_OBJECTS)
+unit_ip_network_v6_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_network_v6_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_resolver_query_base_OBJECTS = \
+ unit/ip/resolver_query_base.$(OBJEXT)
+unit_ip_resolver_query_base_OBJECTS = \
+ $(am_unit_ip_resolver_query_base_OBJECTS)
+unit_ip_resolver_query_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_resolver_query_base_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ip_tcp_OBJECTS = unit/ip/tcp.$(OBJEXT)
+unit_ip_tcp_OBJECTS = $(am_unit_ip_tcp_OBJECTS)
+unit_ip_tcp_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_tcp_DEPENDENCIES = libasio.a
+am_unit_ip_udp_OBJECTS = unit/ip/udp.$(OBJEXT)
+unit_ip_udp_OBJECTS = $(am_unit_ip_udp_OBJECTS)
+unit_ip_udp_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_udp_DEPENDENCIES = libasio.a
+am_unit_ip_unicast_OBJECTS = unit/ip/unicast.$(OBJEXT)
+unit_ip_unicast_OBJECTS = $(am_unit_ip_unicast_OBJECTS)
+unit_ip_unicast_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_unicast_DEPENDENCIES = libasio.a
+am_unit_ip_v6_only_OBJECTS = unit/ip/v6_only.$(OBJEXT)
+unit_ip_v6_only_OBJECTS = $(am_unit_ip_v6_only_OBJECTS)
+unit_ip_v6_only_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ip_v6_only_DEPENDENCIES = libasio.a
+am_unit_is_read_buffered_OBJECTS = unit/is_read_buffered.$(OBJEXT)
+unit_is_read_buffered_OBJECTS = $(am_unit_is_read_buffered_OBJECTS)
+unit_is_read_buffered_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_is_read_buffered_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_is_write_buffered_OBJECTS = unit/is_write_buffered.$(OBJEXT)
+unit_is_write_buffered_OBJECTS = $(am_unit_is_write_buffered_OBJECTS)
+unit_is_write_buffered_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_is_write_buffered_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_local_basic_endpoint_OBJECTS = \
+ unit/local/basic_endpoint.$(OBJEXT)
+unit_local_basic_endpoint_OBJECTS = \
+ $(am_unit_local_basic_endpoint_OBJECTS)
+unit_local_basic_endpoint_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_local_basic_endpoint_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_local_connect_pair_OBJECTS = \
+ unit/local/connect_pair.$(OBJEXT)
+unit_local_connect_pair_OBJECTS = \
+ $(am_unit_local_connect_pair_OBJECTS)
+unit_local_connect_pair_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_local_connect_pair_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_local_datagram_protocol_OBJECTS = \
+ unit/local/datagram_protocol.$(OBJEXT)
+unit_local_datagram_protocol_OBJECTS = \
+ $(am_unit_local_datagram_protocol_OBJECTS)
+unit_local_datagram_protocol_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_local_datagram_protocol_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_local_seq_packet_protocol_OBJECTS = \
+ unit/local/seq_packet_protocol.$(OBJEXT)
+unit_local_seq_packet_protocol_OBJECTS = \
+ $(am_unit_local_seq_packet_protocol_OBJECTS)
+unit_local_seq_packet_protocol_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_local_seq_packet_protocol_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_local_stream_protocol_OBJECTS = \
+ unit/local/stream_protocol.$(OBJEXT)
+unit_local_stream_protocol_OBJECTS = \
+ $(am_unit_local_stream_protocol_OBJECTS)
+unit_local_stream_protocol_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_local_stream_protocol_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_packaged_task_OBJECTS = unit/packaged_task.$(OBJEXT)
+unit_packaged_task_OBJECTS = $(am_unit_packaged_task_OBJECTS)
+unit_packaged_task_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_packaged_task_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_placeholders_OBJECTS = unit/placeholders.$(OBJEXT)
+unit_placeholders_OBJECTS = $(am_unit_placeholders_OBJECTS)
+unit_placeholders_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_placeholders_DEPENDENCIES = libasio.a
+am_unit_posix_basic_descriptor_OBJECTS = \
+ unit/posix/basic_descriptor.$(OBJEXT)
+unit_posix_basic_descriptor_OBJECTS = \
+ $(am_unit_posix_basic_descriptor_OBJECTS)
+unit_posix_basic_descriptor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_posix_basic_descriptor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_posix_basic_stream_descriptor_OBJECTS = \
+ unit/posix/basic_stream_descriptor.$(OBJEXT)
+unit_posix_basic_stream_descriptor_OBJECTS = \
+ $(am_unit_posix_basic_stream_descriptor_OBJECTS)
+unit_posix_basic_stream_descriptor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_posix_basic_stream_descriptor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_posix_descriptor_OBJECTS = unit/posix/descriptor.$(OBJEXT)
+unit_posix_descriptor_OBJECTS = $(am_unit_posix_descriptor_OBJECTS)
+unit_posix_descriptor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_posix_descriptor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_posix_descriptor_base_OBJECTS = \
+ unit/posix/descriptor_base.$(OBJEXT)
+unit_posix_descriptor_base_OBJECTS = \
+ $(am_unit_posix_descriptor_base_OBJECTS)
+unit_posix_descriptor_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_posix_descriptor_base_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_posix_stream_descriptor_OBJECTS = \
+ unit/posix/stream_descriptor.$(OBJEXT)
+unit_posix_stream_descriptor_OBJECTS = \
+ $(am_unit_posix_stream_descriptor_OBJECTS)
+unit_posix_stream_descriptor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_posix_stream_descriptor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_post_OBJECTS = unit/post.$(OBJEXT)
+unit_post_OBJECTS = $(am_unit_post_OBJECTS)
+unit_post_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_post_DEPENDENCIES = libasio.a
+am_unit_prepend_OBJECTS = unit/prepend.$(OBJEXT)
+unit_prepend_OBJECTS = $(am_unit_prepend_OBJECTS)
+unit_prepend_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_prepend_DEPENDENCIES = libasio.a
+am_unit_random_access_file_OBJECTS = \
+ unit/random_access_file.$(OBJEXT)
+unit_random_access_file_OBJECTS = \
+ $(am_unit_random_access_file_OBJECTS)
+unit_random_access_file_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_random_access_file_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_read_OBJECTS = unit/read.$(OBJEXT)
+unit_read_OBJECTS = $(am_unit_read_OBJECTS)
+unit_read_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_read_DEPENDENCIES = libasio.a
+am_unit_read_at_OBJECTS = unit/read_at.$(OBJEXT)
+unit_read_at_OBJECTS = $(am_unit_read_at_OBJECTS)
+unit_read_at_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_read_at_DEPENDENCIES = libasio.a
+am_unit_read_until_OBJECTS = unit/read_until.$(OBJEXT)
+unit_read_until_OBJECTS = $(am_unit_read_until_OBJECTS)
+unit_read_until_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_read_until_DEPENDENCIES = libasio.a
+am_unit_readable_pipe_OBJECTS = unit/readable_pipe.$(OBJEXT)
+unit_readable_pipe_OBJECTS = $(am_unit_readable_pipe_OBJECTS)
+unit_readable_pipe_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_readable_pipe_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_recycling_allocator_OBJECTS = \
+ unit/recycling_allocator.$(OBJEXT)
+unit_recycling_allocator_OBJECTS = \
+ $(am_unit_recycling_allocator_OBJECTS)
+unit_recycling_allocator_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_recycling_allocator_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_redirect_error_OBJECTS = unit/redirect_error.$(OBJEXT)
+unit_redirect_error_OBJECTS = $(am_unit_redirect_error_OBJECTS)
+unit_redirect_error_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_redirect_error_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_registered_buffer_OBJECTS = unit/registered_buffer.$(OBJEXT)
+unit_registered_buffer_OBJECTS = $(am_unit_registered_buffer_OBJECTS)
+unit_registered_buffer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_registered_buffer_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_serial_port_OBJECTS = unit/serial_port.$(OBJEXT)
+unit_serial_port_OBJECTS = $(am_unit_serial_port_OBJECTS)
+unit_serial_port_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_serial_port_DEPENDENCIES = libasio.a
+am_unit_serial_port_base_OBJECTS = unit/serial_port_base.$(OBJEXT)
+unit_serial_port_base_OBJECTS = $(am_unit_serial_port_base_OBJECTS)
+unit_serial_port_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_serial_port_base_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_signal_set_OBJECTS = unit/signal_set.$(OBJEXT)
+unit_signal_set_OBJECTS = $(am_unit_signal_set_OBJECTS)
+unit_signal_set_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_signal_set_DEPENDENCIES = libasio.a
+am_unit_signal_set_base_OBJECTS = unit/signal_set_base.$(OBJEXT)
+unit_signal_set_base_OBJECTS = $(am_unit_signal_set_base_OBJECTS)
+unit_signal_set_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_signal_set_base_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_socket_base_OBJECTS = unit/socket_base.$(OBJEXT)
+unit_socket_base_OBJECTS = $(am_unit_socket_base_OBJECTS)
+unit_socket_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_socket_base_DEPENDENCIES = libasio.a
+am__unit_ssl_context_SOURCES_DIST = unit/ssl/context.cpp
+@HAVE_OPENSSL_TRUE@am_unit_ssl_context_OBJECTS = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/context.$(OBJEXT)
+unit_ssl_context_OBJECTS = $(am_unit_ssl_context_OBJECTS)
+unit_ssl_context_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ssl_context_DEPENDENCIES = libasio.a
+am__unit_ssl_context_base_SOURCES_DIST = unit/ssl/context_base.cpp
+@HAVE_OPENSSL_TRUE@am_unit_ssl_context_base_OBJECTS = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/context_base.$(OBJEXT)
+unit_ssl_context_base_OBJECTS = $(am_unit_ssl_context_base_OBJECTS)
+unit_ssl_context_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ssl_context_base_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_ssl_error_SOURCES_DIST = unit/ssl/error.cpp
+@HAVE_OPENSSL_TRUE@am_unit_ssl_error_OBJECTS = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/error.$(OBJEXT)
+unit_ssl_error_OBJECTS = $(am_unit_ssl_error_OBJECTS)
+unit_ssl_error_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ssl_error_DEPENDENCIES = libasio.a
+am__unit_ssl_host_name_verification_SOURCES_DIST = \
+ unit/ssl/host_name_verification.cpp
+@HAVE_OPENSSL_TRUE@am_unit_ssl_host_name_verification_OBJECTS = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/host_name_verification.$(OBJEXT)
+unit_ssl_host_name_verification_OBJECTS = \
+ $(am_unit_ssl_host_name_verification_OBJECTS)
+unit_ssl_host_name_verification_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ssl_host_name_verification_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_ssl_rfc2818_verification_SOURCES_DIST = \
+ unit/ssl/rfc2818_verification.cpp
+@HAVE_OPENSSL_TRUE@am_unit_ssl_rfc2818_verification_OBJECTS = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/rfc2818_verification.$(OBJEXT)
+unit_ssl_rfc2818_verification_OBJECTS = \
+ $(am_unit_ssl_rfc2818_verification_OBJECTS)
+unit_ssl_rfc2818_verification_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ssl_rfc2818_verification_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am__unit_ssl_stream_SOURCES_DIST = unit/ssl/stream.cpp
+@HAVE_OPENSSL_TRUE@am_unit_ssl_stream_OBJECTS = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream.$(OBJEXT)
+unit_ssl_stream_OBJECTS = $(am_unit_ssl_stream_OBJECTS)
+unit_ssl_stream_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ssl_stream_DEPENDENCIES = libasio.a
+am__unit_ssl_stream_base_SOURCES_DIST = unit/ssl/stream_base.cpp
+@HAVE_OPENSSL_TRUE@am_unit_ssl_stream_base_OBJECTS = \
+@HAVE_OPENSSL_TRUE@ unit/ssl/stream_base.$(OBJEXT)
+unit_ssl_stream_base_OBJECTS = $(am_unit_ssl_stream_base_OBJECTS)
+unit_ssl_stream_base_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ssl_stream_base_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_static_thread_pool_OBJECTS = \
+ unit/static_thread_pool.$(OBJEXT)
+unit_static_thread_pool_OBJECTS = \
+ $(am_unit_static_thread_pool_OBJECTS)
+unit_static_thread_pool_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_static_thread_pool_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_steady_timer_OBJECTS = unit/steady_timer.$(OBJEXT)
+unit_steady_timer_OBJECTS = $(am_unit_steady_timer_OBJECTS)
+unit_steady_timer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_steady_timer_DEPENDENCIES = libasio.a
+am_unit_strand_OBJECTS = unit/strand.$(OBJEXT)
+unit_strand_OBJECTS = $(am_unit_strand_OBJECTS)
+unit_strand_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_strand_DEPENDENCIES = libasio.a
+am_unit_stream_file_OBJECTS = unit/stream_file.$(OBJEXT)
+unit_stream_file_OBJECTS = $(am_unit_stream_file_OBJECTS)
+unit_stream_file_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_stream_file_DEPENDENCIES = libasio.a
+am_unit_streambuf_OBJECTS = unit/streambuf.$(OBJEXT)
+unit_streambuf_OBJECTS = $(am_unit_streambuf_OBJECTS)
+unit_streambuf_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_streambuf_DEPENDENCIES = libasio.a
+am_unit_system_context_OBJECTS = unit/system_context.$(OBJEXT)
+unit_system_context_OBJECTS = $(am_unit_system_context_OBJECTS)
+unit_system_context_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_system_context_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_system_executor_OBJECTS = unit/system_executor.$(OBJEXT)
+unit_system_executor_OBJECTS = $(am_unit_system_executor_OBJECTS)
+unit_system_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_system_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_system_timer_OBJECTS = unit/system_timer.$(OBJEXT)
+unit_system_timer_OBJECTS = $(am_unit_system_timer_OBJECTS)
+unit_system_timer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_system_timer_DEPENDENCIES = libasio.a
+am_unit_this_coro_OBJECTS = unit/this_coro.$(OBJEXT)
+unit_this_coro_OBJECTS = $(am_unit_this_coro_OBJECTS)
+unit_this_coro_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_this_coro_DEPENDENCIES = libasio.a
+am_unit_thread_OBJECTS = unit/thread.$(OBJEXT)
+unit_thread_OBJECTS = $(am_unit_thread_OBJECTS)
+unit_thread_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_thread_DEPENDENCIES = libasio.a
+am_unit_thread_pool_OBJECTS = unit/thread_pool.$(OBJEXT)
+unit_thread_pool_OBJECTS = $(am_unit_thread_pool_OBJECTS)
+unit_thread_pool_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_thread_pool_DEPENDENCIES = libasio.a
+am_unit_time_traits_OBJECTS = unit/time_traits.$(OBJEXT)
+unit_time_traits_OBJECTS = $(am_unit_time_traits_OBJECTS)
+unit_time_traits_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_time_traits_DEPENDENCIES = libasio.a
+am_unit_ts_buffer_OBJECTS = unit/ts/buffer.$(OBJEXT)
+unit_ts_buffer_OBJECTS = $(am_unit_ts_buffer_OBJECTS)
+unit_ts_buffer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_buffer_DEPENDENCIES = libasio.a
+am_unit_ts_executor_OBJECTS = unit/ts/executor.$(OBJEXT)
+unit_ts_executor_OBJECTS = $(am_unit_ts_executor_OBJECTS)
+unit_ts_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_executor_DEPENDENCIES = libasio.a
+am_unit_ts_internet_OBJECTS = unit/ts/internet.$(OBJEXT)
+unit_ts_internet_OBJECTS = $(am_unit_ts_internet_OBJECTS)
+unit_ts_internet_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_internet_DEPENDENCIES = libasio.a
+am_unit_ts_io_context_OBJECTS = unit/ts/io_context.$(OBJEXT)
+unit_ts_io_context_OBJECTS = $(am_unit_ts_io_context_OBJECTS)
+unit_ts_io_context_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_io_context_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_ts_net_OBJECTS = unit/ts/net.$(OBJEXT)
+unit_ts_net_OBJECTS = $(am_unit_ts_net_OBJECTS)
+unit_ts_net_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_net_DEPENDENCIES = libasio.a
+am_unit_ts_netfwd_OBJECTS = unit/ts/netfwd.$(OBJEXT)
+unit_ts_netfwd_OBJECTS = $(am_unit_ts_netfwd_OBJECTS)
+unit_ts_netfwd_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_netfwd_DEPENDENCIES = libasio.a
+am_unit_ts_socket_OBJECTS = unit/ts/socket.$(OBJEXT)
+unit_ts_socket_OBJECTS = $(am_unit_ts_socket_OBJECTS)
+unit_ts_socket_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_socket_DEPENDENCIES = libasio.a
+am_unit_ts_timer_OBJECTS = unit/ts/timer.$(OBJEXT)
+unit_ts_timer_OBJECTS = $(am_unit_ts_timer_OBJECTS)
+unit_ts_timer_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_ts_timer_DEPENDENCIES = libasio.a
+am_unit_use_awaitable_OBJECTS = unit/use_awaitable.$(OBJEXT)
+unit_use_awaitable_OBJECTS = $(am_unit_use_awaitable_OBJECTS)
+unit_use_awaitable_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_use_awaitable_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_use_future_OBJECTS = unit/use_future.$(OBJEXT)
+unit_use_future_OBJECTS = $(am_unit_use_future_OBJECTS)
+unit_use_future_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_use_future_DEPENDENCIES = libasio.a
+am_unit_uses_executor_OBJECTS = unit/uses_executor.$(OBJEXT)
+unit_uses_executor_OBJECTS = $(am_unit_uses_executor_OBJECTS)
+unit_uses_executor_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_uses_executor_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_wait_traits_OBJECTS = unit/wait_traits.$(OBJEXT)
+unit_wait_traits_OBJECTS = $(am_unit_wait_traits_OBJECTS)
+unit_wait_traits_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_wait_traits_DEPENDENCIES = libasio.a
+am_unit_windows_basic_object_handle_OBJECTS = \
+ unit/windows/basic_object_handle.$(OBJEXT)
+unit_windows_basic_object_handle_OBJECTS = \
+ $(am_unit_windows_basic_object_handle_OBJECTS)
+unit_windows_basic_object_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_basic_object_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_basic_overlapped_handle_OBJECTS = \
+ unit/windows/basic_overlapped_handle.$(OBJEXT)
+unit_windows_basic_overlapped_handle_OBJECTS = \
+ $(am_unit_windows_basic_overlapped_handle_OBJECTS)
+unit_windows_basic_overlapped_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_basic_overlapped_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_basic_random_access_handle_OBJECTS = \
+ unit/windows/basic_random_access_handle.$(OBJEXT)
+unit_windows_basic_random_access_handle_OBJECTS = \
+ $(am_unit_windows_basic_random_access_handle_OBJECTS)
+unit_windows_basic_random_access_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_basic_random_access_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_basic_stream_handle_OBJECTS = \
+ unit/windows/basic_stream_handle.$(OBJEXT)
+unit_windows_basic_stream_handle_OBJECTS = \
+ $(am_unit_windows_basic_stream_handle_OBJECTS)
+unit_windows_basic_stream_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_basic_stream_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_object_handle_OBJECTS = \
+ unit/windows/object_handle.$(OBJEXT)
+unit_windows_object_handle_OBJECTS = \
+ $(am_unit_windows_object_handle_OBJECTS)
+unit_windows_object_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_object_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_overlapped_handle_OBJECTS = \
+ unit/windows/overlapped_handle.$(OBJEXT)
+unit_windows_overlapped_handle_OBJECTS = \
+ $(am_unit_windows_overlapped_handle_OBJECTS)
+unit_windows_overlapped_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_overlapped_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_overlapped_ptr_OBJECTS = \
+ unit/windows/overlapped_ptr.$(OBJEXT)
+unit_windows_overlapped_ptr_OBJECTS = \
+ $(am_unit_windows_overlapped_ptr_OBJECTS)
+unit_windows_overlapped_ptr_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_overlapped_ptr_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_random_access_handle_OBJECTS = \
+ unit/windows/random_access_handle.$(OBJEXT)
+unit_windows_random_access_handle_OBJECTS = \
+ $(am_unit_windows_random_access_handle_OBJECTS)
+unit_windows_random_access_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_random_access_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_windows_stream_handle_OBJECTS = \
+ unit/windows/stream_handle.$(OBJEXT)
+unit_windows_stream_handle_OBJECTS = \
+ $(am_unit_windows_stream_handle_OBJECTS)
+unit_windows_stream_handle_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_windows_stream_handle_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_writable_pipe_OBJECTS = unit/writable_pipe.$(OBJEXT)
+unit_writable_pipe_OBJECTS = $(am_unit_writable_pipe_OBJECTS)
+unit_writable_pipe_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_writable_pipe_DEPENDENCIES = \
+@SEPARATE_COMPILATION_TRUE@ libasio.a
+am_unit_write_OBJECTS = unit/write.$(OBJEXT)
+unit_write_OBJECTS = $(am_unit_write_OBJECTS)
+unit_write_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_write_DEPENDENCIES = libasio.a
+am_unit_write_at_OBJECTS = unit/write_at.$(OBJEXT)
+unit_write_at_OBJECTS = $(am_unit_write_at_OBJECTS)
+unit_write_at_LDADD = $(LDADD)
+@SEPARATE_COMPILATION_TRUE@unit_write_at_DEPENDENCIES = libasio.a
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ../$(DEPDIR)/asio.Po ../$(DEPDIR)/asio_ssl.Po \
+ latency/$(DEPDIR)/tcp_client.Po \
+ latency/$(DEPDIR)/tcp_server.Po \
+ latency/$(DEPDIR)/udp_client.Po \
+ latency/$(DEPDIR)/udp_server.Po \
+ performance/$(DEPDIR)/client.Po \
+ performance/$(DEPDIR)/server.Po \
+ unit/$(DEPDIR)/any_completion_executor.Po \
+ unit/$(DEPDIR)/any_completion_handler.Po \
+ unit/$(DEPDIR)/any_io_executor.Po unit/$(DEPDIR)/append.Po \
+ unit/$(DEPDIR)/as_tuple.Po \
+ unit/$(DEPDIR)/associated_allocator.Po \
+ unit/$(DEPDIR)/associated_cancellation_slot.Po \
+ unit/$(DEPDIR)/associated_executor.Po \
+ unit/$(DEPDIR)/associated_immediate_executor.Po \
+ unit/$(DEPDIR)/associator.Po unit/$(DEPDIR)/async_result.Po \
+ unit/$(DEPDIR)/awaitable.Po \
+ unit/$(DEPDIR)/basic_datagram_socket.Po \
+ unit/$(DEPDIR)/basic_deadline_timer.Po \
+ unit/$(DEPDIR)/basic_file.Po \
+ unit/$(DEPDIR)/basic_random_access_file.Po \
+ unit/$(DEPDIR)/basic_raw_socket.Po \
+ unit/$(DEPDIR)/basic_readable_pipe.Po \
+ unit/$(DEPDIR)/basic_seq_packet_socket.Po \
+ unit/$(DEPDIR)/basic_serial_port.Po \
+ unit/$(DEPDIR)/basic_signal_set.Po \
+ unit/$(DEPDIR)/basic_socket.Po \
+ unit/$(DEPDIR)/basic_socket_acceptor.Po \
+ unit/$(DEPDIR)/basic_stream_file.Po \
+ unit/$(DEPDIR)/basic_stream_socket.Po \
+ unit/$(DEPDIR)/basic_streambuf.Po \
+ unit/$(DEPDIR)/basic_waitable_timer.Po \
+ unit/$(DEPDIR)/basic_writable_pipe.Po \
+ unit/$(DEPDIR)/bind_allocator.Po \
+ unit/$(DEPDIR)/bind_cancellation_slot.Po \
+ unit/$(DEPDIR)/bind_executor.Po \
+ unit/$(DEPDIR)/bind_immediate_executor.Po \
+ unit/$(DEPDIR)/buffer.Po unit/$(DEPDIR)/buffer_registration.Po \
+ unit/$(DEPDIR)/buffered_read_stream.Po \
+ unit/$(DEPDIR)/buffered_stream.Po \
+ unit/$(DEPDIR)/buffered_write_stream.Po \
+ unit/$(DEPDIR)/buffers_iterator.Po \
+ unit/$(DEPDIR)/cancellation_signal.Po \
+ unit/$(DEPDIR)/cancellation_state.Po \
+ unit/$(DEPDIR)/cancellation_type.Po unit/$(DEPDIR)/co_spawn.Po \
+ unit/$(DEPDIR)/completion_condition.Po \
+ unit/$(DEPDIR)/compose.Po unit/$(DEPDIR)/connect.Po \
+ unit/$(DEPDIR)/connect_pipe.Po unit/$(DEPDIR)/consign.Po \
+ unit/$(DEPDIR)/coroutine.Po unit/$(DEPDIR)/deadline_timer.Po \
+ unit/$(DEPDIR)/defer.Po unit/$(DEPDIR)/deferred.Po \
+ unit/$(DEPDIR)/detached.Po unit/$(DEPDIR)/dispatch.Po \
+ unit/$(DEPDIR)/error.Po unit/$(DEPDIR)/execution_context.Po \
+ unit/$(DEPDIR)/executor.Po \
+ unit/$(DEPDIR)/executor_work_guard.Po \
+ unit/$(DEPDIR)/file_base.Po \
+ unit/$(DEPDIR)/high_resolution_timer.Po \
+ unit/$(DEPDIR)/io_context.Po \
+ unit/$(DEPDIR)/io_context_strand.Po \
+ unit/$(DEPDIR)/is_read_buffered.Po \
+ unit/$(DEPDIR)/is_write_buffered.Po \
+ unit/$(DEPDIR)/packaged_task.Po unit/$(DEPDIR)/placeholders.Po \
+ unit/$(DEPDIR)/post.Po unit/$(DEPDIR)/prepend.Po \
+ unit/$(DEPDIR)/random_access_file.Po unit/$(DEPDIR)/read.Po \
+ unit/$(DEPDIR)/read_at.Po unit/$(DEPDIR)/read_until.Po \
+ unit/$(DEPDIR)/readable_pipe.Po \
+ unit/$(DEPDIR)/recycling_allocator.Po \
+ unit/$(DEPDIR)/redirect_error.Po \
+ unit/$(DEPDIR)/registered_buffer.Po \
+ unit/$(DEPDIR)/serial_port.Po \
+ unit/$(DEPDIR)/serial_port_base.Po \
+ unit/$(DEPDIR)/signal_set.Po unit/$(DEPDIR)/signal_set_base.Po \
+ unit/$(DEPDIR)/socket_base.Po \
+ unit/$(DEPDIR)/static_thread_pool.Po \
+ unit/$(DEPDIR)/steady_timer.Po unit/$(DEPDIR)/strand.Po \
+ unit/$(DEPDIR)/stream_file.Po unit/$(DEPDIR)/streambuf.Po \
+ unit/$(DEPDIR)/system_context.Po \
+ unit/$(DEPDIR)/system_executor.Po \
+ unit/$(DEPDIR)/system_timer.Po unit/$(DEPDIR)/this_coro.Po \
+ unit/$(DEPDIR)/thread.Po unit/$(DEPDIR)/thread_pool.Po \
+ unit/$(DEPDIR)/time_traits.Po unit/$(DEPDIR)/use_awaitable.Po \
+ unit/$(DEPDIR)/use_future.Po unit/$(DEPDIR)/uses_executor.Po \
+ unit/$(DEPDIR)/wait_traits.Po unit/$(DEPDIR)/writable_pipe.Po \
+ unit/$(DEPDIR)/write.Po unit/$(DEPDIR)/write_at.Po \
+ unit/execution/$(DEPDIR)/any_executor.Po \
+ unit/execution/$(DEPDIR)/blocking.Po \
+ unit/execution/$(DEPDIR)/blocking_adaptation.Po \
+ unit/execution/$(DEPDIR)/context_as.Po \
+ unit/execution/$(DEPDIR)/executor.Po \
+ unit/execution/$(DEPDIR)/invocable_archetype.Po \
+ unit/execution/$(DEPDIR)/mapping.Po \
+ unit/execution/$(DEPDIR)/outstanding_work.Po \
+ unit/execution/$(DEPDIR)/prefer_only.Po \
+ unit/execution/$(DEPDIR)/relationship.Po \
+ unit/experimental/$(DEPDIR)/awaitable_operators.Po \
+ unit/experimental/$(DEPDIR)/basic_channel.Po \
+ unit/experimental/$(DEPDIR)/basic_concurrent_channel.Po \
+ unit/experimental/$(DEPDIR)/channel.Po \
+ unit/experimental/$(DEPDIR)/channel_traits.Po \
+ unit/experimental/$(DEPDIR)/co_composed.Po \
+ unit/experimental/$(DEPDIR)/concurrent_channel.Po \
+ unit/experimental/$(DEPDIR)/parallel_group.Po \
+ unit/experimental/$(DEPDIR)/promise.Po \
+ unit/experimental/coro/$(DEPDIR)/allocator.Po \
+ unit/experimental/coro/$(DEPDIR)/cancel.Po \
+ unit/experimental/coro/$(DEPDIR)/co_spawn.Po \
+ unit/experimental/coro/$(DEPDIR)/exception.Po \
+ unit/experimental/coro/$(DEPDIR)/executor.Po \
+ unit/experimental/coro/$(DEPDIR)/partial.Po \
+ unit/experimental/coro/$(DEPDIR)/simple_test.Po \
+ unit/experimental/coro/$(DEPDIR)/stack_test.Po \
+ unit/experimental/coro/$(DEPDIR)/use_coro.Po \
+ unit/generic/$(DEPDIR)/basic_endpoint.Po \
+ unit/generic/$(DEPDIR)/datagram_protocol.Po \
+ unit/generic/$(DEPDIR)/raw_protocol.Po \
+ unit/generic/$(DEPDIR)/seq_packet_protocol.Po \
+ unit/generic/$(DEPDIR)/stream_protocol.Po \
+ unit/ip/$(DEPDIR)/address.Po unit/ip/$(DEPDIR)/address_v4.Po \
+ unit/ip/$(DEPDIR)/address_v4_iterator.Po \
+ unit/ip/$(DEPDIR)/address_v4_range.Po \
+ unit/ip/$(DEPDIR)/address_v6.Po \
+ unit/ip/$(DEPDIR)/address_v6_iterator.Po \
+ unit/ip/$(DEPDIR)/address_v6_range.Po \
+ unit/ip/$(DEPDIR)/basic_endpoint.Po \
+ unit/ip/$(DEPDIR)/basic_resolver.Po \
+ unit/ip/$(DEPDIR)/basic_resolver_entry.Po \
+ unit/ip/$(DEPDIR)/basic_resolver_iterator.Po \
+ unit/ip/$(DEPDIR)/basic_resolver_query.Po \
+ unit/ip/$(DEPDIR)/host_name.Po unit/ip/$(DEPDIR)/icmp.Po \
+ unit/ip/$(DEPDIR)/multicast.Po unit/ip/$(DEPDIR)/network_v4.Po \
+ unit/ip/$(DEPDIR)/network_v6.Po \
+ unit/ip/$(DEPDIR)/resolver_query_base.Po \
+ unit/ip/$(DEPDIR)/tcp.Po unit/ip/$(DEPDIR)/udp.Po \
+ unit/ip/$(DEPDIR)/unicast.Po unit/ip/$(DEPDIR)/v6_only.Po \
+ unit/local/$(DEPDIR)/basic_endpoint.Po \
+ unit/local/$(DEPDIR)/connect_pair.Po \
+ unit/local/$(DEPDIR)/datagram_protocol.Po \
+ unit/local/$(DEPDIR)/seq_packet_protocol.Po \
+ unit/local/$(DEPDIR)/stream_protocol.Po \
+ unit/posix/$(DEPDIR)/basic_descriptor.Po \
+ unit/posix/$(DEPDIR)/basic_stream_descriptor.Po \
+ unit/posix/$(DEPDIR)/descriptor.Po \
+ unit/posix/$(DEPDIR)/descriptor_base.Po \
+ unit/posix/$(DEPDIR)/stream_descriptor.Po \
+ unit/ssl/$(DEPDIR)/context.Po \
+ unit/ssl/$(DEPDIR)/context_base.Po unit/ssl/$(DEPDIR)/error.Po \
+ unit/ssl/$(DEPDIR)/host_name_verification.Po \
+ unit/ssl/$(DEPDIR)/rfc2818_verification.Po \
+ unit/ssl/$(DEPDIR)/stream.Po unit/ssl/$(DEPDIR)/stream_base.Po \
+ unit/ts/$(DEPDIR)/buffer.Po unit/ts/$(DEPDIR)/executor.Po \
+ unit/ts/$(DEPDIR)/internet.Po unit/ts/$(DEPDIR)/io_context.Po \
+ unit/ts/$(DEPDIR)/net.Po unit/ts/$(DEPDIR)/netfwd.Po \
+ unit/ts/$(DEPDIR)/socket.Po unit/ts/$(DEPDIR)/timer.Po \
+ unit/windows/$(DEPDIR)/basic_object_handle.Po \
+ unit/windows/$(DEPDIR)/basic_overlapped_handle.Po \
+ unit/windows/$(DEPDIR)/basic_random_access_handle.Po \
+ unit/windows/$(DEPDIR)/basic_stream_handle.Po \
+ unit/windows/$(DEPDIR)/object_handle.Po \
+ unit/windows/$(DEPDIR)/overlapped_handle.Po \
+ unit/windows/$(DEPDIR)/overlapped_ptr.Po \
+ unit/windows/$(DEPDIR)/random_access_handle.Po \
+ unit/windows/$(DEPDIR)/stream_handle.Po
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+SOURCES = $(libasio_a_SOURCES) $(latency_tcp_client_SOURCES) \
+ $(latency_tcp_server_SOURCES) $(latency_udp_client_SOURCES) \
+ $(latency_udp_server_SOURCES) $(performance_client_SOURCES) \
+ $(performance_server_SOURCES) \
+ $(unit_any_completion_executor_SOURCES) \
+ $(unit_any_completion_handler_SOURCES) \
+ $(unit_any_io_executor_SOURCES) $(unit_append_SOURCES) \
+ $(unit_as_tuple_SOURCES) $(unit_associated_allocator_SOURCES) \
+ $(unit_associated_cancellation_slot_SOURCES) \
+ $(unit_associated_executor_SOURCES) \
+ $(unit_associated_immediate_executor_SOURCES) \
+ $(unit_associator_SOURCES) $(unit_async_result_SOURCES) \
+ $(unit_awaitable_SOURCES) \
+ $(unit_basic_datagram_socket_SOURCES) \
+ $(unit_basic_deadline_timer_SOURCES) \
+ $(unit_basic_file_SOURCES) \
+ $(unit_basic_random_access_file_SOURCES) \
+ $(unit_basic_raw_socket_SOURCES) \
+ $(unit_basic_readable_pipe_SOURCES) \
+ $(unit_basic_seq_packet_socket_SOURCES) \
+ $(unit_basic_serial_port_SOURCES) \
+ $(unit_basic_signal_set_SOURCES) $(unit_basic_socket_SOURCES) \
+ $(unit_basic_socket_acceptor_SOURCES) \
+ $(unit_basic_stream_file_SOURCES) \
+ $(unit_basic_stream_socket_SOURCES) \
+ $(unit_basic_streambuf_SOURCES) \
+ $(unit_basic_waitable_timer_SOURCES) \
+ $(unit_basic_writable_pipe_SOURCES) \
+ $(unit_bind_allocator_SOURCES) \
+ $(unit_bind_cancellation_slot_SOURCES) \
+ $(unit_bind_executor_SOURCES) \
+ $(unit_bind_immediate_executor_SOURCES) $(unit_buffer_SOURCES) \
+ $(unit_buffer_registration_SOURCES) \
+ $(unit_buffered_read_stream_SOURCES) \
+ $(unit_buffered_stream_SOURCES) \
+ $(unit_buffered_write_stream_SOURCES) \
+ $(unit_buffers_iterator_SOURCES) \
+ $(unit_cancellation_signal_SOURCES) \
+ $(unit_cancellation_state_SOURCES) \
+ $(unit_cancellation_type_SOURCES) $(unit_co_spawn_SOURCES) \
+ $(unit_completion_condition_SOURCES) $(unit_compose_SOURCES) \
+ $(unit_connect_SOURCES) $(unit_connect_pipe_SOURCES) \
+ $(unit_consign_SOURCES) $(unit_coroutine_SOURCES) \
+ $(unit_deadline_timer_SOURCES) $(unit_defer_SOURCES) \
+ $(unit_deferred_SOURCES) $(unit_detached_SOURCES) \
+ $(unit_dispatch_SOURCES) $(unit_error_SOURCES) \
+ $(unit_execution_any_executor_SOURCES) \
+ $(unit_execution_blocking_SOURCES) \
+ $(unit_execution_blocking_adaptation_SOURCES) \
+ $(unit_execution_context_as_SOURCES) \
+ $(unit_execution_executor_SOURCES) \
+ $(unit_execution_invocable_archetype_SOURCES) \
+ $(unit_execution_mapping_SOURCES) \
+ $(unit_execution_outstanding_work_SOURCES) \
+ $(unit_execution_prefer_only_SOURCES) \
+ $(unit_execution_relationship_SOURCES) \
+ $(unit_execution_context_SOURCES) $(unit_executor_SOURCES) \
+ $(unit_executor_work_guard_SOURCES) \
+ $(unit_experimental_awaitable_operators_SOURCES) \
+ $(unit_experimental_basic_channel_SOURCES) \
+ $(unit_experimental_basic_concurrent_channel_SOURCES) \
+ $(unit_experimental_channel_SOURCES) \
+ $(unit_experimental_channel_traits_SOURCES) \
+ $(unit_experimental_co_composed_SOURCES) \
+ $(unit_experimental_concurrent_channel_SOURCES) \
+ $(unit_experimental_coro_allocator_SOURCES) \
+ $(unit_experimental_coro_cancel_SOURCES) \
+ $(unit_experimental_coro_co_spawn_SOURCES) \
+ $(unit_experimental_coro_exception_SOURCES) \
+ $(unit_experimental_coro_executor_SOURCES) \
+ $(unit_experimental_coro_partial_SOURCES) \
+ $(unit_experimental_coro_simple_test_SOURCES) \
+ $(unit_experimental_coro_stack_test_SOURCES) \
+ $(unit_experimental_coro_use_coro_SOURCES) \
+ $(unit_experimental_parallel_group_SOURCES) \
+ $(unit_experimental_promise_SOURCES) $(unit_file_base_SOURCES) \
+ $(unit_generic_basic_endpoint_SOURCES) \
+ $(unit_generic_datagram_protocol_SOURCES) \
+ $(unit_generic_raw_protocol_SOURCES) \
+ $(unit_generic_seq_packet_protocol_SOURCES) \
+ $(unit_generic_stream_protocol_SOURCES) \
+ $(unit_high_resolution_timer_SOURCES) \
+ $(unit_io_context_SOURCES) $(unit_io_context_strand_SOURCES) \
+ $(unit_ip_address_SOURCES) $(unit_ip_address_v4_SOURCES) \
+ $(unit_ip_address_v4_iterator_SOURCES) \
+ $(unit_ip_address_v4_range_SOURCES) \
+ $(unit_ip_address_v6_SOURCES) \
+ $(unit_ip_address_v6_iterator_SOURCES) \
+ $(unit_ip_address_v6_range_SOURCES) \
+ $(unit_ip_basic_endpoint_SOURCES) \
+ $(unit_ip_basic_resolver_SOURCES) \
+ $(unit_ip_basic_resolver_entry_SOURCES) \
+ $(unit_ip_basic_resolver_iterator_SOURCES) \
+ $(unit_ip_basic_resolver_query_SOURCES) \
+ $(unit_ip_host_name_SOURCES) $(unit_ip_icmp_SOURCES) \
+ $(unit_ip_multicast_SOURCES) $(unit_ip_network_v4_SOURCES) \
+ $(unit_ip_network_v6_SOURCES) \
+ $(unit_ip_resolver_query_base_SOURCES) $(unit_ip_tcp_SOURCES) \
+ $(unit_ip_udp_SOURCES) $(unit_ip_unicast_SOURCES) \
+ $(unit_ip_v6_only_SOURCES) $(unit_is_read_buffered_SOURCES) \
+ $(unit_is_write_buffered_SOURCES) \
+ $(unit_local_basic_endpoint_SOURCES) \
+ $(unit_local_connect_pair_SOURCES) \
+ $(unit_local_datagram_protocol_SOURCES) \
+ $(unit_local_seq_packet_protocol_SOURCES) \
+ $(unit_local_stream_protocol_SOURCES) \
+ $(unit_packaged_task_SOURCES) $(unit_placeholders_SOURCES) \
+ $(unit_posix_basic_descriptor_SOURCES) \
+ $(unit_posix_basic_stream_descriptor_SOURCES) \
+ $(unit_posix_descriptor_SOURCES) \
+ $(unit_posix_descriptor_base_SOURCES) \
+ $(unit_posix_stream_descriptor_SOURCES) $(unit_post_SOURCES) \
+ $(unit_prepend_SOURCES) $(unit_random_access_file_SOURCES) \
+ $(unit_read_SOURCES) $(unit_read_at_SOURCES) \
+ $(unit_read_until_SOURCES) $(unit_readable_pipe_SOURCES) \
+ $(unit_recycling_allocator_SOURCES) \
+ $(unit_redirect_error_SOURCES) \
+ $(unit_registered_buffer_SOURCES) $(unit_serial_port_SOURCES) \
+ $(unit_serial_port_base_SOURCES) $(unit_signal_set_SOURCES) \
+ $(unit_signal_set_base_SOURCES) $(unit_socket_base_SOURCES) \
+ $(unit_ssl_context_SOURCES) $(unit_ssl_context_base_SOURCES) \
+ $(unit_ssl_error_SOURCES) \
+ $(unit_ssl_host_name_verification_SOURCES) \
+ $(unit_ssl_rfc2818_verification_SOURCES) \
+ $(unit_ssl_stream_SOURCES) $(unit_ssl_stream_base_SOURCES) \
+ $(unit_static_thread_pool_SOURCES) \
+ $(unit_steady_timer_SOURCES) $(unit_strand_SOURCES) \
+ $(unit_stream_file_SOURCES) $(unit_streambuf_SOURCES) \
+ $(unit_system_context_SOURCES) $(unit_system_executor_SOURCES) \
+ $(unit_system_timer_SOURCES) $(unit_this_coro_SOURCES) \
+ $(unit_thread_SOURCES) $(unit_thread_pool_SOURCES) \
+ $(unit_time_traits_SOURCES) $(unit_ts_buffer_SOURCES) \
+ $(unit_ts_executor_SOURCES) $(unit_ts_internet_SOURCES) \
+ $(unit_ts_io_context_SOURCES) $(unit_ts_net_SOURCES) \
+ $(unit_ts_netfwd_SOURCES) $(unit_ts_socket_SOURCES) \
+ $(unit_ts_timer_SOURCES) $(unit_use_awaitable_SOURCES) \
+ $(unit_use_future_SOURCES) $(unit_uses_executor_SOURCES) \
+ $(unit_wait_traits_SOURCES) \
+ $(unit_windows_basic_object_handle_SOURCES) \
+ $(unit_windows_basic_overlapped_handle_SOURCES) \
+ $(unit_windows_basic_random_access_handle_SOURCES) \
+ $(unit_windows_basic_stream_handle_SOURCES) \
+ $(unit_windows_object_handle_SOURCES) \
+ $(unit_windows_overlapped_handle_SOURCES) \
+ $(unit_windows_overlapped_ptr_SOURCES) \
+ $(unit_windows_random_access_handle_SOURCES) \
+ $(unit_windows_stream_handle_SOURCES) \
+ $(unit_writable_pipe_SOURCES) $(unit_write_SOURCES) \
+ $(unit_write_at_SOURCES)
+DIST_SOURCES = $(am__libasio_a_SOURCES_DIST) \
+ $(am__latency_tcp_client_SOURCES_DIST) \
+ $(am__latency_tcp_server_SOURCES_DIST) \
+ $(am__latency_udp_client_SOURCES_DIST) \
+ $(am__latency_udp_server_SOURCES_DIST) \
+ $(am__performance_client_SOURCES_DIST) \
+ $(am__performance_server_SOURCES_DIST) \
+ $(unit_any_completion_executor_SOURCES) \
+ $(unit_any_completion_handler_SOURCES) \
+ $(unit_any_io_executor_SOURCES) $(unit_append_SOURCES) \
+ $(unit_as_tuple_SOURCES) $(unit_associated_allocator_SOURCES) \
+ $(unit_associated_cancellation_slot_SOURCES) \
+ $(unit_associated_executor_SOURCES) \
+ $(unit_associated_immediate_executor_SOURCES) \
+ $(unit_associator_SOURCES) $(unit_async_result_SOURCES) \
+ $(unit_awaitable_SOURCES) \
+ $(unit_basic_datagram_socket_SOURCES) \
+ $(unit_basic_deadline_timer_SOURCES) \
+ $(unit_basic_file_SOURCES) \
+ $(unit_basic_random_access_file_SOURCES) \
+ $(unit_basic_raw_socket_SOURCES) \
+ $(unit_basic_readable_pipe_SOURCES) \
+ $(unit_basic_seq_packet_socket_SOURCES) \
+ $(unit_basic_serial_port_SOURCES) \
+ $(unit_basic_signal_set_SOURCES) $(unit_basic_socket_SOURCES) \
+ $(unit_basic_socket_acceptor_SOURCES) \
+ $(unit_basic_stream_file_SOURCES) \
+ $(unit_basic_stream_socket_SOURCES) \
+ $(unit_basic_streambuf_SOURCES) \
+ $(unit_basic_waitable_timer_SOURCES) \
+ $(unit_basic_writable_pipe_SOURCES) \
+ $(unit_bind_allocator_SOURCES) \
+ $(unit_bind_cancellation_slot_SOURCES) \
+ $(unit_bind_executor_SOURCES) \
+ $(unit_bind_immediate_executor_SOURCES) $(unit_buffer_SOURCES) \
+ $(unit_buffer_registration_SOURCES) \
+ $(unit_buffered_read_stream_SOURCES) \
+ $(unit_buffered_stream_SOURCES) \
+ $(unit_buffered_write_stream_SOURCES) \
+ $(unit_buffers_iterator_SOURCES) \
+ $(unit_cancellation_signal_SOURCES) \
+ $(unit_cancellation_state_SOURCES) \
+ $(unit_cancellation_type_SOURCES) $(unit_co_spawn_SOURCES) \
+ $(unit_completion_condition_SOURCES) $(unit_compose_SOURCES) \
+ $(unit_connect_SOURCES) $(unit_connect_pipe_SOURCES) \
+ $(unit_consign_SOURCES) $(unit_coroutine_SOURCES) \
+ $(unit_deadline_timer_SOURCES) $(unit_defer_SOURCES) \
+ $(unit_deferred_SOURCES) $(unit_detached_SOURCES) \
+ $(unit_dispatch_SOURCES) $(unit_error_SOURCES) \
+ $(unit_execution_any_executor_SOURCES) \
+ $(unit_execution_blocking_SOURCES) \
+ $(unit_execution_blocking_adaptation_SOURCES) \
+ $(unit_execution_context_as_SOURCES) \
+ $(unit_execution_executor_SOURCES) \
+ $(unit_execution_invocable_archetype_SOURCES) \
+ $(unit_execution_mapping_SOURCES) \
+ $(unit_execution_outstanding_work_SOURCES) \
+ $(unit_execution_prefer_only_SOURCES) \
+ $(unit_execution_relationship_SOURCES) \
+ $(unit_execution_context_SOURCES) $(unit_executor_SOURCES) \
+ $(unit_executor_work_guard_SOURCES) \
+ $(am__unit_experimental_awaitable_operators_SOURCES_DIST) \
+ $(am__unit_experimental_basic_channel_SOURCES_DIST) \
+ $(am__unit_experimental_basic_concurrent_channel_SOURCES_DIST) \
+ $(am__unit_experimental_channel_SOURCES_DIST) \
+ $(am__unit_experimental_channel_traits_SOURCES_DIST) \
+ $(am__unit_experimental_co_composed_SOURCES_DIST) \
+ $(am__unit_experimental_concurrent_channel_SOURCES_DIST) \
+ $(am__unit_experimental_coro_allocator_SOURCES_DIST) \
+ $(am__unit_experimental_coro_cancel_SOURCES_DIST) \
+ $(am__unit_experimental_coro_co_spawn_SOURCES_DIST) \
+ $(am__unit_experimental_coro_exception_SOURCES_DIST) \
+ $(am__unit_experimental_coro_executor_SOURCES_DIST) \
+ $(am__unit_experimental_coro_partial_SOURCES_DIST) \
+ $(am__unit_experimental_coro_simple_test_SOURCES_DIST) \
+ $(am__unit_experimental_coro_stack_test_SOURCES_DIST) \
+ $(am__unit_experimental_coro_use_coro_SOURCES_DIST) \
+ $(am__unit_experimental_parallel_group_SOURCES_DIST) \
+ $(am__unit_experimental_promise_SOURCES_DIST) \
+ $(unit_file_base_SOURCES) \
+ $(unit_generic_basic_endpoint_SOURCES) \
+ $(unit_generic_datagram_protocol_SOURCES) \
+ $(unit_generic_raw_protocol_SOURCES) \
+ $(unit_generic_seq_packet_protocol_SOURCES) \
+ $(unit_generic_stream_protocol_SOURCES) \
+ $(unit_high_resolution_timer_SOURCES) \
+ $(unit_io_context_SOURCES) $(unit_io_context_strand_SOURCES) \
+ $(unit_ip_address_SOURCES) $(unit_ip_address_v4_SOURCES) \
+ $(unit_ip_address_v4_iterator_SOURCES) \
+ $(unit_ip_address_v4_range_SOURCES) \
+ $(unit_ip_address_v6_SOURCES) \
+ $(unit_ip_address_v6_iterator_SOURCES) \
+ $(unit_ip_address_v6_range_SOURCES) \
+ $(unit_ip_basic_endpoint_SOURCES) \
+ $(unit_ip_basic_resolver_SOURCES) \
+ $(unit_ip_basic_resolver_entry_SOURCES) \
+ $(unit_ip_basic_resolver_iterator_SOURCES) \
+ $(unit_ip_basic_resolver_query_SOURCES) \
+ $(unit_ip_host_name_SOURCES) $(unit_ip_icmp_SOURCES) \
+ $(unit_ip_multicast_SOURCES) $(unit_ip_network_v4_SOURCES) \
+ $(unit_ip_network_v6_SOURCES) \
+ $(unit_ip_resolver_query_base_SOURCES) $(unit_ip_tcp_SOURCES) \
+ $(unit_ip_udp_SOURCES) $(unit_ip_unicast_SOURCES) \
+ $(unit_ip_v6_only_SOURCES) $(unit_is_read_buffered_SOURCES) \
+ $(unit_is_write_buffered_SOURCES) \
+ $(unit_local_basic_endpoint_SOURCES) \
+ $(unit_local_connect_pair_SOURCES) \
+ $(unit_local_datagram_protocol_SOURCES) \
+ $(unit_local_seq_packet_protocol_SOURCES) \
+ $(unit_local_stream_protocol_SOURCES) \
+ $(unit_packaged_task_SOURCES) $(unit_placeholders_SOURCES) \
+ $(unit_posix_basic_descriptor_SOURCES) \
+ $(unit_posix_basic_stream_descriptor_SOURCES) \
+ $(unit_posix_descriptor_SOURCES) \
+ $(unit_posix_descriptor_base_SOURCES) \
+ $(unit_posix_stream_descriptor_SOURCES) $(unit_post_SOURCES) \
+ $(unit_prepend_SOURCES) $(unit_random_access_file_SOURCES) \
+ $(unit_read_SOURCES) $(unit_read_at_SOURCES) \
+ $(unit_read_until_SOURCES) $(unit_readable_pipe_SOURCES) \
+ $(unit_recycling_allocator_SOURCES) \
+ $(unit_redirect_error_SOURCES) \
+ $(unit_registered_buffer_SOURCES) $(unit_serial_port_SOURCES) \
+ $(unit_serial_port_base_SOURCES) $(unit_signal_set_SOURCES) \
+ $(unit_signal_set_base_SOURCES) $(unit_socket_base_SOURCES) \
+ $(am__unit_ssl_context_SOURCES_DIST) \
+ $(am__unit_ssl_context_base_SOURCES_DIST) \
+ $(am__unit_ssl_error_SOURCES_DIST) \
+ $(am__unit_ssl_host_name_verification_SOURCES_DIST) \
+ $(am__unit_ssl_rfc2818_verification_SOURCES_DIST) \
+ $(am__unit_ssl_stream_SOURCES_DIST) \
+ $(am__unit_ssl_stream_base_SOURCES_DIST) \
+ $(unit_static_thread_pool_SOURCES) \
+ $(unit_steady_timer_SOURCES) $(unit_strand_SOURCES) \
+ $(unit_stream_file_SOURCES) $(unit_streambuf_SOURCES) \
+ $(unit_system_context_SOURCES) $(unit_system_executor_SOURCES) \
+ $(unit_system_timer_SOURCES) $(unit_this_coro_SOURCES) \
+ $(unit_thread_SOURCES) $(unit_thread_pool_SOURCES) \
+ $(unit_time_traits_SOURCES) $(unit_ts_buffer_SOURCES) \
+ $(unit_ts_executor_SOURCES) $(unit_ts_internet_SOURCES) \
+ $(unit_ts_io_context_SOURCES) $(unit_ts_net_SOURCES) \
+ $(unit_ts_netfwd_SOURCES) $(unit_ts_socket_SOURCES) \
+ $(unit_ts_timer_SOURCES) $(unit_use_awaitable_SOURCES) \
+ $(unit_use_future_SOURCES) $(unit_uses_executor_SOURCES) \
+ $(unit_wait_traits_SOURCES) \
+ $(unit_windows_basic_object_handle_SOURCES) \
+ $(unit_windows_basic_overlapped_handle_SOURCES) \
+ $(unit_windows_basic_random_access_handle_SOURCES) \
+ $(unit_windows_basic_stream_handle_SOURCES) \
+ $(unit_windows_object_handle_SOURCES) \
+ $(unit_windows_overlapped_handle_SOURCES) \
+ $(unit_windows_overlapped_ptr_SOURCES) \
+ $(unit_windows_random_access_handle_SOURCES) \
+ $(unit_windows_stream_handle_SOURCES) \
+ $(unit_writable_pipe_SOURCES) $(unit_write_SOURCES) \
+ $(unit_write_at_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ check recheck distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = subdir-objects
+@SEPARATE_COMPILATION_TRUE@noinst_LIBRARIES = libasio.a
+@SEPARATE_COMPILATION_TRUE@libasio_a_SOURCES = ../asio.cpp \
+@SEPARATE_COMPILATION_TRUE@ $(am__append_1)
+@SEPARATE_COMPILATION_TRUE@LDADD = libasio.a
+SUBDIRS = properties
+noinst_HEADERS = \
+ latency/high_res_clock.hpp \
+ unit/unit_test.hpp
+
+AM_CXXFLAGS = -I$(srcdir)/../../include
+@STANDALONE_FALSE@latency_tcp_client_SOURCES = latency/tcp_client.cpp
+@STANDALONE_FALSE@latency_tcp_server_SOURCES = latency/tcp_server.cpp
+@STANDALONE_FALSE@latency_udp_client_SOURCES = latency/udp_client.cpp
+@STANDALONE_FALSE@latency_udp_server_SOURCES = latency/udp_server.cpp
+@STANDALONE_FALSE@performance_client_SOURCES = performance/client.cpp
+@STANDALONE_FALSE@performance_server_SOURCES = performance/server.cpp
+unit_any_completion_executor_SOURCES = unit/any_completion_executor.cpp
+unit_any_completion_handler_SOURCES = unit/any_completion_handler.cpp
+unit_any_io_executor_SOURCES = unit/any_io_executor.cpp
+unit_append_SOURCES = unit/append.cpp
+unit_as_tuple_SOURCES = unit/as_tuple.cpp
+unit_associated_allocator_SOURCES = unit/associated_allocator.cpp
+unit_associated_cancellation_slot_SOURCES = unit/associated_cancellation_slot.cpp
+unit_associated_executor_SOURCES = unit/associated_executor.cpp
+unit_associated_immediate_executor_SOURCES = unit/associated_immediate_executor.cpp
+unit_associator_SOURCES = unit/associator.cpp
+unit_async_result_SOURCES = unit/async_result.cpp
+unit_awaitable_SOURCES = unit/awaitable.cpp
+unit_basic_datagram_socket_SOURCES = unit/basic_datagram_socket.cpp
+unit_basic_deadline_timer_SOURCES = unit/basic_deadline_timer.cpp
+unit_basic_file_SOURCES = unit/basic_file.cpp
+unit_basic_random_access_file_SOURCES = unit/basic_random_access_file.cpp
+unit_basic_raw_socket_SOURCES = unit/basic_raw_socket.cpp
+unit_basic_readable_pipe_SOURCES = unit/basic_readable_pipe.cpp
+unit_basic_seq_packet_socket_SOURCES = unit/basic_seq_packet_socket.cpp
+unit_basic_serial_port_SOURCES = unit/basic_serial_port.cpp
+unit_basic_signal_set_SOURCES = unit/basic_signal_set.cpp
+unit_basic_socket_SOURCES = unit/basic_socket.cpp
+unit_basic_socket_acceptor_SOURCES = unit/basic_socket_acceptor.cpp
+unit_basic_stream_file_SOURCES = unit/basic_stream_file.cpp
+unit_basic_stream_socket_SOURCES = unit/basic_stream_socket.cpp
+unit_basic_streambuf_SOURCES = unit/basic_streambuf.cpp
+unit_basic_waitable_timer_SOURCES = unit/basic_waitable_timer.cpp
+unit_basic_writable_pipe_SOURCES = unit/basic_writable_pipe.cpp
+unit_bind_allocator_SOURCES = unit/bind_allocator.cpp
+unit_bind_cancellation_slot_SOURCES = unit/bind_cancellation_slot.cpp
+unit_bind_executor_SOURCES = unit/bind_executor.cpp
+unit_bind_immediate_executor_SOURCES = unit/bind_immediate_executor.cpp
+unit_buffer_SOURCES = unit/buffer.cpp
+unit_buffer_registration_SOURCES = unit/buffer_registration.cpp
+unit_buffers_iterator_SOURCES = unit/buffers_iterator.cpp
+unit_buffered_read_stream_SOURCES = unit/buffered_read_stream.cpp
+unit_buffered_stream_SOURCES = unit/buffered_stream.cpp
+unit_buffered_write_stream_SOURCES = unit/buffered_write_stream.cpp
+unit_cancellation_signal_SOURCES = unit/cancellation_signal.cpp
+unit_cancellation_state_SOURCES = unit/cancellation_state.cpp
+unit_cancellation_type_SOURCES = unit/cancellation_type.cpp
+unit_co_spawn_SOURCES = unit/co_spawn.cpp
+unit_completion_condition_SOURCES = unit/completion_condition.cpp
+unit_compose_SOURCES = unit/compose.cpp
+unit_connect_SOURCES = unit/connect.cpp
+unit_connect_pipe_SOURCES = unit/connect_pipe.cpp
+unit_consign_SOURCES = unit/consign.cpp
+unit_coroutine_SOURCES = unit/coroutine.cpp
+unit_deadline_timer_SOURCES = unit/deadline_timer.cpp
+unit_defer_SOURCES = unit/defer.cpp
+unit_deferred_SOURCES = unit/deferred.cpp
+unit_detached_SOURCES = unit/detached.cpp
+unit_dispatch_SOURCES = unit/dispatch.cpp
+unit_error_SOURCES = unit/error.cpp
+unit_execution_any_executor_SOURCES = unit/execution/any_executor.cpp
+unit_execution_blocking_SOURCES = unit/execution/blocking.cpp
+unit_execution_blocking_adaptation_SOURCES = unit/execution/blocking_adaptation.cpp
+unit_execution_context_as_SOURCES = unit/execution/context_as.cpp
+unit_execution_executor_SOURCES = unit/execution/executor.cpp
+unit_execution_invocable_archetype_SOURCES = unit/execution/invocable_archetype.cpp
+unit_execution_mapping_SOURCES = unit/execution/mapping.cpp
+unit_execution_outstanding_work_SOURCES = unit/execution/outstanding_work.cpp
+unit_execution_prefer_only_SOURCES = unit/execution/prefer_only.cpp
+unit_execution_relationship_SOURCES = unit/execution/relationship.cpp
+unit_execution_context_SOURCES = unit/execution_context.cpp
+unit_executor_SOURCES = unit/executor.cpp
+unit_executor_work_guard_SOURCES = unit/executor_work_guard.cpp
+unit_file_base_SOURCES = unit/file_base.cpp
+unit_generic_basic_endpoint_SOURCES = unit/generic/basic_endpoint.cpp
+unit_generic_datagram_protocol_SOURCES = unit/generic/datagram_protocol.cpp
+unit_generic_raw_protocol_SOURCES = unit/generic/raw_protocol.cpp
+unit_generic_seq_packet_protocol_SOURCES = unit/generic/seq_packet_protocol.cpp
+unit_generic_stream_protocol_SOURCES = unit/generic/stream_protocol.cpp
+unit_high_resolution_timer_SOURCES = unit/high_resolution_timer.cpp
+unit_io_context_SOURCES = unit/io_context.cpp
+unit_io_context_strand_SOURCES = unit/io_context_strand.cpp
+unit_ip_address_SOURCES = unit/ip/address.cpp
+unit_ip_address_v4_SOURCES = unit/ip/address_v4.cpp
+unit_ip_address_v4_iterator_SOURCES = unit/ip/address_v4_iterator.cpp
+unit_ip_address_v4_range_SOURCES = unit/ip/address_v4_range.cpp
+unit_ip_address_v6_SOURCES = unit/ip/address_v6.cpp
+unit_ip_address_v6_iterator_SOURCES = unit/ip/address_v6_iterator.cpp
+unit_ip_address_v6_range_SOURCES = unit/ip/address_v6_range.cpp
+unit_ip_basic_endpoint_SOURCES = unit/ip/basic_endpoint.cpp
+unit_ip_basic_resolver_SOURCES = unit/ip/basic_resolver.cpp
+unit_ip_basic_resolver_entry_SOURCES = unit/ip/basic_resolver_entry.cpp
+unit_ip_basic_resolver_iterator_SOURCES = unit/ip/basic_resolver_iterator.cpp
+unit_ip_basic_resolver_query_SOURCES = unit/ip/basic_resolver_query.cpp
+unit_ip_host_name_SOURCES = unit/ip/host_name.cpp
+unit_ip_icmp_SOURCES = unit/ip/icmp.cpp
+unit_ip_multicast_SOURCES = unit/ip/multicast.cpp
+unit_ip_network_v4_SOURCES = unit/ip/network_v4.cpp
+unit_ip_network_v6_SOURCES = unit/ip/network_v6.cpp
+unit_ip_resolver_query_base_SOURCES = unit/ip/resolver_query_base.cpp
+unit_ip_tcp_SOURCES = unit/ip/tcp.cpp
+unit_ip_udp_SOURCES = unit/ip/udp.cpp
+unit_ip_unicast_SOURCES = unit/ip/unicast.cpp
+unit_ip_v6_only_SOURCES = unit/ip/v6_only.cpp
+unit_is_read_buffered_SOURCES = unit/is_read_buffered.cpp
+unit_is_write_buffered_SOURCES = unit/is_write_buffered.cpp
+unit_local_basic_endpoint_SOURCES = unit/local/basic_endpoint.cpp
+unit_local_connect_pair_SOURCES = unit/local/connect_pair.cpp
+unit_local_datagram_protocol_SOURCES = unit/local/datagram_protocol.cpp
+unit_local_seq_packet_protocol_SOURCES = unit/local/seq_packet_protocol.cpp
+unit_local_stream_protocol_SOURCES = unit/local/stream_protocol.cpp
+unit_packaged_task_SOURCES = unit/packaged_task.cpp
+unit_placeholders_SOURCES = unit/placeholders.cpp
+unit_posix_basic_descriptor_SOURCES = unit/posix/basic_descriptor.cpp
+unit_posix_basic_stream_descriptor_SOURCES = unit/posix/basic_stream_descriptor.cpp
+unit_posix_descriptor_SOURCES = unit/posix/descriptor.cpp
+unit_posix_descriptor_base_SOURCES = unit/posix/descriptor_base.cpp
+unit_posix_stream_descriptor_SOURCES = unit/posix/stream_descriptor.cpp
+unit_post_SOURCES = unit/post.cpp
+unit_prepend_SOURCES = unit/prepend.cpp
+unit_random_access_file_SOURCES = unit/random_access_file.cpp
+unit_read_SOURCES = unit/read.cpp
+unit_read_at_SOURCES = unit/read_at.cpp
+unit_read_until_SOURCES = unit/read_until.cpp
+unit_readable_pipe_SOURCES = unit/readable_pipe.cpp
+unit_recycling_allocator_SOURCES = unit/recycling_allocator.cpp
+unit_redirect_error_SOURCES = unit/redirect_error.cpp
+unit_registered_buffer_SOURCES = unit/registered_buffer.cpp
+unit_serial_port_SOURCES = unit/serial_port.cpp
+unit_serial_port_base_SOURCES = unit/serial_port_base.cpp
+unit_signal_set_SOURCES = unit/signal_set.cpp
+unit_signal_set_base_SOURCES = unit/signal_set_base.cpp
+unit_socket_base_SOURCES = unit/socket_base.cpp
+unit_static_thread_pool_SOURCES = unit/static_thread_pool.cpp
+unit_steady_timer_SOURCES = unit/steady_timer.cpp
+unit_strand_SOURCES = unit/strand.cpp
+unit_stream_file_SOURCES = unit/stream_file.cpp
+unit_streambuf_SOURCES = unit/streambuf.cpp
+unit_system_context_SOURCES = unit/system_context.cpp
+unit_system_executor_SOURCES = unit/system_executor.cpp
+unit_system_timer_SOURCES = unit/system_timer.cpp
+unit_this_coro_SOURCES = unit/this_coro.cpp
+unit_thread_SOURCES = unit/thread.cpp
+unit_thread_pool_SOURCES = unit/thread_pool.cpp
+unit_time_traits_SOURCES = unit/time_traits.cpp
+unit_ts_buffer_SOURCES = unit/ts/buffer.cpp
+unit_ts_executor_SOURCES = unit/ts/executor.cpp
+unit_ts_internet_SOURCES = unit/ts/internet.cpp
+unit_ts_io_context_SOURCES = unit/ts/io_context.cpp
+unit_ts_net_SOURCES = unit/ts/net.cpp
+unit_ts_netfwd_SOURCES = unit/ts/netfwd.cpp
+unit_ts_socket_SOURCES = unit/ts/socket.cpp
+unit_ts_timer_SOURCES = unit/ts/timer.cpp
+unit_use_awaitable_SOURCES = unit/use_awaitable.cpp
+unit_use_future_SOURCES = unit/use_future.cpp
+unit_uses_executor_SOURCES = unit/uses_executor.cpp
+unit_wait_traits_SOURCES = unit/wait_traits.cpp
+unit_windows_basic_object_handle_SOURCES = unit/windows/basic_object_handle.cpp
+unit_windows_basic_overlapped_handle_SOURCES = unit/windows/basic_overlapped_handle.cpp
+unit_windows_basic_random_access_handle_SOURCES = unit/windows/basic_random_access_handle.cpp
+unit_windows_basic_stream_handle_SOURCES = unit/windows/basic_stream_handle.cpp
+unit_windows_object_handle_SOURCES = unit/windows/object_handle.cpp
+unit_windows_overlapped_handle_SOURCES = unit/windows/overlapped_handle.cpp
+unit_windows_overlapped_ptr_SOURCES = unit/windows/overlapped_ptr.cpp
+unit_windows_random_access_handle_SOURCES = unit/windows/random_access_handle.cpp
+unit_windows_stream_handle_SOURCES = unit/windows/stream_handle.cpp
+unit_writable_pipe_SOURCES = unit/writable_pipe.cpp
+unit_write_SOURCES = unit/write.cpp
+unit_write_at_SOURCES = unit/write_at.cpp
+@HAVE_CXX11_TRUE@unit_experimental_basic_channel_SOURCES = unit/experimental/basic_channel.cpp
+@HAVE_CXX11_TRUE@unit_experimental_basic_concurrent_channel_SOURCES = unit/experimental/basic_concurrent_channel.cpp
+@HAVE_CXX11_TRUE@unit_experimental_channel_SOURCES = unit/experimental/channel.cpp
+@HAVE_CXX11_TRUE@unit_experimental_channel_traits_SOURCES = unit/experimental/channel_traits.cpp
+@HAVE_CXX11_TRUE@unit_experimental_concurrent_channel_SOURCES = unit/experimental/concurrent_channel.cpp
+@HAVE_CXX11_TRUE@unit_experimental_parallel_group_SOURCES = unit/experimental/parallel_group.cpp
+@HAVE_CXX20_TRUE@unit_experimental_promise_SOURCES = unit/experimental/promise.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_awaitable_operators_SOURCES = unit/experimental/awaitable_operators.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_co_composed_SOURCES = unit/experimental/co_composed.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_allocator_SOURCES = unit/experimental/coro/allocator.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_cancel_SOURCES = unit/experimental/coro/cancel.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_co_spawn_SOURCES = unit/experimental/coro/co_spawn.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_exception_SOURCES = unit/experimental/coro/exception.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_executor_SOURCES = unit/experimental/coro/executor.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_partial_SOURCES = unit/experimental/coro/partial.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_simple_test_SOURCES = unit/experimental/coro/simple_test.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_stack_test_SOURCES = unit/experimental/coro/stack_test.cpp
+@HAVE_COROUTINES_TRUE@@HAVE_CXX20_TRUE@unit_experimental_coro_use_coro_SOURCES = unit/experimental/coro/use_coro.cpp
+@HAVE_OPENSSL_TRUE@unit_ssl_context_base_SOURCES = unit/ssl/context_base.cpp
+@HAVE_OPENSSL_TRUE@unit_ssl_context_SOURCES = unit/ssl/context.cpp
+@HAVE_OPENSSL_TRUE@unit_ssl_error_SOURCES = unit/ssl/error.cpp
+@HAVE_OPENSSL_TRUE@unit_ssl_stream_base_SOURCES = unit/ssl/stream_base.cpp
+@HAVE_OPENSSL_TRUE@unit_ssl_host_name_verification_SOURCES = unit/ssl/host_name_verification.cpp
+@HAVE_OPENSSL_TRUE@unit_ssl_rfc2818_verification_SOURCES = unit/ssl/rfc2818_verification.cpp
+@HAVE_OPENSSL_TRUE@unit_ssl_stream_SOURCES = unit/ssl/stream.cpp
+EXTRA_DIST = \
+ latency/allocator.hpp \
+ performance/handler_allocator.hpp \
+ unit/archetypes/async_ops.hpp \
+ unit/archetypes/async_result.hpp \
+ unit/archetypes/gettable_socket_option.hpp \
+ unit/archetypes/io_control_command.hpp \
+ unit/archetypes/settable_socket_option.hpp
+
+MAINTAINERCLEANFILES = \
+ $(srcdir)/Makefile.in
+
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cpp .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/tests/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+
+clean-noinstPROGRAMS:
+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+../$(am__dirstamp):
+ @$(MKDIR_P) ..
+ @: > ../$(am__dirstamp)
+../$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) ../$(DEPDIR)
+ @: > ../$(DEPDIR)/$(am__dirstamp)
+../asio.$(OBJEXT): ../$(am__dirstamp) ../$(DEPDIR)/$(am__dirstamp)
+../asio_ssl.$(OBJEXT): ../$(am__dirstamp) ../$(DEPDIR)/$(am__dirstamp)
+
+libasio.a: $(libasio_a_OBJECTS) $(libasio_a_DEPENDENCIES) $(EXTRA_libasio_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libasio.a
+ $(AM_V_AR)$(libasio_a_AR) libasio.a $(libasio_a_OBJECTS) $(libasio_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libasio.a
+latency/$(am__dirstamp):
+ @$(MKDIR_P) latency
+ @: > latency/$(am__dirstamp)
+latency/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) latency/$(DEPDIR)
+ @: > latency/$(DEPDIR)/$(am__dirstamp)
+latency/tcp_client.$(OBJEXT): latency/$(am__dirstamp) \
+ latency/$(DEPDIR)/$(am__dirstamp)
+
+latency/tcp_client$(EXEEXT): $(latency_tcp_client_OBJECTS) $(latency_tcp_client_DEPENDENCIES) $(EXTRA_latency_tcp_client_DEPENDENCIES) latency/$(am__dirstamp)
+ @rm -f latency/tcp_client$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(latency_tcp_client_OBJECTS) $(latency_tcp_client_LDADD) $(LIBS)
+latency/tcp_server.$(OBJEXT): latency/$(am__dirstamp) \
+ latency/$(DEPDIR)/$(am__dirstamp)
+
+latency/tcp_server$(EXEEXT): $(latency_tcp_server_OBJECTS) $(latency_tcp_server_DEPENDENCIES) $(EXTRA_latency_tcp_server_DEPENDENCIES) latency/$(am__dirstamp)
+ @rm -f latency/tcp_server$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(latency_tcp_server_OBJECTS) $(latency_tcp_server_LDADD) $(LIBS)
+latency/udp_client.$(OBJEXT): latency/$(am__dirstamp) \
+ latency/$(DEPDIR)/$(am__dirstamp)
+
+latency/udp_client$(EXEEXT): $(latency_udp_client_OBJECTS) $(latency_udp_client_DEPENDENCIES) $(EXTRA_latency_udp_client_DEPENDENCIES) latency/$(am__dirstamp)
+ @rm -f latency/udp_client$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(latency_udp_client_OBJECTS) $(latency_udp_client_LDADD) $(LIBS)
+latency/udp_server.$(OBJEXT): latency/$(am__dirstamp) \
+ latency/$(DEPDIR)/$(am__dirstamp)
+
+latency/udp_server$(EXEEXT): $(latency_udp_server_OBJECTS) $(latency_udp_server_DEPENDENCIES) $(EXTRA_latency_udp_server_DEPENDENCIES) latency/$(am__dirstamp)
+ @rm -f latency/udp_server$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(latency_udp_server_OBJECTS) $(latency_udp_server_LDADD) $(LIBS)
+performance/$(am__dirstamp):
+ @$(MKDIR_P) performance
+ @: > performance/$(am__dirstamp)
+performance/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) performance/$(DEPDIR)
+ @: > performance/$(DEPDIR)/$(am__dirstamp)
+performance/client.$(OBJEXT): performance/$(am__dirstamp) \
+ performance/$(DEPDIR)/$(am__dirstamp)
+
+performance/client$(EXEEXT): $(performance_client_OBJECTS) $(performance_client_DEPENDENCIES) $(EXTRA_performance_client_DEPENDENCIES) performance/$(am__dirstamp)
+ @rm -f performance/client$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(performance_client_OBJECTS) $(performance_client_LDADD) $(LIBS)
+performance/server.$(OBJEXT): performance/$(am__dirstamp) \
+ performance/$(DEPDIR)/$(am__dirstamp)
+
+performance/server$(EXEEXT): $(performance_server_OBJECTS) $(performance_server_DEPENDENCIES) $(EXTRA_performance_server_DEPENDENCIES) performance/$(am__dirstamp)
+ @rm -f performance/server$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(performance_server_OBJECTS) $(performance_server_LDADD) $(LIBS)
+unit/$(am__dirstamp):
+ @$(MKDIR_P) unit
+ @: > unit/$(am__dirstamp)
+unit/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/$(DEPDIR)
+ @: > unit/$(DEPDIR)/$(am__dirstamp)
+unit/any_completion_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/any_completion_executor$(EXEEXT): $(unit_any_completion_executor_OBJECTS) $(unit_any_completion_executor_DEPENDENCIES) $(EXTRA_unit_any_completion_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/any_completion_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_any_completion_executor_OBJECTS) $(unit_any_completion_executor_LDADD) $(LIBS)
+unit/any_completion_handler.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/any_completion_handler$(EXEEXT): $(unit_any_completion_handler_OBJECTS) $(unit_any_completion_handler_DEPENDENCIES) $(EXTRA_unit_any_completion_handler_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/any_completion_handler$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_any_completion_handler_OBJECTS) $(unit_any_completion_handler_LDADD) $(LIBS)
+unit/any_io_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/any_io_executor$(EXEEXT): $(unit_any_io_executor_OBJECTS) $(unit_any_io_executor_DEPENDENCIES) $(EXTRA_unit_any_io_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/any_io_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_any_io_executor_OBJECTS) $(unit_any_io_executor_LDADD) $(LIBS)
+unit/append.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/append$(EXEEXT): $(unit_append_OBJECTS) $(unit_append_DEPENDENCIES) $(EXTRA_unit_append_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/append$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_append_OBJECTS) $(unit_append_LDADD) $(LIBS)
+unit/as_tuple.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/as_tuple$(EXEEXT): $(unit_as_tuple_OBJECTS) $(unit_as_tuple_DEPENDENCIES) $(EXTRA_unit_as_tuple_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/as_tuple$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_as_tuple_OBJECTS) $(unit_as_tuple_LDADD) $(LIBS)
+unit/associated_allocator.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/associated_allocator$(EXEEXT): $(unit_associated_allocator_OBJECTS) $(unit_associated_allocator_DEPENDENCIES) $(EXTRA_unit_associated_allocator_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/associated_allocator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_associated_allocator_OBJECTS) $(unit_associated_allocator_LDADD) $(LIBS)
+unit/associated_cancellation_slot.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/associated_cancellation_slot$(EXEEXT): $(unit_associated_cancellation_slot_OBJECTS) $(unit_associated_cancellation_slot_DEPENDENCIES) $(EXTRA_unit_associated_cancellation_slot_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/associated_cancellation_slot$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_associated_cancellation_slot_OBJECTS) $(unit_associated_cancellation_slot_LDADD) $(LIBS)
+unit/associated_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/associated_executor$(EXEEXT): $(unit_associated_executor_OBJECTS) $(unit_associated_executor_DEPENDENCIES) $(EXTRA_unit_associated_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/associated_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_associated_executor_OBJECTS) $(unit_associated_executor_LDADD) $(LIBS)
+unit/associated_immediate_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/associated_immediate_executor$(EXEEXT): $(unit_associated_immediate_executor_OBJECTS) $(unit_associated_immediate_executor_DEPENDENCIES) $(EXTRA_unit_associated_immediate_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/associated_immediate_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_associated_immediate_executor_OBJECTS) $(unit_associated_immediate_executor_LDADD) $(LIBS)
+unit/associator.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/associator$(EXEEXT): $(unit_associator_OBJECTS) $(unit_associator_DEPENDENCIES) $(EXTRA_unit_associator_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/associator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_associator_OBJECTS) $(unit_associator_LDADD) $(LIBS)
+unit/async_result.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/async_result$(EXEEXT): $(unit_async_result_OBJECTS) $(unit_async_result_DEPENDENCIES) $(EXTRA_unit_async_result_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/async_result$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_async_result_OBJECTS) $(unit_async_result_LDADD) $(LIBS)
+unit/awaitable.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/awaitable$(EXEEXT): $(unit_awaitable_OBJECTS) $(unit_awaitable_DEPENDENCIES) $(EXTRA_unit_awaitable_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/awaitable$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_awaitable_OBJECTS) $(unit_awaitable_LDADD) $(LIBS)
+unit/basic_datagram_socket.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_datagram_socket$(EXEEXT): $(unit_basic_datagram_socket_OBJECTS) $(unit_basic_datagram_socket_DEPENDENCIES) $(EXTRA_unit_basic_datagram_socket_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_datagram_socket$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_datagram_socket_OBJECTS) $(unit_basic_datagram_socket_LDADD) $(LIBS)
+unit/basic_deadline_timer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_deadline_timer$(EXEEXT): $(unit_basic_deadline_timer_OBJECTS) $(unit_basic_deadline_timer_DEPENDENCIES) $(EXTRA_unit_basic_deadline_timer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_deadline_timer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_deadline_timer_OBJECTS) $(unit_basic_deadline_timer_LDADD) $(LIBS)
+unit/basic_file.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_file$(EXEEXT): $(unit_basic_file_OBJECTS) $(unit_basic_file_DEPENDENCIES) $(EXTRA_unit_basic_file_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_file$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_file_OBJECTS) $(unit_basic_file_LDADD) $(LIBS)
+unit/basic_random_access_file.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_random_access_file$(EXEEXT): $(unit_basic_random_access_file_OBJECTS) $(unit_basic_random_access_file_DEPENDENCIES) $(EXTRA_unit_basic_random_access_file_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_random_access_file$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_random_access_file_OBJECTS) $(unit_basic_random_access_file_LDADD) $(LIBS)
+unit/basic_raw_socket.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_raw_socket$(EXEEXT): $(unit_basic_raw_socket_OBJECTS) $(unit_basic_raw_socket_DEPENDENCIES) $(EXTRA_unit_basic_raw_socket_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_raw_socket$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_raw_socket_OBJECTS) $(unit_basic_raw_socket_LDADD) $(LIBS)
+unit/basic_readable_pipe.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_readable_pipe$(EXEEXT): $(unit_basic_readable_pipe_OBJECTS) $(unit_basic_readable_pipe_DEPENDENCIES) $(EXTRA_unit_basic_readable_pipe_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_readable_pipe$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_readable_pipe_OBJECTS) $(unit_basic_readable_pipe_LDADD) $(LIBS)
+unit/basic_seq_packet_socket.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_seq_packet_socket$(EXEEXT): $(unit_basic_seq_packet_socket_OBJECTS) $(unit_basic_seq_packet_socket_DEPENDENCIES) $(EXTRA_unit_basic_seq_packet_socket_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_seq_packet_socket$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_seq_packet_socket_OBJECTS) $(unit_basic_seq_packet_socket_LDADD) $(LIBS)
+unit/basic_serial_port.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_serial_port$(EXEEXT): $(unit_basic_serial_port_OBJECTS) $(unit_basic_serial_port_DEPENDENCIES) $(EXTRA_unit_basic_serial_port_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_serial_port$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_serial_port_OBJECTS) $(unit_basic_serial_port_LDADD) $(LIBS)
+unit/basic_signal_set.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_signal_set$(EXEEXT): $(unit_basic_signal_set_OBJECTS) $(unit_basic_signal_set_DEPENDENCIES) $(EXTRA_unit_basic_signal_set_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_signal_set$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_signal_set_OBJECTS) $(unit_basic_signal_set_LDADD) $(LIBS)
+unit/basic_socket.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_socket$(EXEEXT): $(unit_basic_socket_OBJECTS) $(unit_basic_socket_DEPENDENCIES) $(EXTRA_unit_basic_socket_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_socket$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_socket_OBJECTS) $(unit_basic_socket_LDADD) $(LIBS)
+unit/basic_socket_acceptor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_socket_acceptor$(EXEEXT): $(unit_basic_socket_acceptor_OBJECTS) $(unit_basic_socket_acceptor_DEPENDENCIES) $(EXTRA_unit_basic_socket_acceptor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_socket_acceptor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_socket_acceptor_OBJECTS) $(unit_basic_socket_acceptor_LDADD) $(LIBS)
+unit/basic_stream_file.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_stream_file$(EXEEXT): $(unit_basic_stream_file_OBJECTS) $(unit_basic_stream_file_DEPENDENCIES) $(EXTRA_unit_basic_stream_file_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_stream_file$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_stream_file_OBJECTS) $(unit_basic_stream_file_LDADD) $(LIBS)
+unit/basic_stream_socket.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_stream_socket$(EXEEXT): $(unit_basic_stream_socket_OBJECTS) $(unit_basic_stream_socket_DEPENDENCIES) $(EXTRA_unit_basic_stream_socket_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_stream_socket$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_stream_socket_OBJECTS) $(unit_basic_stream_socket_LDADD) $(LIBS)
+unit/basic_streambuf.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_streambuf$(EXEEXT): $(unit_basic_streambuf_OBJECTS) $(unit_basic_streambuf_DEPENDENCIES) $(EXTRA_unit_basic_streambuf_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_streambuf$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_streambuf_OBJECTS) $(unit_basic_streambuf_LDADD) $(LIBS)
+unit/basic_waitable_timer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_waitable_timer$(EXEEXT): $(unit_basic_waitable_timer_OBJECTS) $(unit_basic_waitable_timer_DEPENDENCIES) $(EXTRA_unit_basic_waitable_timer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_waitable_timer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_waitable_timer_OBJECTS) $(unit_basic_waitable_timer_LDADD) $(LIBS)
+unit/basic_writable_pipe.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/basic_writable_pipe$(EXEEXT): $(unit_basic_writable_pipe_OBJECTS) $(unit_basic_writable_pipe_DEPENDENCIES) $(EXTRA_unit_basic_writable_pipe_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/basic_writable_pipe$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_basic_writable_pipe_OBJECTS) $(unit_basic_writable_pipe_LDADD) $(LIBS)
+unit/bind_allocator.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/bind_allocator$(EXEEXT): $(unit_bind_allocator_OBJECTS) $(unit_bind_allocator_DEPENDENCIES) $(EXTRA_unit_bind_allocator_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/bind_allocator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_bind_allocator_OBJECTS) $(unit_bind_allocator_LDADD) $(LIBS)
+unit/bind_cancellation_slot.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/bind_cancellation_slot$(EXEEXT): $(unit_bind_cancellation_slot_OBJECTS) $(unit_bind_cancellation_slot_DEPENDENCIES) $(EXTRA_unit_bind_cancellation_slot_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/bind_cancellation_slot$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_bind_cancellation_slot_OBJECTS) $(unit_bind_cancellation_slot_LDADD) $(LIBS)
+unit/bind_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/bind_executor$(EXEEXT): $(unit_bind_executor_OBJECTS) $(unit_bind_executor_DEPENDENCIES) $(EXTRA_unit_bind_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/bind_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_bind_executor_OBJECTS) $(unit_bind_executor_LDADD) $(LIBS)
+unit/bind_immediate_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/bind_immediate_executor$(EXEEXT): $(unit_bind_immediate_executor_OBJECTS) $(unit_bind_immediate_executor_DEPENDENCIES) $(EXTRA_unit_bind_immediate_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/bind_immediate_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_bind_immediate_executor_OBJECTS) $(unit_bind_immediate_executor_LDADD) $(LIBS)
+unit/buffer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/buffer$(EXEEXT): $(unit_buffer_OBJECTS) $(unit_buffer_DEPENDENCIES) $(EXTRA_unit_buffer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/buffer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_buffer_OBJECTS) $(unit_buffer_LDADD) $(LIBS)
+unit/buffer_registration.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/buffer_registration$(EXEEXT): $(unit_buffer_registration_OBJECTS) $(unit_buffer_registration_DEPENDENCIES) $(EXTRA_unit_buffer_registration_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/buffer_registration$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_buffer_registration_OBJECTS) $(unit_buffer_registration_LDADD) $(LIBS)
+unit/buffered_read_stream.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/buffered_read_stream$(EXEEXT): $(unit_buffered_read_stream_OBJECTS) $(unit_buffered_read_stream_DEPENDENCIES) $(EXTRA_unit_buffered_read_stream_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/buffered_read_stream$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_buffered_read_stream_OBJECTS) $(unit_buffered_read_stream_LDADD) $(LIBS)
+unit/buffered_stream.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/buffered_stream$(EXEEXT): $(unit_buffered_stream_OBJECTS) $(unit_buffered_stream_DEPENDENCIES) $(EXTRA_unit_buffered_stream_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/buffered_stream$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_buffered_stream_OBJECTS) $(unit_buffered_stream_LDADD) $(LIBS)
+unit/buffered_write_stream.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/buffered_write_stream$(EXEEXT): $(unit_buffered_write_stream_OBJECTS) $(unit_buffered_write_stream_DEPENDENCIES) $(EXTRA_unit_buffered_write_stream_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/buffered_write_stream$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_buffered_write_stream_OBJECTS) $(unit_buffered_write_stream_LDADD) $(LIBS)
+unit/buffers_iterator.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/buffers_iterator$(EXEEXT): $(unit_buffers_iterator_OBJECTS) $(unit_buffers_iterator_DEPENDENCIES) $(EXTRA_unit_buffers_iterator_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/buffers_iterator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_buffers_iterator_OBJECTS) $(unit_buffers_iterator_LDADD) $(LIBS)
+unit/cancellation_signal.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/cancellation_signal$(EXEEXT): $(unit_cancellation_signal_OBJECTS) $(unit_cancellation_signal_DEPENDENCIES) $(EXTRA_unit_cancellation_signal_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/cancellation_signal$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_cancellation_signal_OBJECTS) $(unit_cancellation_signal_LDADD) $(LIBS)
+unit/cancellation_state.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/cancellation_state$(EXEEXT): $(unit_cancellation_state_OBJECTS) $(unit_cancellation_state_DEPENDENCIES) $(EXTRA_unit_cancellation_state_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/cancellation_state$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_cancellation_state_OBJECTS) $(unit_cancellation_state_LDADD) $(LIBS)
+unit/cancellation_type.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/cancellation_type$(EXEEXT): $(unit_cancellation_type_OBJECTS) $(unit_cancellation_type_DEPENDENCIES) $(EXTRA_unit_cancellation_type_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/cancellation_type$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_cancellation_type_OBJECTS) $(unit_cancellation_type_LDADD) $(LIBS)
+unit/co_spawn.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/co_spawn$(EXEEXT): $(unit_co_spawn_OBJECTS) $(unit_co_spawn_DEPENDENCIES) $(EXTRA_unit_co_spawn_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/co_spawn$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_co_spawn_OBJECTS) $(unit_co_spawn_LDADD) $(LIBS)
+unit/completion_condition.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/completion_condition$(EXEEXT): $(unit_completion_condition_OBJECTS) $(unit_completion_condition_DEPENDENCIES) $(EXTRA_unit_completion_condition_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/completion_condition$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_completion_condition_OBJECTS) $(unit_completion_condition_LDADD) $(LIBS)
+unit/compose.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/compose$(EXEEXT): $(unit_compose_OBJECTS) $(unit_compose_DEPENDENCIES) $(EXTRA_unit_compose_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/compose$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_compose_OBJECTS) $(unit_compose_LDADD) $(LIBS)
+unit/connect.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/connect$(EXEEXT): $(unit_connect_OBJECTS) $(unit_connect_DEPENDENCIES) $(EXTRA_unit_connect_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/connect$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_connect_OBJECTS) $(unit_connect_LDADD) $(LIBS)
+unit/connect_pipe.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/connect_pipe$(EXEEXT): $(unit_connect_pipe_OBJECTS) $(unit_connect_pipe_DEPENDENCIES) $(EXTRA_unit_connect_pipe_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/connect_pipe$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_connect_pipe_OBJECTS) $(unit_connect_pipe_LDADD) $(LIBS)
+unit/consign.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/consign$(EXEEXT): $(unit_consign_OBJECTS) $(unit_consign_DEPENDENCIES) $(EXTRA_unit_consign_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/consign$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_consign_OBJECTS) $(unit_consign_LDADD) $(LIBS)
+unit/coroutine.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/coroutine$(EXEEXT): $(unit_coroutine_OBJECTS) $(unit_coroutine_DEPENDENCIES) $(EXTRA_unit_coroutine_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/coroutine$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_coroutine_OBJECTS) $(unit_coroutine_LDADD) $(LIBS)
+unit/deadline_timer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/deadline_timer$(EXEEXT): $(unit_deadline_timer_OBJECTS) $(unit_deadline_timer_DEPENDENCIES) $(EXTRA_unit_deadline_timer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/deadline_timer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_deadline_timer_OBJECTS) $(unit_deadline_timer_LDADD) $(LIBS)
+unit/defer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/defer$(EXEEXT): $(unit_defer_OBJECTS) $(unit_defer_DEPENDENCIES) $(EXTRA_unit_defer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/defer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_defer_OBJECTS) $(unit_defer_LDADD) $(LIBS)
+unit/deferred.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/deferred$(EXEEXT): $(unit_deferred_OBJECTS) $(unit_deferred_DEPENDENCIES) $(EXTRA_unit_deferred_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/deferred$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_deferred_OBJECTS) $(unit_deferred_LDADD) $(LIBS)
+unit/detached.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/detached$(EXEEXT): $(unit_detached_OBJECTS) $(unit_detached_DEPENDENCIES) $(EXTRA_unit_detached_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/detached$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_detached_OBJECTS) $(unit_detached_LDADD) $(LIBS)
+unit/dispatch.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/dispatch$(EXEEXT): $(unit_dispatch_OBJECTS) $(unit_dispatch_DEPENDENCIES) $(EXTRA_unit_dispatch_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/dispatch$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_dispatch_OBJECTS) $(unit_dispatch_LDADD) $(LIBS)
+unit/error.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/error$(EXEEXT): $(unit_error_OBJECTS) $(unit_error_DEPENDENCIES) $(EXTRA_unit_error_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/error$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_error_OBJECTS) $(unit_error_LDADD) $(LIBS)
+unit/execution/$(am__dirstamp):
+ @$(MKDIR_P) unit/execution
+ @: > unit/execution/$(am__dirstamp)
+unit/execution/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/execution/$(DEPDIR)
+ @: > unit/execution/$(DEPDIR)/$(am__dirstamp)
+unit/execution/any_executor.$(OBJEXT): unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/any_executor$(EXEEXT): $(unit_execution_any_executor_OBJECTS) $(unit_execution_any_executor_DEPENDENCIES) $(EXTRA_unit_execution_any_executor_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/any_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_any_executor_OBJECTS) $(unit_execution_any_executor_LDADD) $(LIBS)
+unit/execution/blocking.$(OBJEXT): unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/blocking$(EXEEXT): $(unit_execution_blocking_OBJECTS) $(unit_execution_blocking_DEPENDENCIES) $(EXTRA_unit_execution_blocking_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/blocking$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_blocking_OBJECTS) $(unit_execution_blocking_LDADD) $(LIBS)
+unit/execution/blocking_adaptation.$(OBJEXT): \
+ unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/blocking_adaptation$(EXEEXT): $(unit_execution_blocking_adaptation_OBJECTS) $(unit_execution_blocking_adaptation_DEPENDENCIES) $(EXTRA_unit_execution_blocking_adaptation_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/blocking_adaptation$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_blocking_adaptation_OBJECTS) $(unit_execution_blocking_adaptation_LDADD) $(LIBS)
+unit/execution/context_as.$(OBJEXT): unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/context_as$(EXEEXT): $(unit_execution_context_as_OBJECTS) $(unit_execution_context_as_DEPENDENCIES) $(EXTRA_unit_execution_context_as_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/context_as$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_context_as_OBJECTS) $(unit_execution_context_as_LDADD) $(LIBS)
+unit/execution/executor.$(OBJEXT): unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/executor$(EXEEXT): $(unit_execution_executor_OBJECTS) $(unit_execution_executor_DEPENDENCIES) $(EXTRA_unit_execution_executor_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_executor_OBJECTS) $(unit_execution_executor_LDADD) $(LIBS)
+unit/execution/invocable_archetype.$(OBJEXT): \
+ unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/invocable_archetype$(EXEEXT): $(unit_execution_invocable_archetype_OBJECTS) $(unit_execution_invocable_archetype_DEPENDENCIES) $(EXTRA_unit_execution_invocable_archetype_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/invocable_archetype$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_invocable_archetype_OBJECTS) $(unit_execution_invocable_archetype_LDADD) $(LIBS)
+unit/execution/mapping.$(OBJEXT): unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/mapping$(EXEEXT): $(unit_execution_mapping_OBJECTS) $(unit_execution_mapping_DEPENDENCIES) $(EXTRA_unit_execution_mapping_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/mapping$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_mapping_OBJECTS) $(unit_execution_mapping_LDADD) $(LIBS)
+unit/execution/outstanding_work.$(OBJEXT): \
+ unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/outstanding_work$(EXEEXT): $(unit_execution_outstanding_work_OBJECTS) $(unit_execution_outstanding_work_DEPENDENCIES) $(EXTRA_unit_execution_outstanding_work_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/outstanding_work$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_outstanding_work_OBJECTS) $(unit_execution_outstanding_work_LDADD) $(LIBS)
+unit/execution/prefer_only.$(OBJEXT): unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/prefer_only$(EXEEXT): $(unit_execution_prefer_only_OBJECTS) $(unit_execution_prefer_only_DEPENDENCIES) $(EXTRA_unit_execution_prefer_only_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/prefer_only$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_prefer_only_OBJECTS) $(unit_execution_prefer_only_LDADD) $(LIBS)
+unit/execution/relationship.$(OBJEXT): unit/execution/$(am__dirstamp) \
+ unit/execution/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution/relationship$(EXEEXT): $(unit_execution_relationship_OBJECTS) $(unit_execution_relationship_DEPENDENCIES) $(EXTRA_unit_execution_relationship_DEPENDENCIES) unit/execution/$(am__dirstamp)
+ @rm -f unit/execution/relationship$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_relationship_OBJECTS) $(unit_execution_relationship_LDADD) $(LIBS)
+unit/execution_context.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/execution_context$(EXEEXT): $(unit_execution_context_OBJECTS) $(unit_execution_context_DEPENDENCIES) $(EXTRA_unit_execution_context_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/execution_context$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_execution_context_OBJECTS) $(unit_execution_context_LDADD) $(LIBS)
+unit/executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/executor$(EXEEXT): $(unit_executor_OBJECTS) $(unit_executor_DEPENDENCIES) $(EXTRA_unit_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_executor_OBJECTS) $(unit_executor_LDADD) $(LIBS)
+unit/executor_work_guard.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/executor_work_guard$(EXEEXT): $(unit_executor_work_guard_OBJECTS) $(unit_executor_work_guard_DEPENDENCIES) $(EXTRA_unit_executor_work_guard_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/executor_work_guard$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_executor_work_guard_OBJECTS) $(unit_executor_work_guard_LDADD) $(LIBS)
+unit/experimental/$(am__dirstamp):
+ @$(MKDIR_P) unit/experimental
+ @: > unit/experimental/$(am__dirstamp)
+unit/experimental/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/experimental/$(DEPDIR)
+ @: > unit/experimental/$(DEPDIR)/$(am__dirstamp)
+unit/experimental/awaitable_operators.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/awaitable_operators$(EXEEXT): $(unit_experimental_awaitable_operators_OBJECTS) $(unit_experimental_awaitable_operators_DEPENDENCIES) $(EXTRA_unit_experimental_awaitable_operators_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/awaitable_operators$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_awaitable_operators_OBJECTS) $(unit_experimental_awaitable_operators_LDADD) $(LIBS)
+unit/experimental/basic_channel.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/basic_channel$(EXEEXT): $(unit_experimental_basic_channel_OBJECTS) $(unit_experimental_basic_channel_DEPENDENCIES) $(EXTRA_unit_experimental_basic_channel_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/basic_channel$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_basic_channel_OBJECTS) $(unit_experimental_basic_channel_LDADD) $(LIBS)
+unit/experimental/basic_concurrent_channel.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/basic_concurrent_channel$(EXEEXT): $(unit_experimental_basic_concurrent_channel_OBJECTS) $(unit_experimental_basic_concurrent_channel_DEPENDENCIES) $(EXTRA_unit_experimental_basic_concurrent_channel_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/basic_concurrent_channel$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_basic_concurrent_channel_OBJECTS) $(unit_experimental_basic_concurrent_channel_LDADD) $(LIBS)
+unit/experimental/channel.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/channel$(EXEEXT): $(unit_experimental_channel_OBJECTS) $(unit_experimental_channel_DEPENDENCIES) $(EXTRA_unit_experimental_channel_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/channel$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_channel_OBJECTS) $(unit_experimental_channel_LDADD) $(LIBS)
+unit/experimental/channel_traits.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/channel_traits$(EXEEXT): $(unit_experimental_channel_traits_OBJECTS) $(unit_experimental_channel_traits_DEPENDENCIES) $(EXTRA_unit_experimental_channel_traits_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/channel_traits$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_channel_traits_OBJECTS) $(unit_experimental_channel_traits_LDADD) $(LIBS)
+unit/experimental/co_composed.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/co_composed$(EXEEXT): $(unit_experimental_co_composed_OBJECTS) $(unit_experimental_co_composed_DEPENDENCIES) $(EXTRA_unit_experimental_co_composed_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/co_composed$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_co_composed_OBJECTS) $(unit_experimental_co_composed_LDADD) $(LIBS)
+unit/experimental/concurrent_channel.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/concurrent_channel$(EXEEXT): $(unit_experimental_concurrent_channel_OBJECTS) $(unit_experimental_concurrent_channel_DEPENDENCIES) $(EXTRA_unit_experimental_concurrent_channel_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/concurrent_channel$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_concurrent_channel_OBJECTS) $(unit_experimental_concurrent_channel_LDADD) $(LIBS)
+unit/experimental/coro/$(am__dirstamp):
+ @$(MKDIR_P) unit/experimental/coro
+ @: > unit/experimental/coro/$(am__dirstamp)
+unit/experimental/coro/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/experimental/coro/$(DEPDIR)
+ @: > unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+unit/experimental/coro/allocator.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/allocator$(EXEEXT): $(unit_experimental_coro_allocator_OBJECTS) $(unit_experimental_coro_allocator_DEPENDENCIES) $(EXTRA_unit_experimental_coro_allocator_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/allocator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_allocator_OBJECTS) $(unit_experimental_coro_allocator_LDADD) $(LIBS)
+unit/experimental/coro/cancel.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/cancel$(EXEEXT): $(unit_experimental_coro_cancel_OBJECTS) $(unit_experimental_coro_cancel_DEPENDENCIES) $(EXTRA_unit_experimental_coro_cancel_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/cancel$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_cancel_OBJECTS) $(unit_experimental_coro_cancel_LDADD) $(LIBS)
+unit/experimental/coro/co_spawn.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/co_spawn$(EXEEXT): $(unit_experimental_coro_co_spawn_OBJECTS) $(unit_experimental_coro_co_spawn_DEPENDENCIES) $(EXTRA_unit_experimental_coro_co_spawn_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/co_spawn$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_co_spawn_OBJECTS) $(unit_experimental_coro_co_spawn_LDADD) $(LIBS)
+unit/experimental/coro/exception.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/exception$(EXEEXT): $(unit_experimental_coro_exception_OBJECTS) $(unit_experimental_coro_exception_DEPENDENCIES) $(EXTRA_unit_experimental_coro_exception_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/exception$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_exception_OBJECTS) $(unit_experimental_coro_exception_LDADD) $(LIBS)
+unit/experimental/coro/executor.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/executor$(EXEEXT): $(unit_experimental_coro_executor_OBJECTS) $(unit_experimental_coro_executor_DEPENDENCIES) $(EXTRA_unit_experimental_coro_executor_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_executor_OBJECTS) $(unit_experimental_coro_executor_LDADD) $(LIBS)
+unit/experimental/coro/partial.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/partial$(EXEEXT): $(unit_experimental_coro_partial_OBJECTS) $(unit_experimental_coro_partial_DEPENDENCIES) $(EXTRA_unit_experimental_coro_partial_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/partial$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_partial_OBJECTS) $(unit_experimental_coro_partial_LDADD) $(LIBS)
+unit/experimental/coro/simple_test.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/simple_test$(EXEEXT): $(unit_experimental_coro_simple_test_OBJECTS) $(unit_experimental_coro_simple_test_DEPENDENCIES) $(EXTRA_unit_experimental_coro_simple_test_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/simple_test$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_simple_test_OBJECTS) $(unit_experimental_coro_simple_test_LDADD) $(LIBS)
+unit/experimental/coro/stack_test.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/stack_test$(EXEEXT): $(unit_experimental_coro_stack_test_OBJECTS) $(unit_experimental_coro_stack_test_DEPENDENCIES) $(EXTRA_unit_experimental_coro_stack_test_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/stack_test$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_stack_test_OBJECTS) $(unit_experimental_coro_stack_test_LDADD) $(LIBS)
+unit/experimental/coro/use_coro.$(OBJEXT): \
+ unit/experimental/coro/$(am__dirstamp) \
+ unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/coro/use_coro$(EXEEXT): $(unit_experimental_coro_use_coro_OBJECTS) $(unit_experimental_coro_use_coro_DEPENDENCIES) $(EXTRA_unit_experimental_coro_use_coro_DEPENDENCIES) unit/experimental/coro/$(am__dirstamp)
+ @rm -f unit/experimental/coro/use_coro$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_coro_use_coro_OBJECTS) $(unit_experimental_coro_use_coro_LDADD) $(LIBS)
+unit/experimental/parallel_group.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/parallel_group$(EXEEXT): $(unit_experimental_parallel_group_OBJECTS) $(unit_experimental_parallel_group_DEPENDENCIES) $(EXTRA_unit_experimental_parallel_group_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/parallel_group$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_parallel_group_OBJECTS) $(unit_experimental_parallel_group_LDADD) $(LIBS)
+unit/experimental/promise.$(OBJEXT): \
+ unit/experimental/$(am__dirstamp) \
+ unit/experimental/$(DEPDIR)/$(am__dirstamp)
+
+unit/experimental/promise$(EXEEXT): $(unit_experimental_promise_OBJECTS) $(unit_experimental_promise_DEPENDENCIES) $(EXTRA_unit_experimental_promise_DEPENDENCIES) unit/experimental/$(am__dirstamp)
+ @rm -f unit/experimental/promise$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_experimental_promise_OBJECTS) $(unit_experimental_promise_LDADD) $(LIBS)
+unit/file_base.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/file_base$(EXEEXT): $(unit_file_base_OBJECTS) $(unit_file_base_DEPENDENCIES) $(EXTRA_unit_file_base_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/file_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_file_base_OBJECTS) $(unit_file_base_LDADD) $(LIBS)
+unit/generic/$(am__dirstamp):
+ @$(MKDIR_P) unit/generic
+ @: > unit/generic/$(am__dirstamp)
+unit/generic/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/generic/$(DEPDIR)
+ @: > unit/generic/$(DEPDIR)/$(am__dirstamp)
+unit/generic/basic_endpoint.$(OBJEXT): unit/generic/$(am__dirstamp) \
+ unit/generic/$(DEPDIR)/$(am__dirstamp)
+
+unit/generic/basic_endpoint$(EXEEXT): $(unit_generic_basic_endpoint_OBJECTS) $(unit_generic_basic_endpoint_DEPENDENCIES) $(EXTRA_unit_generic_basic_endpoint_DEPENDENCIES) unit/generic/$(am__dirstamp)
+ @rm -f unit/generic/basic_endpoint$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_generic_basic_endpoint_OBJECTS) $(unit_generic_basic_endpoint_LDADD) $(LIBS)
+unit/generic/datagram_protocol.$(OBJEXT): \
+ unit/generic/$(am__dirstamp) \
+ unit/generic/$(DEPDIR)/$(am__dirstamp)
+
+unit/generic/datagram_protocol$(EXEEXT): $(unit_generic_datagram_protocol_OBJECTS) $(unit_generic_datagram_protocol_DEPENDENCIES) $(EXTRA_unit_generic_datagram_protocol_DEPENDENCIES) unit/generic/$(am__dirstamp)
+ @rm -f unit/generic/datagram_protocol$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_generic_datagram_protocol_OBJECTS) $(unit_generic_datagram_protocol_LDADD) $(LIBS)
+unit/generic/raw_protocol.$(OBJEXT): unit/generic/$(am__dirstamp) \
+ unit/generic/$(DEPDIR)/$(am__dirstamp)
+
+unit/generic/raw_protocol$(EXEEXT): $(unit_generic_raw_protocol_OBJECTS) $(unit_generic_raw_protocol_DEPENDENCIES) $(EXTRA_unit_generic_raw_protocol_DEPENDENCIES) unit/generic/$(am__dirstamp)
+ @rm -f unit/generic/raw_protocol$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_generic_raw_protocol_OBJECTS) $(unit_generic_raw_protocol_LDADD) $(LIBS)
+unit/generic/seq_packet_protocol.$(OBJEXT): \
+ unit/generic/$(am__dirstamp) \
+ unit/generic/$(DEPDIR)/$(am__dirstamp)
+
+unit/generic/seq_packet_protocol$(EXEEXT): $(unit_generic_seq_packet_protocol_OBJECTS) $(unit_generic_seq_packet_protocol_DEPENDENCIES) $(EXTRA_unit_generic_seq_packet_protocol_DEPENDENCIES) unit/generic/$(am__dirstamp)
+ @rm -f unit/generic/seq_packet_protocol$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_generic_seq_packet_protocol_OBJECTS) $(unit_generic_seq_packet_protocol_LDADD) $(LIBS)
+unit/generic/stream_protocol.$(OBJEXT): unit/generic/$(am__dirstamp) \
+ unit/generic/$(DEPDIR)/$(am__dirstamp)
+
+unit/generic/stream_protocol$(EXEEXT): $(unit_generic_stream_protocol_OBJECTS) $(unit_generic_stream_protocol_DEPENDENCIES) $(EXTRA_unit_generic_stream_protocol_DEPENDENCIES) unit/generic/$(am__dirstamp)
+ @rm -f unit/generic/stream_protocol$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_generic_stream_protocol_OBJECTS) $(unit_generic_stream_protocol_LDADD) $(LIBS)
+unit/high_resolution_timer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/high_resolution_timer$(EXEEXT): $(unit_high_resolution_timer_OBJECTS) $(unit_high_resolution_timer_DEPENDENCIES) $(EXTRA_unit_high_resolution_timer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/high_resolution_timer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_high_resolution_timer_OBJECTS) $(unit_high_resolution_timer_LDADD) $(LIBS)
+unit/io_context.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/io_context$(EXEEXT): $(unit_io_context_OBJECTS) $(unit_io_context_DEPENDENCIES) $(EXTRA_unit_io_context_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/io_context$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_io_context_OBJECTS) $(unit_io_context_LDADD) $(LIBS)
+unit/io_context_strand.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/io_context_strand$(EXEEXT): $(unit_io_context_strand_OBJECTS) $(unit_io_context_strand_DEPENDENCIES) $(EXTRA_unit_io_context_strand_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/io_context_strand$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_io_context_strand_OBJECTS) $(unit_io_context_strand_LDADD) $(LIBS)
+unit/ip/$(am__dirstamp):
+ @$(MKDIR_P) unit/ip
+ @: > unit/ip/$(am__dirstamp)
+unit/ip/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/ip/$(DEPDIR)
+ @: > unit/ip/$(DEPDIR)/$(am__dirstamp)
+unit/ip/address.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/address$(EXEEXT): $(unit_ip_address_OBJECTS) $(unit_ip_address_DEPENDENCIES) $(EXTRA_unit_ip_address_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/address$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_address_OBJECTS) $(unit_ip_address_LDADD) $(LIBS)
+unit/ip/address_v4.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/address_v4$(EXEEXT): $(unit_ip_address_v4_OBJECTS) $(unit_ip_address_v4_DEPENDENCIES) $(EXTRA_unit_ip_address_v4_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/address_v4$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_address_v4_OBJECTS) $(unit_ip_address_v4_LDADD) $(LIBS)
+unit/ip/address_v4_iterator.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/address_v4_iterator$(EXEEXT): $(unit_ip_address_v4_iterator_OBJECTS) $(unit_ip_address_v4_iterator_DEPENDENCIES) $(EXTRA_unit_ip_address_v4_iterator_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/address_v4_iterator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_address_v4_iterator_OBJECTS) $(unit_ip_address_v4_iterator_LDADD) $(LIBS)
+unit/ip/address_v4_range.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/address_v4_range$(EXEEXT): $(unit_ip_address_v4_range_OBJECTS) $(unit_ip_address_v4_range_DEPENDENCIES) $(EXTRA_unit_ip_address_v4_range_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/address_v4_range$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_address_v4_range_OBJECTS) $(unit_ip_address_v4_range_LDADD) $(LIBS)
+unit/ip/address_v6.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/address_v6$(EXEEXT): $(unit_ip_address_v6_OBJECTS) $(unit_ip_address_v6_DEPENDENCIES) $(EXTRA_unit_ip_address_v6_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/address_v6$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_address_v6_OBJECTS) $(unit_ip_address_v6_LDADD) $(LIBS)
+unit/ip/address_v6_iterator.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/address_v6_iterator$(EXEEXT): $(unit_ip_address_v6_iterator_OBJECTS) $(unit_ip_address_v6_iterator_DEPENDENCIES) $(EXTRA_unit_ip_address_v6_iterator_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/address_v6_iterator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_address_v6_iterator_OBJECTS) $(unit_ip_address_v6_iterator_LDADD) $(LIBS)
+unit/ip/address_v6_range.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/address_v6_range$(EXEEXT): $(unit_ip_address_v6_range_OBJECTS) $(unit_ip_address_v6_range_DEPENDENCIES) $(EXTRA_unit_ip_address_v6_range_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/address_v6_range$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_address_v6_range_OBJECTS) $(unit_ip_address_v6_range_LDADD) $(LIBS)
+unit/ip/basic_endpoint.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/basic_endpoint$(EXEEXT): $(unit_ip_basic_endpoint_OBJECTS) $(unit_ip_basic_endpoint_DEPENDENCIES) $(EXTRA_unit_ip_basic_endpoint_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/basic_endpoint$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_basic_endpoint_OBJECTS) $(unit_ip_basic_endpoint_LDADD) $(LIBS)
+unit/ip/basic_resolver.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/basic_resolver$(EXEEXT): $(unit_ip_basic_resolver_OBJECTS) $(unit_ip_basic_resolver_DEPENDENCIES) $(EXTRA_unit_ip_basic_resolver_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/basic_resolver$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_basic_resolver_OBJECTS) $(unit_ip_basic_resolver_LDADD) $(LIBS)
+unit/ip/basic_resolver_entry.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/basic_resolver_entry$(EXEEXT): $(unit_ip_basic_resolver_entry_OBJECTS) $(unit_ip_basic_resolver_entry_DEPENDENCIES) $(EXTRA_unit_ip_basic_resolver_entry_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/basic_resolver_entry$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_basic_resolver_entry_OBJECTS) $(unit_ip_basic_resolver_entry_LDADD) $(LIBS)
+unit/ip/basic_resolver_iterator.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/basic_resolver_iterator$(EXEEXT): $(unit_ip_basic_resolver_iterator_OBJECTS) $(unit_ip_basic_resolver_iterator_DEPENDENCIES) $(EXTRA_unit_ip_basic_resolver_iterator_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/basic_resolver_iterator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_basic_resolver_iterator_OBJECTS) $(unit_ip_basic_resolver_iterator_LDADD) $(LIBS)
+unit/ip/basic_resolver_query.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/basic_resolver_query$(EXEEXT): $(unit_ip_basic_resolver_query_OBJECTS) $(unit_ip_basic_resolver_query_DEPENDENCIES) $(EXTRA_unit_ip_basic_resolver_query_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/basic_resolver_query$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_basic_resolver_query_OBJECTS) $(unit_ip_basic_resolver_query_LDADD) $(LIBS)
+unit/ip/host_name.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/host_name$(EXEEXT): $(unit_ip_host_name_OBJECTS) $(unit_ip_host_name_DEPENDENCIES) $(EXTRA_unit_ip_host_name_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/host_name$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_host_name_OBJECTS) $(unit_ip_host_name_LDADD) $(LIBS)
+unit/ip/icmp.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/icmp$(EXEEXT): $(unit_ip_icmp_OBJECTS) $(unit_ip_icmp_DEPENDENCIES) $(EXTRA_unit_ip_icmp_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/icmp$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_icmp_OBJECTS) $(unit_ip_icmp_LDADD) $(LIBS)
+unit/ip/multicast.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/multicast$(EXEEXT): $(unit_ip_multicast_OBJECTS) $(unit_ip_multicast_DEPENDENCIES) $(EXTRA_unit_ip_multicast_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/multicast$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_multicast_OBJECTS) $(unit_ip_multicast_LDADD) $(LIBS)
+unit/ip/network_v4.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/network_v4$(EXEEXT): $(unit_ip_network_v4_OBJECTS) $(unit_ip_network_v4_DEPENDENCIES) $(EXTRA_unit_ip_network_v4_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/network_v4$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_network_v4_OBJECTS) $(unit_ip_network_v4_LDADD) $(LIBS)
+unit/ip/network_v6.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/network_v6$(EXEEXT): $(unit_ip_network_v6_OBJECTS) $(unit_ip_network_v6_DEPENDENCIES) $(EXTRA_unit_ip_network_v6_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/network_v6$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_network_v6_OBJECTS) $(unit_ip_network_v6_LDADD) $(LIBS)
+unit/ip/resolver_query_base.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/resolver_query_base$(EXEEXT): $(unit_ip_resolver_query_base_OBJECTS) $(unit_ip_resolver_query_base_DEPENDENCIES) $(EXTRA_unit_ip_resolver_query_base_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/resolver_query_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_resolver_query_base_OBJECTS) $(unit_ip_resolver_query_base_LDADD) $(LIBS)
+unit/ip/tcp.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/tcp$(EXEEXT): $(unit_ip_tcp_OBJECTS) $(unit_ip_tcp_DEPENDENCIES) $(EXTRA_unit_ip_tcp_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/tcp$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_tcp_OBJECTS) $(unit_ip_tcp_LDADD) $(LIBS)
+unit/ip/udp.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/udp$(EXEEXT): $(unit_ip_udp_OBJECTS) $(unit_ip_udp_DEPENDENCIES) $(EXTRA_unit_ip_udp_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/udp$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_udp_OBJECTS) $(unit_ip_udp_LDADD) $(LIBS)
+unit/ip/unicast.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/unicast$(EXEEXT): $(unit_ip_unicast_OBJECTS) $(unit_ip_unicast_DEPENDENCIES) $(EXTRA_unit_ip_unicast_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/unicast$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_unicast_OBJECTS) $(unit_ip_unicast_LDADD) $(LIBS)
+unit/ip/v6_only.$(OBJEXT): unit/ip/$(am__dirstamp) \
+ unit/ip/$(DEPDIR)/$(am__dirstamp)
+
+unit/ip/v6_only$(EXEEXT): $(unit_ip_v6_only_OBJECTS) $(unit_ip_v6_only_DEPENDENCIES) $(EXTRA_unit_ip_v6_only_DEPENDENCIES) unit/ip/$(am__dirstamp)
+ @rm -f unit/ip/v6_only$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ip_v6_only_OBJECTS) $(unit_ip_v6_only_LDADD) $(LIBS)
+unit/is_read_buffered.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/is_read_buffered$(EXEEXT): $(unit_is_read_buffered_OBJECTS) $(unit_is_read_buffered_DEPENDENCIES) $(EXTRA_unit_is_read_buffered_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/is_read_buffered$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_is_read_buffered_OBJECTS) $(unit_is_read_buffered_LDADD) $(LIBS)
+unit/is_write_buffered.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/is_write_buffered$(EXEEXT): $(unit_is_write_buffered_OBJECTS) $(unit_is_write_buffered_DEPENDENCIES) $(EXTRA_unit_is_write_buffered_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/is_write_buffered$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_is_write_buffered_OBJECTS) $(unit_is_write_buffered_LDADD) $(LIBS)
+unit/local/$(am__dirstamp):
+ @$(MKDIR_P) unit/local
+ @: > unit/local/$(am__dirstamp)
+unit/local/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/local/$(DEPDIR)
+ @: > unit/local/$(DEPDIR)/$(am__dirstamp)
+unit/local/basic_endpoint.$(OBJEXT): unit/local/$(am__dirstamp) \
+ unit/local/$(DEPDIR)/$(am__dirstamp)
+
+unit/local/basic_endpoint$(EXEEXT): $(unit_local_basic_endpoint_OBJECTS) $(unit_local_basic_endpoint_DEPENDENCIES) $(EXTRA_unit_local_basic_endpoint_DEPENDENCIES) unit/local/$(am__dirstamp)
+ @rm -f unit/local/basic_endpoint$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_local_basic_endpoint_OBJECTS) $(unit_local_basic_endpoint_LDADD) $(LIBS)
+unit/local/connect_pair.$(OBJEXT): unit/local/$(am__dirstamp) \
+ unit/local/$(DEPDIR)/$(am__dirstamp)
+
+unit/local/connect_pair$(EXEEXT): $(unit_local_connect_pair_OBJECTS) $(unit_local_connect_pair_DEPENDENCIES) $(EXTRA_unit_local_connect_pair_DEPENDENCIES) unit/local/$(am__dirstamp)
+ @rm -f unit/local/connect_pair$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_local_connect_pair_OBJECTS) $(unit_local_connect_pair_LDADD) $(LIBS)
+unit/local/datagram_protocol.$(OBJEXT): unit/local/$(am__dirstamp) \
+ unit/local/$(DEPDIR)/$(am__dirstamp)
+
+unit/local/datagram_protocol$(EXEEXT): $(unit_local_datagram_protocol_OBJECTS) $(unit_local_datagram_protocol_DEPENDENCIES) $(EXTRA_unit_local_datagram_protocol_DEPENDENCIES) unit/local/$(am__dirstamp)
+ @rm -f unit/local/datagram_protocol$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_local_datagram_protocol_OBJECTS) $(unit_local_datagram_protocol_LDADD) $(LIBS)
+unit/local/seq_packet_protocol.$(OBJEXT): unit/local/$(am__dirstamp) \
+ unit/local/$(DEPDIR)/$(am__dirstamp)
+
+unit/local/seq_packet_protocol$(EXEEXT): $(unit_local_seq_packet_protocol_OBJECTS) $(unit_local_seq_packet_protocol_DEPENDENCIES) $(EXTRA_unit_local_seq_packet_protocol_DEPENDENCIES) unit/local/$(am__dirstamp)
+ @rm -f unit/local/seq_packet_protocol$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_local_seq_packet_protocol_OBJECTS) $(unit_local_seq_packet_protocol_LDADD) $(LIBS)
+unit/local/stream_protocol.$(OBJEXT): unit/local/$(am__dirstamp) \
+ unit/local/$(DEPDIR)/$(am__dirstamp)
+
+unit/local/stream_protocol$(EXEEXT): $(unit_local_stream_protocol_OBJECTS) $(unit_local_stream_protocol_DEPENDENCIES) $(EXTRA_unit_local_stream_protocol_DEPENDENCIES) unit/local/$(am__dirstamp)
+ @rm -f unit/local/stream_protocol$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_local_stream_protocol_OBJECTS) $(unit_local_stream_protocol_LDADD) $(LIBS)
+unit/packaged_task.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/packaged_task$(EXEEXT): $(unit_packaged_task_OBJECTS) $(unit_packaged_task_DEPENDENCIES) $(EXTRA_unit_packaged_task_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/packaged_task$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_packaged_task_OBJECTS) $(unit_packaged_task_LDADD) $(LIBS)
+unit/placeholders.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/placeholders$(EXEEXT): $(unit_placeholders_OBJECTS) $(unit_placeholders_DEPENDENCIES) $(EXTRA_unit_placeholders_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/placeholders$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_placeholders_OBJECTS) $(unit_placeholders_LDADD) $(LIBS)
+unit/posix/$(am__dirstamp):
+ @$(MKDIR_P) unit/posix
+ @: > unit/posix/$(am__dirstamp)
+unit/posix/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/posix/$(DEPDIR)
+ @: > unit/posix/$(DEPDIR)/$(am__dirstamp)
+unit/posix/basic_descriptor.$(OBJEXT): unit/posix/$(am__dirstamp) \
+ unit/posix/$(DEPDIR)/$(am__dirstamp)
+
+unit/posix/basic_descriptor$(EXEEXT): $(unit_posix_basic_descriptor_OBJECTS) $(unit_posix_basic_descriptor_DEPENDENCIES) $(EXTRA_unit_posix_basic_descriptor_DEPENDENCIES) unit/posix/$(am__dirstamp)
+ @rm -f unit/posix/basic_descriptor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_posix_basic_descriptor_OBJECTS) $(unit_posix_basic_descriptor_LDADD) $(LIBS)
+unit/posix/basic_stream_descriptor.$(OBJEXT): \
+ unit/posix/$(am__dirstamp) \
+ unit/posix/$(DEPDIR)/$(am__dirstamp)
+
+unit/posix/basic_stream_descriptor$(EXEEXT): $(unit_posix_basic_stream_descriptor_OBJECTS) $(unit_posix_basic_stream_descriptor_DEPENDENCIES) $(EXTRA_unit_posix_basic_stream_descriptor_DEPENDENCIES) unit/posix/$(am__dirstamp)
+ @rm -f unit/posix/basic_stream_descriptor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_posix_basic_stream_descriptor_OBJECTS) $(unit_posix_basic_stream_descriptor_LDADD) $(LIBS)
+unit/posix/descriptor.$(OBJEXT): unit/posix/$(am__dirstamp) \
+ unit/posix/$(DEPDIR)/$(am__dirstamp)
+
+unit/posix/descriptor$(EXEEXT): $(unit_posix_descriptor_OBJECTS) $(unit_posix_descriptor_DEPENDENCIES) $(EXTRA_unit_posix_descriptor_DEPENDENCIES) unit/posix/$(am__dirstamp)
+ @rm -f unit/posix/descriptor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_posix_descriptor_OBJECTS) $(unit_posix_descriptor_LDADD) $(LIBS)
+unit/posix/descriptor_base.$(OBJEXT): unit/posix/$(am__dirstamp) \
+ unit/posix/$(DEPDIR)/$(am__dirstamp)
+
+unit/posix/descriptor_base$(EXEEXT): $(unit_posix_descriptor_base_OBJECTS) $(unit_posix_descriptor_base_DEPENDENCIES) $(EXTRA_unit_posix_descriptor_base_DEPENDENCIES) unit/posix/$(am__dirstamp)
+ @rm -f unit/posix/descriptor_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_posix_descriptor_base_OBJECTS) $(unit_posix_descriptor_base_LDADD) $(LIBS)
+unit/posix/stream_descriptor.$(OBJEXT): unit/posix/$(am__dirstamp) \
+ unit/posix/$(DEPDIR)/$(am__dirstamp)
+
+unit/posix/stream_descriptor$(EXEEXT): $(unit_posix_stream_descriptor_OBJECTS) $(unit_posix_stream_descriptor_DEPENDENCIES) $(EXTRA_unit_posix_stream_descriptor_DEPENDENCIES) unit/posix/$(am__dirstamp)
+ @rm -f unit/posix/stream_descriptor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_posix_stream_descriptor_OBJECTS) $(unit_posix_stream_descriptor_LDADD) $(LIBS)
+unit/post.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/post$(EXEEXT): $(unit_post_OBJECTS) $(unit_post_DEPENDENCIES) $(EXTRA_unit_post_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/post$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_post_OBJECTS) $(unit_post_LDADD) $(LIBS)
+unit/prepend.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/prepend$(EXEEXT): $(unit_prepend_OBJECTS) $(unit_prepend_DEPENDENCIES) $(EXTRA_unit_prepend_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/prepend$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_prepend_OBJECTS) $(unit_prepend_LDADD) $(LIBS)
+unit/random_access_file.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/random_access_file$(EXEEXT): $(unit_random_access_file_OBJECTS) $(unit_random_access_file_DEPENDENCIES) $(EXTRA_unit_random_access_file_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/random_access_file$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_random_access_file_OBJECTS) $(unit_random_access_file_LDADD) $(LIBS)
+unit/read.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/read$(EXEEXT): $(unit_read_OBJECTS) $(unit_read_DEPENDENCIES) $(EXTRA_unit_read_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/read$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_read_OBJECTS) $(unit_read_LDADD) $(LIBS)
+unit/read_at.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/read_at$(EXEEXT): $(unit_read_at_OBJECTS) $(unit_read_at_DEPENDENCIES) $(EXTRA_unit_read_at_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/read_at$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_read_at_OBJECTS) $(unit_read_at_LDADD) $(LIBS)
+unit/read_until.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/read_until$(EXEEXT): $(unit_read_until_OBJECTS) $(unit_read_until_DEPENDENCIES) $(EXTRA_unit_read_until_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/read_until$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_read_until_OBJECTS) $(unit_read_until_LDADD) $(LIBS)
+unit/readable_pipe.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/readable_pipe$(EXEEXT): $(unit_readable_pipe_OBJECTS) $(unit_readable_pipe_DEPENDENCIES) $(EXTRA_unit_readable_pipe_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/readable_pipe$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_readable_pipe_OBJECTS) $(unit_readable_pipe_LDADD) $(LIBS)
+unit/recycling_allocator.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/recycling_allocator$(EXEEXT): $(unit_recycling_allocator_OBJECTS) $(unit_recycling_allocator_DEPENDENCIES) $(EXTRA_unit_recycling_allocator_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/recycling_allocator$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_recycling_allocator_OBJECTS) $(unit_recycling_allocator_LDADD) $(LIBS)
+unit/redirect_error.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/redirect_error$(EXEEXT): $(unit_redirect_error_OBJECTS) $(unit_redirect_error_DEPENDENCIES) $(EXTRA_unit_redirect_error_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/redirect_error$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_redirect_error_OBJECTS) $(unit_redirect_error_LDADD) $(LIBS)
+unit/registered_buffer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/registered_buffer$(EXEEXT): $(unit_registered_buffer_OBJECTS) $(unit_registered_buffer_DEPENDENCIES) $(EXTRA_unit_registered_buffer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/registered_buffer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_registered_buffer_OBJECTS) $(unit_registered_buffer_LDADD) $(LIBS)
+unit/serial_port.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/serial_port$(EXEEXT): $(unit_serial_port_OBJECTS) $(unit_serial_port_DEPENDENCIES) $(EXTRA_unit_serial_port_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/serial_port$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_serial_port_OBJECTS) $(unit_serial_port_LDADD) $(LIBS)
+unit/serial_port_base.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/serial_port_base$(EXEEXT): $(unit_serial_port_base_OBJECTS) $(unit_serial_port_base_DEPENDENCIES) $(EXTRA_unit_serial_port_base_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/serial_port_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_serial_port_base_OBJECTS) $(unit_serial_port_base_LDADD) $(LIBS)
+unit/signal_set.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/signal_set$(EXEEXT): $(unit_signal_set_OBJECTS) $(unit_signal_set_DEPENDENCIES) $(EXTRA_unit_signal_set_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/signal_set$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_signal_set_OBJECTS) $(unit_signal_set_LDADD) $(LIBS)
+unit/signal_set_base.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/signal_set_base$(EXEEXT): $(unit_signal_set_base_OBJECTS) $(unit_signal_set_base_DEPENDENCIES) $(EXTRA_unit_signal_set_base_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/signal_set_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_signal_set_base_OBJECTS) $(unit_signal_set_base_LDADD) $(LIBS)
+unit/socket_base.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/socket_base$(EXEEXT): $(unit_socket_base_OBJECTS) $(unit_socket_base_DEPENDENCIES) $(EXTRA_unit_socket_base_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/socket_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_socket_base_OBJECTS) $(unit_socket_base_LDADD) $(LIBS)
+unit/ssl/$(am__dirstamp):
+ @$(MKDIR_P) unit/ssl
+ @: > unit/ssl/$(am__dirstamp)
+unit/ssl/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/ssl/$(DEPDIR)
+ @: > unit/ssl/$(DEPDIR)/$(am__dirstamp)
+unit/ssl/context.$(OBJEXT): unit/ssl/$(am__dirstamp) \
+ unit/ssl/$(DEPDIR)/$(am__dirstamp)
+
+unit/ssl/context$(EXEEXT): $(unit_ssl_context_OBJECTS) $(unit_ssl_context_DEPENDENCIES) $(EXTRA_unit_ssl_context_DEPENDENCIES) unit/ssl/$(am__dirstamp)
+ @rm -f unit/ssl/context$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ssl_context_OBJECTS) $(unit_ssl_context_LDADD) $(LIBS)
+unit/ssl/context_base.$(OBJEXT): unit/ssl/$(am__dirstamp) \
+ unit/ssl/$(DEPDIR)/$(am__dirstamp)
+
+unit/ssl/context_base$(EXEEXT): $(unit_ssl_context_base_OBJECTS) $(unit_ssl_context_base_DEPENDENCIES) $(EXTRA_unit_ssl_context_base_DEPENDENCIES) unit/ssl/$(am__dirstamp)
+ @rm -f unit/ssl/context_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ssl_context_base_OBJECTS) $(unit_ssl_context_base_LDADD) $(LIBS)
+unit/ssl/error.$(OBJEXT): unit/ssl/$(am__dirstamp) \
+ unit/ssl/$(DEPDIR)/$(am__dirstamp)
+
+unit/ssl/error$(EXEEXT): $(unit_ssl_error_OBJECTS) $(unit_ssl_error_DEPENDENCIES) $(EXTRA_unit_ssl_error_DEPENDENCIES) unit/ssl/$(am__dirstamp)
+ @rm -f unit/ssl/error$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ssl_error_OBJECTS) $(unit_ssl_error_LDADD) $(LIBS)
+unit/ssl/host_name_verification.$(OBJEXT): unit/ssl/$(am__dirstamp) \
+ unit/ssl/$(DEPDIR)/$(am__dirstamp)
+
+unit/ssl/host_name_verification$(EXEEXT): $(unit_ssl_host_name_verification_OBJECTS) $(unit_ssl_host_name_verification_DEPENDENCIES) $(EXTRA_unit_ssl_host_name_verification_DEPENDENCIES) unit/ssl/$(am__dirstamp)
+ @rm -f unit/ssl/host_name_verification$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ssl_host_name_verification_OBJECTS) $(unit_ssl_host_name_verification_LDADD) $(LIBS)
+unit/ssl/rfc2818_verification.$(OBJEXT): unit/ssl/$(am__dirstamp) \
+ unit/ssl/$(DEPDIR)/$(am__dirstamp)
+
+unit/ssl/rfc2818_verification$(EXEEXT): $(unit_ssl_rfc2818_verification_OBJECTS) $(unit_ssl_rfc2818_verification_DEPENDENCIES) $(EXTRA_unit_ssl_rfc2818_verification_DEPENDENCIES) unit/ssl/$(am__dirstamp)
+ @rm -f unit/ssl/rfc2818_verification$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ssl_rfc2818_verification_OBJECTS) $(unit_ssl_rfc2818_verification_LDADD) $(LIBS)
+unit/ssl/stream.$(OBJEXT): unit/ssl/$(am__dirstamp) \
+ unit/ssl/$(DEPDIR)/$(am__dirstamp)
+
+unit/ssl/stream$(EXEEXT): $(unit_ssl_stream_OBJECTS) $(unit_ssl_stream_DEPENDENCIES) $(EXTRA_unit_ssl_stream_DEPENDENCIES) unit/ssl/$(am__dirstamp)
+ @rm -f unit/ssl/stream$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ssl_stream_OBJECTS) $(unit_ssl_stream_LDADD) $(LIBS)
+unit/ssl/stream_base.$(OBJEXT): unit/ssl/$(am__dirstamp) \
+ unit/ssl/$(DEPDIR)/$(am__dirstamp)
+
+unit/ssl/stream_base$(EXEEXT): $(unit_ssl_stream_base_OBJECTS) $(unit_ssl_stream_base_DEPENDENCIES) $(EXTRA_unit_ssl_stream_base_DEPENDENCIES) unit/ssl/$(am__dirstamp)
+ @rm -f unit/ssl/stream_base$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ssl_stream_base_OBJECTS) $(unit_ssl_stream_base_LDADD) $(LIBS)
+unit/static_thread_pool.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/static_thread_pool$(EXEEXT): $(unit_static_thread_pool_OBJECTS) $(unit_static_thread_pool_DEPENDENCIES) $(EXTRA_unit_static_thread_pool_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/static_thread_pool$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_static_thread_pool_OBJECTS) $(unit_static_thread_pool_LDADD) $(LIBS)
+unit/steady_timer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/steady_timer$(EXEEXT): $(unit_steady_timer_OBJECTS) $(unit_steady_timer_DEPENDENCIES) $(EXTRA_unit_steady_timer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/steady_timer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_steady_timer_OBJECTS) $(unit_steady_timer_LDADD) $(LIBS)
+unit/strand.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/strand$(EXEEXT): $(unit_strand_OBJECTS) $(unit_strand_DEPENDENCIES) $(EXTRA_unit_strand_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/strand$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_strand_OBJECTS) $(unit_strand_LDADD) $(LIBS)
+unit/stream_file.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/stream_file$(EXEEXT): $(unit_stream_file_OBJECTS) $(unit_stream_file_DEPENDENCIES) $(EXTRA_unit_stream_file_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/stream_file$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_stream_file_OBJECTS) $(unit_stream_file_LDADD) $(LIBS)
+unit/streambuf.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/streambuf$(EXEEXT): $(unit_streambuf_OBJECTS) $(unit_streambuf_DEPENDENCIES) $(EXTRA_unit_streambuf_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/streambuf$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_streambuf_OBJECTS) $(unit_streambuf_LDADD) $(LIBS)
+unit/system_context.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/system_context$(EXEEXT): $(unit_system_context_OBJECTS) $(unit_system_context_DEPENDENCIES) $(EXTRA_unit_system_context_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/system_context$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_system_context_OBJECTS) $(unit_system_context_LDADD) $(LIBS)
+unit/system_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/system_executor$(EXEEXT): $(unit_system_executor_OBJECTS) $(unit_system_executor_DEPENDENCIES) $(EXTRA_unit_system_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/system_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_system_executor_OBJECTS) $(unit_system_executor_LDADD) $(LIBS)
+unit/system_timer.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/system_timer$(EXEEXT): $(unit_system_timer_OBJECTS) $(unit_system_timer_DEPENDENCIES) $(EXTRA_unit_system_timer_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/system_timer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_system_timer_OBJECTS) $(unit_system_timer_LDADD) $(LIBS)
+unit/this_coro.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/this_coro$(EXEEXT): $(unit_this_coro_OBJECTS) $(unit_this_coro_DEPENDENCIES) $(EXTRA_unit_this_coro_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/this_coro$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_this_coro_OBJECTS) $(unit_this_coro_LDADD) $(LIBS)
+unit/thread.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/thread$(EXEEXT): $(unit_thread_OBJECTS) $(unit_thread_DEPENDENCIES) $(EXTRA_unit_thread_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/thread$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_thread_OBJECTS) $(unit_thread_LDADD) $(LIBS)
+unit/thread_pool.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/thread_pool$(EXEEXT): $(unit_thread_pool_OBJECTS) $(unit_thread_pool_DEPENDENCIES) $(EXTRA_unit_thread_pool_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/thread_pool$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_thread_pool_OBJECTS) $(unit_thread_pool_LDADD) $(LIBS)
+unit/time_traits.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/time_traits$(EXEEXT): $(unit_time_traits_OBJECTS) $(unit_time_traits_DEPENDENCIES) $(EXTRA_unit_time_traits_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/time_traits$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_time_traits_OBJECTS) $(unit_time_traits_LDADD) $(LIBS)
+unit/ts/$(am__dirstamp):
+ @$(MKDIR_P) unit/ts
+ @: > unit/ts/$(am__dirstamp)
+unit/ts/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/ts/$(DEPDIR)
+ @: > unit/ts/$(DEPDIR)/$(am__dirstamp)
+unit/ts/buffer.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/buffer$(EXEEXT): $(unit_ts_buffer_OBJECTS) $(unit_ts_buffer_DEPENDENCIES) $(EXTRA_unit_ts_buffer_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/buffer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_buffer_OBJECTS) $(unit_ts_buffer_LDADD) $(LIBS)
+unit/ts/executor.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/executor$(EXEEXT): $(unit_ts_executor_OBJECTS) $(unit_ts_executor_DEPENDENCIES) $(EXTRA_unit_ts_executor_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_executor_OBJECTS) $(unit_ts_executor_LDADD) $(LIBS)
+unit/ts/internet.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/internet$(EXEEXT): $(unit_ts_internet_OBJECTS) $(unit_ts_internet_DEPENDENCIES) $(EXTRA_unit_ts_internet_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/internet$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_internet_OBJECTS) $(unit_ts_internet_LDADD) $(LIBS)
+unit/ts/io_context.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/io_context$(EXEEXT): $(unit_ts_io_context_OBJECTS) $(unit_ts_io_context_DEPENDENCIES) $(EXTRA_unit_ts_io_context_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/io_context$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_io_context_OBJECTS) $(unit_ts_io_context_LDADD) $(LIBS)
+unit/ts/net.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/net$(EXEEXT): $(unit_ts_net_OBJECTS) $(unit_ts_net_DEPENDENCIES) $(EXTRA_unit_ts_net_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/net$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_net_OBJECTS) $(unit_ts_net_LDADD) $(LIBS)
+unit/ts/netfwd.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/netfwd$(EXEEXT): $(unit_ts_netfwd_OBJECTS) $(unit_ts_netfwd_DEPENDENCIES) $(EXTRA_unit_ts_netfwd_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/netfwd$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_netfwd_OBJECTS) $(unit_ts_netfwd_LDADD) $(LIBS)
+unit/ts/socket.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/socket$(EXEEXT): $(unit_ts_socket_OBJECTS) $(unit_ts_socket_DEPENDENCIES) $(EXTRA_unit_ts_socket_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/socket$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_socket_OBJECTS) $(unit_ts_socket_LDADD) $(LIBS)
+unit/ts/timer.$(OBJEXT): unit/ts/$(am__dirstamp) \
+ unit/ts/$(DEPDIR)/$(am__dirstamp)
+
+unit/ts/timer$(EXEEXT): $(unit_ts_timer_OBJECTS) $(unit_ts_timer_DEPENDENCIES) $(EXTRA_unit_ts_timer_DEPENDENCIES) unit/ts/$(am__dirstamp)
+ @rm -f unit/ts/timer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_ts_timer_OBJECTS) $(unit_ts_timer_LDADD) $(LIBS)
+unit/use_awaitable.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/use_awaitable$(EXEEXT): $(unit_use_awaitable_OBJECTS) $(unit_use_awaitable_DEPENDENCIES) $(EXTRA_unit_use_awaitable_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/use_awaitable$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_use_awaitable_OBJECTS) $(unit_use_awaitable_LDADD) $(LIBS)
+unit/use_future.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/use_future$(EXEEXT): $(unit_use_future_OBJECTS) $(unit_use_future_DEPENDENCIES) $(EXTRA_unit_use_future_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/use_future$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_use_future_OBJECTS) $(unit_use_future_LDADD) $(LIBS)
+unit/uses_executor.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/uses_executor$(EXEEXT): $(unit_uses_executor_OBJECTS) $(unit_uses_executor_DEPENDENCIES) $(EXTRA_unit_uses_executor_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/uses_executor$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_uses_executor_OBJECTS) $(unit_uses_executor_LDADD) $(LIBS)
+unit/wait_traits.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/wait_traits$(EXEEXT): $(unit_wait_traits_OBJECTS) $(unit_wait_traits_DEPENDENCIES) $(EXTRA_unit_wait_traits_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/wait_traits$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_wait_traits_OBJECTS) $(unit_wait_traits_LDADD) $(LIBS)
+unit/windows/$(am__dirstamp):
+ @$(MKDIR_P) unit/windows
+ @: > unit/windows/$(am__dirstamp)
+unit/windows/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) unit/windows/$(DEPDIR)
+ @: > unit/windows/$(DEPDIR)/$(am__dirstamp)
+unit/windows/basic_object_handle.$(OBJEXT): \
+ unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/basic_object_handle$(EXEEXT): $(unit_windows_basic_object_handle_OBJECTS) $(unit_windows_basic_object_handle_DEPENDENCIES) $(EXTRA_unit_windows_basic_object_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/basic_object_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_basic_object_handle_OBJECTS) $(unit_windows_basic_object_handle_LDADD) $(LIBS)
+unit/windows/basic_overlapped_handle.$(OBJEXT): \
+ unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/basic_overlapped_handle$(EXEEXT): $(unit_windows_basic_overlapped_handle_OBJECTS) $(unit_windows_basic_overlapped_handle_DEPENDENCIES) $(EXTRA_unit_windows_basic_overlapped_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/basic_overlapped_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_basic_overlapped_handle_OBJECTS) $(unit_windows_basic_overlapped_handle_LDADD) $(LIBS)
+unit/windows/basic_random_access_handle.$(OBJEXT): \
+ unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/basic_random_access_handle$(EXEEXT): $(unit_windows_basic_random_access_handle_OBJECTS) $(unit_windows_basic_random_access_handle_DEPENDENCIES) $(EXTRA_unit_windows_basic_random_access_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/basic_random_access_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_basic_random_access_handle_OBJECTS) $(unit_windows_basic_random_access_handle_LDADD) $(LIBS)
+unit/windows/basic_stream_handle.$(OBJEXT): \
+ unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/basic_stream_handle$(EXEEXT): $(unit_windows_basic_stream_handle_OBJECTS) $(unit_windows_basic_stream_handle_DEPENDENCIES) $(EXTRA_unit_windows_basic_stream_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/basic_stream_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_basic_stream_handle_OBJECTS) $(unit_windows_basic_stream_handle_LDADD) $(LIBS)
+unit/windows/object_handle.$(OBJEXT): unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/object_handle$(EXEEXT): $(unit_windows_object_handle_OBJECTS) $(unit_windows_object_handle_DEPENDENCIES) $(EXTRA_unit_windows_object_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/object_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_object_handle_OBJECTS) $(unit_windows_object_handle_LDADD) $(LIBS)
+unit/windows/overlapped_handle.$(OBJEXT): \
+ unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/overlapped_handle$(EXEEXT): $(unit_windows_overlapped_handle_OBJECTS) $(unit_windows_overlapped_handle_DEPENDENCIES) $(EXTRA_unit_windows_overlapped_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/overlapped_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_overlapped_handle_OBJECTS) $(unit_windows_overlapped_handle_LDADD) $(LIBS)
+unit/windows/overlapped_ptr.$(OBJEXT): unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/overlapped_ptr$(EXEEXT): $(unit_windows_overlapped_ptr_OBJECTS) $(unit_windows_overlapped_ptr_DEPENDENCIES) $(EXTRA_unit_windows_overlapped_ptr_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/overlapped_ptr$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_overlapped_ptr_OBJECTS) $(unit_windows_overlapped_ptr_LDADD) $(LIBS)
+unit/windows/random_access_handle.$(OBJEXT): \
+ unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/random_access_handle$(EXEEXT): $(unit_windows_random_access_handle_OBJECTS) $(unit_windows_random_access_handle_DEPENDENCIES) $(EXTRA_unit_windows_random_access_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/random_access_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_random_access_handle_OBJECTS) $(unit_windows_random_access_handle_LDADD) $(LIBS)
+unit/windows/stream_handle.$(OBJEXT): unit/windows/$(am__dirstamp) \
+ unit/windows/$(DEPDIR)/$(am__dirstamp)
+
+unit/windows/stream_handle$(EXEEXT): $(unit_windows_stream_handle_OBJECTS) $(unit_windows_stream_handle_DEPENDENCIES) $(EXTRA_unit_windows_stream_handle_DEPENDENCIES) unit/windows/$(am__dirstamp)
+ @rm -f unit/windows/stream_handle$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_windows_stream_handle_OBJECTS) $(unit_windows_stream_handle_LDADD) $(LIBS)
+unit/writable_pipe.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/writable_pipe$(EXEEXT): $(unit_writable_pipe_OBJECTS) $(unit_writable_pipe_DEPENDENCIES) $(EXTRA_unit_writable_pipe_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/writable_pipe$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_writable_pipe_OBJECTS) $(unit_writable_pipe_LDADD) $(LIBS)
+unit/write.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/write$(EXEEXT): $(unit_write_OBJECTS) $(unit_write_DEPENDENCIES) $(EXTRA_unit_write_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/write$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_write_OBJECTS) $(unit_write_LDADD) $(LIBS)
+unit/write_at.$(OBJEXT): unit/$(am__dirstamp) \
+ unit/$(DEPDIR)/$(am__dirstamp)
+
+unit/write_at$(EXEEXT): $(unit_write_at_OBJECTS) $(unit_write_at_DEPENDENCIES) $(EXTRA_unit_write_at_DEPENDENCIES) unit/$(am__dirstamp)
+ @rm -f unit/write_at$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(unit_write_at_OBJECTS) $(unit_write_at_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f ../*.$(OBJEXT)
+ -rm -f latency/*.$(OBJEXT)
+ -rm -f performance/*.$(OBJEXT)
+ -rm -f unit/*.$(OBJEXT)
+ -rm -f unit/execution/*.$(OBJEXT)
+ -rm -f unit/experimental/*.$(OBJEXT)
+ -rm -f unit/experimental/coro/*.$(OBJEXT)
+ -rm -f unit/generic/*.$(OBJEXT)
+ -rm -f unit/ip/*.$(OBJEXT)
+ -rm -f unit/local/*.$(OBJEXT)
+ -rm -f unit/posix/*.$(OBJEXT)
+ -rm -f unit/ssl/*.$(OBJEXT)
+ -rm -f unit/ts/*.$(OBJEXT)
+ -rm -f unit/windows/*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@../$(DEPDIR)/asio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../$(DEPDIR)/asio_ssl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@latency/$(DEPDIR)/tcp_client.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@latency/$(DEPDIR)/tcp_server.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@latency/$(DEPDIR)/udp_client.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@latency/$(DEPDIR)/udp_server.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@performance/$(DEPDIR)/client.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@performance/$(DEPDIR)/server.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/any_completion_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/any_completion_handler.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/any_io_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/append.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/as_tuple.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/associated_allocator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/associated_cancellation_slot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/associated_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/associated_immediate_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/associator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/async_result.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/awaitable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_datagram_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_deadline_timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_file.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_random_access_file.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_raw_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_readable_pipe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_seq_packet_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_serial_port.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_signal_set.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_socket_acceptor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_stream_file.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_stream_socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_streambuf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_waitable_timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/basic_writable_pipe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/bind_allocator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/bind_cancellation_slot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/bind_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/bind_immediate_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/buffer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/buffer_registration.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/buffered_read_stream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/buffered_stream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/buffered_write_stream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/buffers_iterator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/cancellation_signal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/cancellation_state.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/cancellation_type.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/co_spawn.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/completion_condition.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/compose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/connect.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/connect_pipe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/consign.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/coroutine.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/deadline_timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/defer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/deferred.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/detached.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/dispatch.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/error.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/execution_context.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/executor_work_guard.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/file_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/high_resolution_timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/io_context.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/io_context_strand.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/is_read_buffered.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/is_write_buffered.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/packaged_task.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/placeholders.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/post.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/prepend.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/random_access_file.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/read.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/read_at.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/read_until.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/readable_pipe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/recycling_allocator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/redirect_error.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/registered_buffer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/serial_port.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/serial_port_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/signal_set.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/signal_set_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/socket_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/static_thread_pool.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/steady_timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/strand.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/stream_file.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/streambuf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/system_context.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/system_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/system_timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/this_coro.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/thread.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/thread_pool.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/time_traits.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/use_awaitable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/use_future.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/uses_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/wait_traits.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/writable_pipe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/write.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/$(DEPDIR)/write_at.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/any_executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/blocking.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/blocking_adaptation.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/context_as.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/invocable_archetype.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/mapping.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/outstanding_work.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/prefer_only.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/execution/$(DEPDIR)/relationship.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/awaitable_operators.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/basic_channel.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/basic_concurrent_channel.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/channel.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/channel_traits.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/co_composed.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/concurrent_channel.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/parallel_group.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/$(DEPDIR)/promise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/allocator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/cancel.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/co_spawn.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/exception.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/partial.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/simple_test.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/stack_test.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/experimental/coro/$(DEPDIR)/use_coro.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/generic/$(DEPDIR)/basic_endpoint.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/generic/$(DEPDIR)/datagram_protocol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/generic/$(DEPDIR)/raw_protocol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/generic/$(DEPDIR)/seq_packet_protocol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/generic/$(DEPDIR)/stream_protocol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/address.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/address_v4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/address_v4_iterator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/address_v4_range.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/address_v6.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/address_v6_iterator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/address_v6_range.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/basic_endpoint.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/basic_resolver.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/basic_resolver_entry.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/basic_resolver_iterator.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/basic_resolver_query.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/host_name.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/icmp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/multicast.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/network_v4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/network_v6.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/resolver_query_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/tcp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/udp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/unicast.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ip/$(DEPDIR)/v6_only.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/local/$(DEPDIR)/basic_endpoint.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/local/$(DEPDIR)/connect_pair.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/local/$(DEPDIR)/datagram_protocol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/local/$(DEPDIR)/seq_packet_protocol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/local/$(DEPDIR)/stream_protocol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/posix/$(DEPDIR)/basic_descriptor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/posix/$(DEPDIR)/basic_stream_descriptor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/posix/$(DEPDIR)/descriptor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/posix/$(DEPDIR)/descriptor_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/posix/$(DEPDIR)/stream_descriptor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ssl/$(DEPDIR)/context.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ssl/$(DEPDIR)/context_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ssl/$(DEPDIR)/error.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ssl/$(DEPDIR)/host_name_verification.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ssl/$(DEPDIR)/rfc2818_verification.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ssl/$(DEPDIR)/stream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ssl/$(DEPDIR)/stream_base.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/buffer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/executor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/internet.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/io_context.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/net.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/netfwd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/socket.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/ts/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/basic_object_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/basic_overlapped_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/basic_random_access_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/basic_stream_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/object_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/overlapped_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/overlapped_ptr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/random_access_handle.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@unit/windows/$(DEPDIR)/stream_handle.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS: $(check_PROGRAMS)
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+unit/any_completion_executor.log: unit/any_completion_executor$(EXEEXT)
+ @p='unit/any_completion_executor$(EXEEXT)'; \
+ b='unit/any_completion_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/any_completion_handler.log: unit/any_completion_handler$(EXEEXT)
+ @p='unit/any_completion_handler$(EXEEXT)'; \
+ b='unit/any_completion_handler'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/any_io_executor.log: unit/any_io_executor$(EXEEXT)
+ @p='unit/any_io_executor$(EXEEXT)'; \
+ b='unit/any_io_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/append.log: unit/append$(EXEEXT)
+ @p='unit/append$(EXEEXT)'; \
+ b='unit/append'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/as_tuple.log: unit/as_tuple$(EXEEXT)
+ @p='unit/as_tuple$(EXEEXT)'; \
+ b='unit/as_tuple'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/associated_allocator.log: unit/associated_allocator$(EXEEXT)
+ @p='unit/associated_allocator$(EXEEXT)'; \
+ b='unit/associated_allocator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/associated_cancellation_slot.log: unit/associated_cancellation_slot$(EXEEXT)
+ @p='unit/associated_cancellation_slot$(EXEEXT)'; \
+ b='unit/associated_cancellation_slot'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/associated_executor.log: unit/associated_executor$(EXEEXT)
+ @p='unit/associated_executor$(EXEEXT)'; \
+ b='unit/associated_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/associated_immediate_executor.log: unit/associated_immediate_executor$(EXEEXT)
+ @p='unit/associated_immediate_executor$(EXEEXT)'; \
+ b='unit/associated_immediate_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/associator.log: unit/associator$(EXEEXT)
+ @p='unit/associator$(EXEEXT)'; \
+ b='unit/associator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/async_result.log: unit/async_result$(EXEEXT)
+ @p='unit/async_result$(EXEEXT)'; \
+ b='unit/async_result'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/awaitable.log: unit/awaitable$(EXEEXT)
+ @p='unit/awaitable$(EXEEXT)'; \
+ b='unit/awaitable'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_datagram_socket.log: unit/basic_datagram_socket$(EXEEXT)
+ @p='unit/basic_datagram_socket$(EXEEXT)'; \
+ b='unit/basic_datagram_socket'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_deadline_timer.log: unit/basic_deadline_timer$(EXEEXT)
+ @p='unit/basic_deadline_timer$(EXEEXT)'; \
+ b='unit/basic_deadline_timer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_file.log: unit/basic_file$(EXEEXT)
+ @p='unit/basic_file$(EXEEXT)'; \
+ b='unit/basic_file'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_random_access_file.log: unit/basic_random_access_file$(EXEEXT)
+ @p='unit/basic_random_access_file$(EXEEXT)'; \
+ b='unit/basic_random_access_file'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_raw_socket.log: unit/basic_raw_socket$(EXEEXT)
+ @p='unit/basic_raw_socket$(EXEEXT)'; \
+ b='unit/basic_raw_socket'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_readable_pipe.log: unit/basic_readable_pipe$(EXEEXT)
+ @p='unit/basic_readable_pipe$(EXEEXT)'; \
+ b='unit/basic_readable_pipe'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_seq_packet_socket.log: unit/basic_seq_packet_socket$(EXEEXT)
+ @p='unit/basic_seq_packet_socket$(EXEEXT)'; \
+ b='unit/basic_seq_packet_socket'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_serial_port.log: unit/basic_serial_port$(EXEEXT)
+ @p='unit/basic_serial_port$(EXEEXT)'; \
+ b='unit/basic_serial_port'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_signal_set.log: unit/basic_signal_set$(EXEEXT)
+ @p='unit/basic_signal_set$(EXEEXT)'; \
+ b='unit/basic_signal_set'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_socket.log: unit/basic_socket$(EXEEXT)
+ @p='unit/basic_socket$(EXEEXT)'; \
+ b='unit/basic_socket'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_socket_acceptor.log: unit/basic_socket_acceptor$(EXEEXT)
+ @p='unit/basic_socket_acceptor$(EXEEXT)'; \
+ b='unit/basic_socket_acceptor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_stream_file.log: unit/basic_stream_file$(EXEEXT)
+ @p='unit/basic_stream_file$(EXEEXT)'; \
+ b='unit/basic_stream_file'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_stream_socket.log: unit/basic_stream_socket$(EXEEXT)
+ @p='unit/basic_stream_socket$(EXEEXT)'; \
+ b='unit/basic_stream_socket'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_streambuf.log: unit/basic_streambuf$(EXEEXT)
+ @p='unit/basic_streambuf$(EXEEXT)'; \
+ b='unit/basic_streambuf'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_waitable_timer.log: unit/basic_waitable_timer$(EXEEXT)
+ @p='unit/basic_waitable_timer$(EXEEXT)'; \
+ b='unit/basic_waitable_timer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/basic_writable_pipe.log: unit/basic_writable_pipe$(EXEEXT)
+ @p='unit/basic_writable_pipe$(EXEEXT)'; \
+ b='unit/basic_writable_pipe'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/bind_allocator.log: unit/bind_allocator$(EXEEXT)
+ @p='unit/bind_allocator$(EXEEXT)'; \
+ b='unit/bind_allocator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/bind_cancellation_slot.log: unit/bind_cancellation_slot$(EXEEXT)
+ @p='unit/bind_cancellation_slot$(EXEEXT)'; \
+ b='unit/bind_cancellation_slot'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/bind_executor.log: unit/bind_executor$(EXEEXT)
+ @p='unit/bind_executor$(EXEEXT)'; \
+ b='unit/bind_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/bind_immediate_executor.log: unit/bind_immediate_executor$(EXEEXT)
+ @p='unit/bind_immediate_executor$(EXEEXT)'; \
+ b='unit/bind_immediate_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/buffered_read_stream.log: unit/buffered_read_stream$(EXEEXT)
+ @p='unit/buffered_read_stream$(EXEEXT)'; \
+ b='unit/buffered_read_stream'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/buffered_stream.log: unit/buffered_stream$(EXEEXT)
+ @p='unit/buffered_stream$(EXEEXT)'; \
+ b='unit/buffered_stream'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/buffered_write_stream.log: unit/buffered_write_stream$(EXEEXT)
+ @p='unit/buffered_write_stream$(EXEEXT)'; \
+ b='unit/buffered_write_stream'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/buffer.log: unit/buffer$(EXEEXT)
+ @p='unit/buffer$(EXEEXT)'; \
+ b='unit/buffer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/buffer_registration.log: unit/buffer_registration$(EXEEXT)
+ @p='unit/buffer_registration$(EXEEXT)'; \
+ b='unit/buffer_registration'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/buffers_iterator.log: unit/buffers_iterator$(EXEEXT)
+ @p='unit/buffers_iterator$(EXEEXT)'; \
+ b='unit/buffers_iterator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/cancellation_signal.log: unit/cancellation_signal$(EXEEXT)
+ @p='unit/cancellation_signal$(EXEEXT)'; \
+ b='unit/cancellation_signal'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/cancellation_state.log: unit/cancellation_state$(EXEEXT)
+ @p='unit/cancellation_state$(EXEEXT)'; \
+ b='unit/cancellation_state'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/cancellation_type.log: unit/cancellation_type$(EXEEXT)
+ @p='unit/cancellation_type$(EXEEXT)'; \
+ b='unit/cancellation_type'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/co_spawn.log: unit/co_spawn$(EXEEXT)
+ @p='unit/co_spawn$(EXEEXT)'; \
+ b='unit/co_spawn'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/completion_condition.log: unit/completion_condition$(EXEEXT)
+ @p='unit/completion_condition$(EXEEXT)'; \
+ b='unit/completion_condition'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/compose.log: unit/compose$(EXEEXT)
+ @p='unit/compose$(EXEEXT)'; \
+ b='unit/compose'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/connect.log: unit/connect$(EXEEXT)
+ @p='unit/connect$(EXEEXT)'; \
+ b='unit/connect'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/connect_pipe.log: unit/connect_pipe$(EXEEXT)
+ @p='unit/connect_pipe$(EXEEXT)'; \
+ b='unit/connect_pipe'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/consign.log: unit/consign$(EXEEXT)
+ @p='unit/consign$(EXEEXT)'; \
+ b='unit/consign'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/deadline_timer.log: unit/deadline_timer$(EXEEXT)
+ @p='unit/deadline_timer$(EXEEXT)'; \
+ b='unit/deadline_timer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/defer.log: unit/defer$(EXEEXT)
+ @p='unit/defer$(EXEEXT)'; \
+ b='unit/defer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/deferred.log: unit/deferred$(EXEEXT)
+ @p='unit/deferred$(EXEEXT)'; \
+ b='unit/deferred'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/detached.log: unit/detached$(EXEEXT)
+ @p='unit/detached$(EXEEXT)'; \
+ b='unit/detached'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/dispatch.log: unit/dispatch$(EXEEXT)
+ @p='unit/dispatch$(EXEEXT)'; \
+ b='unit/dispatch'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/error.log: unit/error$(EXEEXT)
+ @p='unit/error$(EXEEXT)'; \
+ b='unit/error'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/any_executor.log: unit/execution/any_executor$(EXEEXT)
+ @p='unit/execution/any_executor$(EXEEXT)'; \
+ b='unit/execution/any_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/blocking.log: unit/execution/blocking$(EXEEXT)
+ @p='unit/execution/blocking$(EXEEXT)'; \
+ b='unit/execution/blocking'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/blocking_adaptation.log: unit/execution/blocking_adaptation$(EXEEXT)
+ @p='unit/execution/blocking_adaptation$(EXEEXT)'; \
+ b='unit/execution/blocking_adaptation'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/context_as.log: unit/execution/context_as$(EXEEXT)
+ @p='unit/execution/context_as$(EXEEXT)'; \
+ b='unit/execution/context_as'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/executor.log: unit/execution/executor$(EXEEXT)
+ @p='unit/execution/executor$(EXEEXT)'; \
+ b='unit/execution/executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/invocable_archetype.log: unit/execution/invocable_archetype$(EXEEXT)
+ @p='unit/execution/invocable_archetype$(EXEEXT)'; \
+ b='unit/execution/invocable_archetype'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/mapping.log: unit/execution/mapping$(EXEEXT)
+ @p='unit/execution/mapping$(EXEEXT)'; \
+ b='unit/execution/mapping'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/outstanding_work.log: unit/execution/outstanding_work$(EXEEXT)
+ @p='unit/execution/outstanding_work$(EXEEXT)'; \
+ b='unit/execution/outstanding_work'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/prefer_only.log: unit/execution/prefer_only$(EXEEXT)
+ @p='unit/execution/prefer_only$(EXEEXT)'; \
+ b='unit/execution/prefer_only'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution/relationship.log: unit/execution/relationship$(EXEEXT)
+ @p='unit/execution/relationship$(EXEEXT)'; \
+ b='unit/execution/relationship'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/execution_context.log: unit/execution_context$(EXEEXT)
+ @p='unit/execution_context$(EXEEXT)'; \
+ b='unit/execution_context'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/executor.log: unit/executor$(EXEEXT)
+ @p='unit/executor$(EXEEXT)'; \
+ b='unit/executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/executor_work_guard.log: unit/executor_work_guard$(EXEEXT)
+ @p='unit/executor_work_guard$(EXEEXT)'; \
+ b='unit/executor_work_guard'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/file_base.log: unit/file_base$(EXEEXT)
+ @p='unit/file_base$(EXEEXT)'; \
+ b='unit/file_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/high_resolution_timer.log: unit/high_resolution_timer$(EXEEXT)
+ @p='unit/high_resolution_timer$(EXEEXT)'; \
+ b='unit/high_resolution_timer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/io_context.log: unit/io_context$(EXEEXT)
+ @p='unit/io_context$(EXEEXT)'; \
+ b='unit/io_context'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/io_context_strand.log: unit/io_context_strand$(EXEEXT)
+ @p='unit/io_context_strand$(EXEEXT)'; \
+ b='unit/io_context_strand'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/address.log: unit/ip/address$(EXEEXT)
+ @p='unit/ip/address$(EXEEXT)'; \
+ b='unit/ip/address'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/address_v4.log: unit/ip/address_v4$(EXEEXT)
+ @p='unit/ip/address_v4$(EXEEXT)'; \
+ b='unit/ip/address_v4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/address_v4_iterator.log: unit/ip/address_v4_iterator$(EXEEXT)
+ @p='unit/ip/address_v4_iterator$(EXEEXT)'; \
+ b='unit/ip/address_v4_iterator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/address_v4_range.log: unit/ip/address_v4_range$(EXEEXT)
+ @p='unit/ip/address_v4_range$(EXEEXT)'; \
+ b='unit/ip/address_v4_range'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/address_v6.log: unit/ip/address_v6$(EXEEXT)
+ @p='unit/ip/address_v6$(EXEEXT)'; \
+ b='unit/ip/address_v6'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/address_v6_iterator.log: unit/ip/address_v6_iterator$(EXEEXT)
+ @p='unit/ip/address_v6_iterator$(EXEEXT)'; \
+ b='unit/ip/address_v6_iterator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/address_v6_range.log: unit/ip/address_v6_range$(EXEEXT)
+ @p='unit/ip/address_v6_range$(EXEEXT)'; \
+ b='unit/ip/address_v6_range'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/basic_endpoint.log: unit/ip/basic_endpoint$(EXEEXT)
+ @p='unit/ip/basic_endpoint$(EXEEXT)'; \
+ b='unit/ip/basic_endpoint'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/basic_resolver.log: unit/ip/basic_resolver$(EXEEXT)
+ @p='unit/ip/basic_resolver$(EXEEXT)'; \
+ b='unit/ip/basic_resolver'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/basic_resolver_entry.log: unit/ip/basic_resolver_entry$(EXEEXT)
+ @p='unit/ip/basic_resolver_entry$(EXEEXT)'; \
+ b='unit/ip/basic_resolver_entry'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/basic_resolver_iterator.log: unit/ip/basic_resolver_iterator$(EXEEXT)
+ @p='unit/ip/basic_resolver_iterator$(EXEEXT)'; \
+ b='unit/ip/basic_resolver_iterator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/basic_resolver_query.log: unit/ip/basic_resolver_query$(EXEEXT)
+ @p='unit/ip/basic_resolver_query$(EXEEXT)'; \
+ b='unit/ip/basic_resolver_query'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/host_name.log: unit/ip/host_name$(EXEEXT)
+ @p='unit/ip/host_name$(EXEEXT)'; \
+ b='unit/ip/host_name'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/icmp.log: unit/ip/icmp$(EXEEXT)
+ @p='unit/ip/icmp$(EXEEXT)'; \
+ b='unit/ip/icmp'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/multicast.log: unit/ip/multicast$(EXEEXT)
+ @p='unit/ip/multicast$(EXEEXT)'; \
+ b='unit/ip/multicast'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/network_v4.log: unit/ip/network_v4$(EXEEXT)
+ @p='unit/ip/network_v4$(EXEEXT)'; \
+ b='unit/ip/network_v4'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/network_v6.log: unit/ip/network_v6$(EXEEXT)
+ @p='unit/ip/network_v6$(EXEEXT)'; \
+ b='unit/ip/network_v6'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/resolver_query_base.log: unit/ip/resolver_query_base$(EXEEXT)
+ @p='unit/ip/resolver_query_base$(EXEEXT)'; \
+ b='unit/ip/resolver_query_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/tcp.log: unit/ip/tcp$(EXEEXT)
+ @p='unit/ip/tcp$(EXEEXT)'; \
+ b='unit/ip/tcp'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/udp.log: unit/ip/udp$(EXEEXT)
+ @p='unit/ip/udp$(EXEEXT)'; \
+ b='unit/ip/udp'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/unicast.log: unit/ip/unicast$(EXEEXT)
+ @p='unit/ip/unicast$(EXEEXT)'; \
+ b='unit/ip/unicast'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ip/v6_only.log: unit/ip/v6_only$(EXEEXT)
+ @p='unit/ip/v6_only$(EXEEXT)'; \
+ b='unit/ip/v6_only'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/is_read_buffered.log: unit/is_read_buffered$(EXEEXT)
+ @p='unit/is_read_buffered$(EXEEXT)'; \
+ b='unit/is_read_buffered'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/is_write_buffered.log: unit/is_write_buffered$(EXEEXT)
+ @p='unit/is_write_buffered$(EXEEXT)'; \
+ b='unit/is_write_buffered'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/local/basic_endpoint.log: unit/local/basic_endpoint$(EXEEXT)
+ @p='unit/local/basic_endpoint$(EXEEXT)'; \
+ b='unit/local/basic_endpoint'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/local/connect_pair.log: unit/local/connect_pair$(EXEEXT)
+ @p='unit/local/connect_pair$(EXEEXT)'; \
+ b='unit/local/connect_pair'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/local/datagram_protocol.log: unit/local/datagram_protocol$(EXEEXT)
+ @p='unit/local/datagram_protocol$(EXEEXT)'; \
+ b='unit/local/datagram_protocol'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/local/seq_packet_protocol.log: unit/local/seq_packet_protocol$(EXEEXT)
+ @p='unit/local/seq_packet_protocol$(EXEEXT)'; \
+ b='unit/local/seq_packet_protocol'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/local/stream_protocol.log: unit/local/stream_protocol$(EXEEXT)
+ @p='unit/local/stream_protocol$(EXEEXT)'; \
+ b='unit/local/stream_protocol'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/packaged_task.log: unit/packaged_task$(EXEEXT)
+ @p='unit/packaged_task$(EXEEXT)'; \
+ b='unit/packaged_task'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/placeholders.log: unit/placeholders$(EXEEXT)
+ @p='unit/placeholders$(EXEEXT)'; \
+ b='unit/placeholders'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/posix/basic_descriptor.log: unit/posix/basic_descriptor$(EXEEXT)
+ @p='unit/posix/basic_descriptor$(EXEEXT)'; \
+ b='unit/posix/basic_descriptor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/posix/basic_stream_descriptor.log: unit/posix/basic_stream_descriptor$(EXEEXT)
+ @p='unit/posix/basic_stream_descriptor$(EXEEXT)'; \
+ b='unit/posix/basic_stream_descriptor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/posix/descriptor.log: unit/posix/descriptor$(EXEEXT)
+ @p='unit/posix/descriptor$(EXEEXT)'; \
+ b='unit/posix/descriptor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/posix/descriptor_base.log: unit/posix/descriptor_base$(EXEEXT)
+ @p='unit/posix/descriptor_base$(EXEEXT)'; \
+ b='unit/posix/descriptor_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/posix/stream_descriptor.log: unit/posix/stream_descriptor$(EXEEXT)
+ @p='unit/posix/stream_descriptor$(EXEEXT)'; \
+ b='unit/posix/stream_descriptor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/post.log: unit/post$(EXEEXT)
+ @p='unit/post$(EXEEXT)'; \
+ b='unit/post'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/prepend.log: unit/prepend$(EXEEXT)
+ @p='unit/prepend$(EXEEXT)'; \
+ b='unit/prepend'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/random_access_file.log: unit/random_access_file$(EXEEXT)
+ @p='unit/random_access_file$(EXEEXT)'; \
+ b='unit/random_access_file'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/read.log: unit/read$(EXEEXT)
+ @p='unit/read$(EXEEXT)'; \
+ b='unit/read'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/read_at.log: unit/read_at$(EXEEXT)
+ @p='unit/read_at$(EXEEXT)'; \
+ b='unit/read_at'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/read_until.log: unit/read_until$(EXEEXT)
+ @p='unit/read_until$(EXEEXT)'; \
+ b='unit/read_until'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/readable_pipe.log: unit/readable_pipe$(EXEEXT)
+ @p='unit/readable_pipe$(EXEEXT)'; \
+ b='unit/readable_pipe'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/recycling_allocator.log: unit/recycling_allocator$(EXEEXT)
+ @p='unit/recycling_allocator$(EXEEXT)'; \
+ b='unit/recycling_allocator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/redirect_error.log: unit/redirect_error$(EXEEXT)
+ @p='unit/redirect_error$(EXEEXT)'; \
+ b='unit/redirect_error'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/registered_buffer.log: unit/registered_buffer$(EXEEXT)
+ @p='unit/registered_buffer$(EXEEXT)'; \
+ b='unit/registered_buffer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/serial_port.log: unit/serial_port$(EXEEXT)
+ @p='unit/serial_port$(EXEEXT)'; \
+ b='unit/serial_port'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/serial_port_base.log: unit/serial_port_base$(EXEEXT)
+ @p='unit/serial_port_base$(EXEEXT)'; \
+ b='unit/serial_port_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/signal_set.log: unit/signal_set$(EXEEXT)
+ @p='unit/signal_set$(EXEEXT)'; \
+ b='unit/signal_set'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/signal_set_base.log: unit/signal_set_base$(EXEEXT)
+ @p='unit/signal_set_base$(EXEEXT)'; \
+ b='unit/signal_set_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/socket_base.log: unit/socket_base$(EXEEXT)
+ @p='unit/socket_base$(EXEEXT)'; \
+ b='unit/socket_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/static_thread_pool.log: unit/static_thread_pool$(EXEEXT)
+ @p='unit/static_thread_pool$(EXEEXT)'; \
+ b='unit/static_thread_pool'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/steady_timer.log: unit/steady_timer$(EXEEXT)
+ @p='unit/steady_timer$(EXEEXT)'; \
+ b='unit/steady_timer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/strand.log: unit/strand$(EXEEXT)
+ @p='unit/strand$(EXEEXT)'; \
+ b='unit/strand'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/stream_file.log: unit/stream_file$(EXEEXT)
+ @p='unit/stream_file$(EXEEXT)'; \
+ b='unit/stream_file'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/streambuf.log: unit/streambuf$(EXEEXT)
+ @p='unit/streambuf$(EXEEXT)'; \
+ b='unit/streambuf'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/system_context.log: unit/system_context$(EXEEXT)
+ @p='unit/system_context$(EXEEXT)'; \
+ b='unit/system_context'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/system_executor.log: unit/system_executor$(EXEEXT)
+ @p='unit/system_executor$(EXEEXT)'; \
+ b='unit/system_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/system_timer.log: unit/system_timer$(EXEEXT)
+ @p='unit/system_timer$(EXEEXT)'; \
+ b='unit/system_timer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/this_coro.log: unit/this_coro$(EXEEXT)
+ @p='unit/this_coro$(EXEEXT)'; \
+ b='unit/this_coro'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/thread.log: unit/thread$(EXEEXT)
+ @p='unit/thread$(EXEEXT)'; \
+ b='unit/thread'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/thread_pool.log: unit/thread_pool$(EXEEXT)
+ @p='unit/thread_pool$(EXEEXT)'; \
+ b='unit/thread_pool'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/time_traits.log: unit/time_traits$(EXEEXT)
+ @p='unit/time_traits$(EXEEXT)'; \
+ b='unit/time_traits'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/buffer.log: unit/ts/buffer$(EXEEXT)
+ @p='unit/ts/buffer$(EXEEXT)'; \
+ b='unit/ts/buffer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/executor.log: unit/ts/executor$(EXEEXT)
+ @p='unit/ts/executor$(EXEEXT)'; \
+ b='unit/ts/executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/internet.log: unit/ts/internet$(EXEEXT)
+ @p='unit/ts/internet$(EXEEXT)'; \
+ b='unit/ts/internet'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/io_context.log: unit/ts/io_context$(EXEEXT)
+ @p='unit/ts/io_context$(EXEEXT)'; \
+ b='unit/ts/io_context'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/net.log: unit/ts/net$(EXEEXT)
+ @p='unit/ts/net$(EXEEXT)'; \
+ b='unit/ts/net'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/netfwd.log: unit/ts/netfwd$(EXEEXT)
+ @p='unit/ts/netfwd$(EXEEXT)'; \
+ b='unit/ts/netfwd'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/socket.log: unit/ts/socket$(EXEEXT)
+ @p='unit/ts/socket$(EXEEXT)'; \
+ b='unit/ts/socket'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ts/timer.log: unit/ts/timer$(EXEEXT)
+ @p='unit/ts/timer$(EXEEXT)'; \
+ b='unit/ts/timer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/use_awaitable.log: unit/use_awaitable$(EXEEXT)
+ @p='unit/use_awaitable$(EXEEXT)'; \
+ b='unit/use_awaitable'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/use_future.log: unit/use_future$(EXEEXT)
+ @p='unit/use_future$(EXEEXT)'; \
+ b='unit/use_future'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/uses_executor.log: unit/uses_executor$(EXEEXT)
+ @p='unit/uses_executor$(EXEEXT)'; \
+ b='unit/uses_executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/wait_traits.log: unit/wait_traits$(EXEEXT)
+ @p='unit/wait_traits$(EXEEXT)'; \
+ b='unit/wait_traits'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/basic_object_handle.log: unit/windows/basic_object_handle$(EXEEXT)
+ @p='unit/windows/basic_object_handle$(EXEEXT)'; \
+ b='unit/windows/basic_object_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/basic_overlapped_handle.log: unit/windows/basic_overlapped_handle$(EXEEXT)
+ @p='unit/windows/basic_overlapped_handle$(EXEEXT)'; \
+ b='unit/windows/basic_overlapped_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/basic_random_access_handle.log: unit/windows/basic_random_access_handle$(EXEEXT)
+ @p='unit/windows/basic_random_access_handle$(EXEEXT)'; \
+ b='unit/windows/basic_random_access_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/basic_stream_handle.log: unit/windows/basic_stream_handle$(EXEEXT)
+ @p='unit/windows/basic_stream_handle$(EXEEXT)'; \
+ b='unit/windows/basic_stream_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/object_handle.log: unit/windows/object_handle$(EXEEXT)
+ @p='unit/windows/object_handle$(EXEEXT)'; \
+ b='unit/windows/object_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/overlapped_handle.log: unit/windows/overlapped_handle$(EXEEXT)
+ @p='unit/windows/overlapped_handle$(EXEEXT)'; \
+ b='unit/windows/overlapped_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/overlapped_ptr.log: unit/windows/overlapped_ptr$(EXEEXT)
+ @p='unit/windows/overlapped_ptr$(EXEEXT)'; \
+ b='unit/windows/overlapped_ptr'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/random_access_handle.log: unit/windows/random_access_handle$(EXEEXT)
+ @p='unit/windows/random_access_handle$(EXEEXT)'; \
+ b='unit/windows/random_access_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/windows/stream_handle.log: unit/windows/stream_handle$(EXEEXT)
+ @p='unit/windows/stream_handle$(EXEEXT)'; \
+ b='unit/windows/stream_handle'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/writable_pipe.log: unit/writable_pipe$(EXEEXT)
+ @p='unit/writable_pipe$(EXEEXT)'; \
+ b='unit/writable_pipe'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/write.log: unit/write$(EXEEXT)
+ @p='unit/write$(EXEEXT)'; \
+ b='unit/write'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/write_at.log: unit/write_at$(EXEEXT)
+ @p='unit/write_at$(EXEEXT)'; \
+ b='unit/write_at'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/basic_channel.log: unit/experimental/basic_channel$(EXEEXT)
+ @p='unit/experimental/basic_channel$(EXEEXT)'; \
+ b='unit/experimental/basic_channel'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/basic_concurrent_channel.log: unit/experimental/basic_concurrent_channel$(EXEEXT)
+ @p='unit/experimental/basic_concurrent_channel$(EXEEXT)'; \
+ b='unit/experimental/basic_concurrent_channel'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/channel.log: unit/experimental/channel$(EXEEXT)
+ @p='unit/experimental/channel$(EXEEXT)'; \
+ b='unit/experimental/channel'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/channel_traits.log: unit/experimental/channel_traits$(EXEEXT)
+ @p='unit/experimental/channel_traits$(EXEEXT)'; \
+ b='unit/experimental/channel_traits'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/concurrent_channel.log: unit/experimental/concurrent_channel$(EXEEXT)
+ @p='unit/experimental/concurrent_channel$(EXEEXT)'; \
+ b='unit/experimental/concurrent_channel'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/parallel_group.log: unit/experimental/parallel_group$(EXEEXT)
+ @p='unit/experimental/parallel_group$(EXEEXT)'; \
+ b='unit/experimental/parallel_group'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/promise.log: unit/experimental/promise$(EXEEXT)
+ @p='unit/experimental/promise$(EXEEXT)'; \
+ b='unit/experimental/promise'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/awaitable_operators.log: unit/experimental/awaitable_operators$(EXEEXT)
+ @p='unit/experimental/awaitable_operators$(EXEEXT)'; \
+ b='unit/experimental/awaitable_operators'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/co_composed.log: unit/experimental/co_composed$(EXEEXT)
+ @p='unit/experimental/co_composed$(EXEEXT)'; \
+ b='unit/experimental/co_composed'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/allocator.log: unit/experimental/coro/allocator$(EXEEXT)
+ @p='unit/experimental/coro/allocator$(EXEEXT)'; \
+ b='unit/experimental/coro/allocator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/cancel.log: unit/experimental/coro/cancel$(EXEEXT)
+ @p='unit/experimental/coro/cancel$(EXEEXT)'; \
+ b='unit/experimental/coro/cancel'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/co_spawn.log: unit/experimental/coro/co_spawn$(EXEEXT)
+ @p='unit/experimental/coro/co_spawn$(EXEEXT)'; \
+ b='unit/experimental/coro/co_spawn'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/exception.log: unit/experimental/coro/exception$(EXEEXT)
+ @p='unit/experimental/coro/exception$(EXEEXT)'; \
+ b='unit/experimental/coro/exception'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/executor.log: unit/experimental/coro/executor$(EXEEXT)
+ @p='unit/experimental/coro/executor$(EXEEXT)'; \
+ b='unit/experimental/coro/executor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/partial.log: unit/experimental/coro/partial$(EXEEXT)
+ @p='unit/experimental/coro/partial$(EXEEXT)'; \
+ b='unit/experimental/coro/partial'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/simple_test.log: unit/experimental/coro/simple_test$(EXEEXT)
+ @p='unit/experimental/coro/simple_test$(EXEEXT)'; \
+ b='unit/experimental/coro/simple_test'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/stack_test.log: unit/experimental/coro/stack_test$(EXEEXT)
+ @p='unit/experimental/coro/stack_test$(EXEEXT)'; \
+ b='unit/experimental/coro/stack_test'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/experimental/coro/use_coro.log: unit/experimental/coro/use_coro$(EXEEXT)
+ @p='unit/experimental/coro/use_coro$(EXEEXT)'; \
+ b='unit/experimental/coro/use_coro'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ssl/context_base.log: unit/ssl/context_base$(EXEEXT)
+ @p='unit/ssl/context_base$(EXEEXT)'; \
+ b='unit/ssl/context_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ssl/context.log: unit/ssl/context$(EXEEXT)
+ @p='unit/ssl/context$(EXEEXT)'; \
+ b='unit/ssl/context'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ssl/error.log: unit/ssl/error$(EXEEXT)
+ @p='unit/ssl/error$(EXEEXT)'; \
+ b='unit/ssl/error'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ssl/host_name_verification.log: unit/ssl/host_name_verification$(EXEEXT)
+ @p='unit/ssl/host_name_verification$(EXEEXT)'; \
+ b='unit/ssl/host_name_verification'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ssl/rfc2818_verification.log: unit/ssl/rfc2818_verification$(EXEEXT)
+ @p='unit/ssl/rfc2818_verification$(EXEEXT)'; \
+ b='unit/ssl/rfc2818_verification'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ssl/stream_base.log: unit/ssl/stream_base$(EXEEXT)
+ @p='unit/ssl/stream_base$(EXEEXT)'; \
+ b='unit/ssl/stream_base'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+unit/ssl/stream.log: unit/ssl/stream$(EXEEXT)
+ @p='unit/ssl/stream$(EXEEXT)'; \
+ b='unit/ssl/stream'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-recursive
+all-am: Makefile $(PROGRAMS) $(LIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f ../$(DEPDIR)/$(am__dirstamp)
+ -rm -f ../$(am__dirstamp)
+ -rm -f latency/$(DEPDIR)/$(am__dirstamp)
+ -rm -f latency/$(am__dirstamp)
+ -rm -f performance/$(DEPDIR)/$(am__dirstamp)
+ -rm -f performance/$(am__dirstamp)
+ -rm -f unit/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/$(am__dirstamp)
+ -rm -f unit/execution/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/execution/$(am__dirstamp)
+ -rm -f unit/experimental/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/experimental/$(am__dirstamp)
+ -rm -f unit/experimental/coro/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/experimental/coro/$(am__dirstamp)
+ -rm -f unit/generic/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/generic/$(am__dirstamp)
+ -rm -f unit/ip/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/ip/$(am__dirstamp)
+ -rm -f unit/local/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/local/$(am__dirstamp)
+ -rm -f unit/posix/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/posix/$(am__dirstamp)
+ -rm -f unit/ssl/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/ssl/$(am__dirstamp)
+ -rm -f unit/ts/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/ts/$(am__dirstamp)
+ -rm -f unit/windows/$(DEPDIR)/$(am__dirstamp)
+ -rm -f unit/windows/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-checkPROGRAMS clean-generic clean-noinstLIBRARIES \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f ../$(DEPDIR)/asio.Po
+ -rm -f ../$(DEPDIR)/asio_ssl.Po
+ -rm -f latency/$(DEPDIR)/tcp_client.Po
+ -rm -f latency/$(DEPDIR)/tcp_server.Po
+ -rm -f latency/$(DEPDIR)/udp_client.Po
+ -rm -f latency/$(DEPDIR)/udp_server.Po
+ -rm -f performance/$(DEPDIR)/client.Po
+ -rm -f performance/$(DEPDIR)/server.Po
+ -rm -f unit/$(DEPDIR)/any_completion_executor.Po
+ -rm -f unit/$(DEPDIR)/any_completion_handler.Po
+ -rm -f unit/$(DEPDIR)/any_io_executor.Po
+ -rm -f unit/$(DEPDIR)/append.Po
+ -rm -f unit/$(DEPDIR)/as_tuple.Po
+ -rm -f unit/$(DEPDIR)/associated_allocator.Po
+ -rm -f unit/$(DEPDIR)/associated_cancellation_slot.Po
+ -rm -f unit/$(DEPDIR)/associated_executor.Po
+ -rm -f unit/$(DEPDIR)/associated_immediate_executor.Po
+ -rm -f unit/$(DEPDIR)/associator.Po
+ -rm -f unit/$(DEPDIR)/async_result.Po
+ -rm -f unit/$(DEPDIR)/awaitable.Po
+ -rm -f unit/$(DEPDIR)/basic_datagram_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_deadline_timer.Po
+ -rm -f unit/$(DEPDIR)/basic_file.Po
+ -rm -f unit/$(DEPDIR)/basic_random_access_file.Po
+ -rm -f unit/$(DEPDIR)/basic_raw_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_readable_pipe.Po
+ -rm -f unit/$(DEPDIR)/basic_seq_packet_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_serial_port.Po
+ -rm -f unit/$(DEPDIR)/basic_signal_set.Po
+ -rm -f unit/$(DEPDIR)/basic_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_socket_acceptor.Po
+ -rm -f unit/$(DEPDIR)/basic_stream_file.Po
+ -rm -f unit/$(DEPDIR)/basic_stream_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_streambuf.Po
+ -rm -f unit/$(DEPDIR)/basic_waitable_timer.Po
+ -rm -f unit/$(DEPDIR)/basic_writable_pipe.Po
+ -rm -f unit/$(DEPDIR)/bind_allocator.Po
+ -rm -f unit/$(DEPDIR)/bind_cancellation_slot.Po
+ -rm -f unit/$(DEPDIR)/bind_executor.Po
+ -rm -f unit/$(DEPDIR)/bind_immediate_executor.Po
+ -rm -f unit/$(DEPDIR)/buffer.Po
+ -rm -f unit/$(DEPDIR)/buffer_registration.Po
+ -rm -f unit/$(DEPDIR)/buffered_read_stream.Po
+ -rm -f unit/$(DEPDIR)/buffered_stream.Po
+ -rm -f unit/$(DEPDIR)/buffered_write_stream.Po
+ -rm -f unit/$(DEPDIR)/buffers_iterator.Po
+ -rm -f unit/$(DEPDIR)/cancellation_signal.Po
+ -rm -f unit/$(DEPDIR)/cancellation_state.Po
+ -rm -f unit/$(DEPDIR)/cancellation_type.Po
+ -rm -f unit/$(DEPDIR)/co_spawn.Po
+ -rm -f unit/$(DEPDIR)/completion_condition.Po
+ -rm -f unit/$(DEPDIR)/compose.Po
+ -rm -f unit/$(DEPDIR)/connect.Po
+ -rm -f unit/$(DEPDIR)/connect_pipe.Po
+ -rm -f unit/$(DEPDIR)/consign.Po
+ -rm -f unit/$(DEPDIR)/coroutine.Po
+ -rm -f unit/$(DEPDIR)/deadline_timer.Po
+ -rm -f unit/$(DEPDIR)/defer.Po
+ -rm -f unit/$(DEPDIR)/deferred.Po
+ -rm -f unit/$(DEPDIR)/detached.Po
+ -rm -f unit/$(DEPDIR)/dispatch.Po
+ -rm -f unit/$(DEPDIR)/error.Po
+ -rm -f unit/$(DEPDIR)/execution_context.Po
+ -rm -f unit/$(DEPDIR)/executor.Po
+ -rm -f unit/$(DEPDIR)/executor_work_guard.Po
+ -rm -f unit/$(DEPDIR)/file_base.Po
+ -rm -f unit/$(DEPDIR)/high_resolution_timer.Po
+ -rm -f unit/$(DEPDIR)/io_context.Po
+ -rm -f unit/$(DEPDIR)/io_context_strand.Po
+ -rm -f unit/$(DEPDIR)/is_read_buffered.Po
+ -rm -f unit/$(DEPDIR)/is_write_buffered.Po
+ -rm -f unit/$(DEPDIR)/packaged_task.Po
+ -rm -f unit/$(DEPDIR)/placeholders.Po
+ -rm -f unit/$(DEPDIR)/post.Po
+ -rm -f unit/$(DEPDIR)/prepend.Po
+ -rm -f unit/$(DEPDIR)/random_access_file.Po
+ -rm -f unit/$(DEPDIR)/read.Po
+ -rm -f unit/$(DEPDIR)/read_at.Po
+ -rm -f unit/$(DEPDIR)/read_until.Po
+ -rm -f unit/$(DEPDIR)/readable_pipe.Po
+ -rm -f unit/$(DEPDIR)/recycling_allocator.Po
+ -rm -f unit/$(DEPDIR)/redirect_error.Po
+ -rm -f unit/$(DEPDIR)/registered_buffer.Po
+ -rm -f unit/$(DEPDIR)/serial_port.Po
+ -rm -f unit/$(DEPDIR)/serial_port_base.Po
+ -rm -f unit/$(DEPDIR)/signal_set.Po
+ -rm -f unit/$(DEPDIR)/signal_set_base.Po
+ -rm -f unit/$(DEPDIR)/socket_base.Po
+ -rm -f unit/$(DEPDIR)/static_thread_pool.Po
+ -rm -f unit/$(DEPDIR)/steady_timer.Po
+ -rm -f unit/$(DEPDIR)/strand.Po
+ -rm -f unit/$(DEPDIR)/stream_file.Po
+ -rm -f unit/$(DEPDIR)/streambuf.Po
+ -rm -f unit/$(DEPDIR)/system_context.Po
+ -rm -f unit/$(DEPDIR)/system_executor.Po
+ -rm -f unit/$(DEPDIR)/system_timer.Po
+ -rm -f unit/$(DEPDIR)/this_coro.Po
+ -rm -f unit/$(DEPDIR)/thread.Po
+ -rm -f unit/$(DEPDIR)/thread_pool.Po
+ -rm -f unit/$(DEPDIR)/time_traits.Po
+ -rm -f unit/$(DEPDIR)/use_awaitable.Po
+ -rm -f unit/$(DEPDIR)/use_future.Po
+ -rm -f unit/$(DEPDIR)/uses_executor.Po
+ -rm -f unit/$(DEPDIR)/wait_traits.Po
+ -rm -f unit/$(DEPDIR)/writable_pipe.Po
+ -rm -f unit/$(DEPDIR)/write.Po
+ -rm -f unit/$(DEPDIR)/write_at.Po
+ -rm -f unit/execution/$(DEPDIR)/any_executor.Po
+ -rm -f unit/execution/$(DEPDIR)/blocking.Po
+ -rm -f unit/execution/$(DEPDIR)/blocking_adaptation.Po
+ -rm -f unit/execution/$(DEPDIR)/context_as.Po
+ -rm -f unit/execution/$(DEPDIR)/executor.Po
+ -rm -f unit/execution/$(DEPDIR)/invocable_archetype.Po
+ -rm -f unit/execution/$(DEPDIR)/mapping.Po
+ -rm -f unit/execution/$(DEPDIR)/outstanding_work.Po
+ -rm -f unit/execution/$(DEPDIR)/prefer_only.Po
+ -rm -f unit/execution/$(DEPDIR)/relationship.Po
+ -rm -f unit/experimental/$(DEPDIR)/awaitable_operators.Po
+ -rm -f unit/experimental/$(DEPDIR)/basic_channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/basic_concurrent_channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/channel_traits.Po
+ -rm -f unit/experimental/$(DEPDIR)/co_composed.Po
+ -rm -f unit/experimental/$(DEPDIR)/concurrent_channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/parallel_group.Po
+ -rm -f unit/experimental/$(DEPDIR)/promise.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/allocator.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/cancel.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/co_spawn.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/exception.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/executor.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/partial.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/simple_test.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/stack_test.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/use_coro.Po
+ -rm -f unit/generic/$(DEPDIR)/basic_endpoint.Po
+ -rm -f unit/generic/$(DEPDIR)/datagram_protocol.Po
+ -rm -f unit/generic/$(DEPDIR)/raw_protocol.Po
+ -rm -f unit/generic/$(DEPDIR)/seq_packet_protocol.Po
+ -rm -f unit/generic/$(DEPDIR)/stream_protocol.Po
+ -rm -f unit/ip/$(DEPDIR)/address.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v4.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v4_iterator.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v4_range.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v6.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v6_iterator.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v6_range.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_endpoint.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver_entry.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver_iterator.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver_query.Po
+ -rm -f unit/ip/$(DEPDIR)/host_name.Po
+ -rm -f unit/ip/$(DEPDIR)/icmp.Po
+ -rm -f unit/ip/$(DEPDIR)/multicast.Po
+ -rm -f unit/ip/$(DEPDIR)/network_v4.Po
+ -rm -f unit/ip/$(DEPDIR)/network_v6.Po
+ -rm -f unit/ip/$(DEPDIR)/resolver_query_base.Po
+ -rm -f unit/ip/$(DEPDIR)/tcp.Po
+ -rm -f unit/ip/$(DEPDIR)/udp.Po
+ -rm -f unit/ip/$(DEPDIR)/unicast.Po
+ -rm -f unit/ip/$(DEPDIR)/v6_only.Po
+ -rm -f unit/local/$(DEPDIR)/basic_endpoint.Po
+ -rm -f unit/local/$(DEPDIR)/connect_pair.Po
+ -rm -f unit/local/$(DEPDIR)/datagram_protocol.Po
+ -rm -f unit/local/$(DEPDIR)/seq_packet_protocol.Po
+ -rm -f unit/local/$(DEPDIR)/stream_protocol.Po
+ -rm -f unit/posix/$(DEPDIR)/basic_descriptor.Po
+ -rm -f unit/posix/$(DEPDIR)/basic_stream_descriptor.Po
+ -rm -f unit/posix/$(DEPDIR)/descriptor.Po
+ -rm -f unit/posix/$(DEPDIR)/descriptor_base.Po
+ -rm -f unit/posix/$(DEPDIR)/stream_descriptor.Po
+ -rm -f unit/ssl/$(DEPDIR)/context.Po
+ -rm -f unit/ssl/$(DEPDIR)/context_base.Po
+ -rm -f unit/ssl/$(DEPDIR)/error.Po
+ -rm -f unit/ssl/$(DEPDIR)/host_name_verification.Po
+ -rm -f unit/ssl/$(DEPDIR)/rfc2818_verification.Po
+ -rm -f unit/ssl/$(DEPDIR)/stream.Po
+ -rm -f unit/ssl/$(DEPDIR)/stream_base.Po
+ -rm -f unit/ts/$(DEPDIR)/buffer.Po
+ -rm -f unit/ts/$(DEPDIR)/executor.Po
+ -rm -f unit/ts/$(DEPDIR)/internet.Po
+ -rm -f unit/ts/$(DEPDIR)/io_context.Po
+ -rm -f unit/ts/$(DEPDIR)/net.Po
+ -rm -f unit/ts/$(DEPDIR)/netfwd.Po
+ -rm -f unit/ts/$(DEPDIR)/socket.Po
+ -rm -f unit/ts/$(DEPDIR)/timer.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_object_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_overlapped_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_random_access_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_stream_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/object_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/overlapped_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/overlapped_ptr.Po
+ -rm -f unit/windows/$(DEPDIR)/random_access_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/stream_handle.Po
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f ../$(DEPDIR)/asio.Po
+ -rm -f ../$(DEPDIR)/asio_ssl.Po
+ -rm -f latency/$(DEPDIR)/tcp_client.Po
+ -rm -f latency/$(DEPDIR)/tcp_server.Po
+ -rm -f latency/$(DEPDIR)/udp_client.Po
+ -rm -f latency/$(DEPDIR)/udp_server.Po
+ -rm -f performance/$(DEPDIR)/client.Po
+ -rm -f performance/$(DEPDIR)/server.Po
+ -rm -f unit/$(DEPDIR)/any_completion_executor.Po
+ -rm -f unit/$(DEPDIR)/any_completion_handler.Po
+ -rm -f unit/$(DEPDIR)/any_io_executor.Po
+ -rm -f unit/$(DEPDIR)/append.Po
+ -rm -f unit/$(DEPDIR)/as_tuple.Po
+ -rm -f unit/$(DEPDIR)/associated_allocator.Po
+ -rm -f unit/$(DEPDIR)/associated_cancellation_slot.Po
+ -rm -f unit/$(DEPDIR)/associated_executor.Po
+ -rm -f unit/$(DEPDIR)/associated_immediate_executor.Po
+ -rm -f unit/$(DEPDIR)/associator.Po
+ -rm -f unit/$(DEPDIR)/async_result.Po
+ -rm -f unit/$(DEPDIR)/awaitable.Po
+ -rm -f unit/$(DEPDIR)/basic_datagram_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_deadline_timer.Po
+ -rm -f unit/$(DEPDIR)/basic_file.Po
+ -rm -f unit/$(DEPDIR)/basic_random_access_file.Po
+ -rm -f unit/$(DEPDIR)/basic_raw_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_readable_pipe.Po
+ -rm -f unit/$(DEPDIR)/basic_seq_packet_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_serial_port.Po
+ -rm -f unit/$(DEPDIR)/basic_signal_set.Po
+ -rm -f unit/$(DEPDIR)/basic_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_socket_acceptor.Po
+ -rm -f unit/$(DEPDIR)/basic_stream_file.Po
+ -rm -f unit/$(DEPDIR)/basic_stream_socket.Po
+ -rm -f unit/$(DEPDIR)/basic_streambuf.Po
+ -rm -f unit/$(DEPDIR)/basic_waitable_timer.Po
+ -rm -f unit/$(DEPDIR)/basic_writable_pipe.Po
+ -rm -f unit/$(DEPDIR)/bind_allocator.Po
+ -rm -f unit/$(DEPDIR)/bind_cancellation_slot.Po
+ -rm -f unit/$(DEPDIR)/bind_executor.Po
+ -rm -f unit/$(DEPDIR)/bind_immediate_executor.Po
+ -rm -f unit/$(DEPDIR)/buffer.Po
+ -rm -f unit/$(DEPDIR)/buffer_registration.Po
+ -rm -f unit/$(DEPDIR)/buffered_read_stream.Po
+ -rm -f unit/$(DEPDIR)/buffered_stream.Po
+ -rm -f unit/$(DEPDIR)/buffered_write_stream.Po
+ -rm -f unit/$(DEPDIR)/buffers_iterator.Po
+ -rm -f unit/$(DEPDIR)/cancellation_signal.Po
+ -rm -f unit/$(DEPDIR)/cancellation_state.Po
+ -rm -f unit/$(DEPDIR)/cancellation_type.Po
+ -rm -f unit/$(DEPDIR)/co_spawn.Po
+ -rm -f unit/$(DEPDIR)/completion_condition.Po
+ -rm -f unit/$(DEPDIR)/compose.Po
+ -rm -f unit/$(DEPDIR)/connect.Po
+ -rm -f unit/$(DEPDIR)/connect_pipe.Po
+ -rm -f unit/$(DEPDIR)/consign.Po
+ -rm -f unit/$(DEPDIR)/coroutine.Po
+ -rm -f unit/$(DEPDIR)/deadline_timer.Po
+ -rm -f unit/$(DEPDIR)/defer.Po
+ -rm -f unit/$(DEPDIR)/deferred.Po
+ -rm -f unit/$(DEPDIR)/detached.Po
+ -rm -f unit/$(DEPDIR)/dispatch.Po
+ -rm -f unit/$(DEPDIR)/error.Po
+ -rm -f unit/$(DEPDIR)/execution_context.Po
+ -rm -f unit/$(DEPDIR)/executor.Po
+ -rm -f unit/$(DEPDIR)/executor_work_guard.Po
+ -rm -f unit/$(DEPDIR)/file_base.Po
+ -rm -f unit/$(DEPDIR)/high_resolution_timer.Po
+ -rm -f unit/$(DEPDIR)/io_context.Po
+ -rm -f unit/$(DEPDIR)/io_context_strand.Po
+ -rm -f unit/$(DEPDIR)/is_read_buffered.Po
+ -rm -f unit/$(DEPDIR)/is_write_buffered.Po
+ -rm -f unit/$(DEPDIR)/packaged_task.Po
+ -rm -f unit/$(DEPDIR)/placeholders.Po
+ -rm -f unit/$(DEPDIR)/post.Po
+ -rm -f unit/$(DEPDIR)/prepend.Po
+ -rm -f unit/$(DEPDIR)/random_access_file.Po
+ -rm -f unit/$(DEPDIR)/read.Po
+ -rm -f unit/$(DEPDIR)/read_at.Po
+ -rm -f unit/$(DEPDIR)/read_until.Po
+ -rm -f unit/$(DEPDIR)/readable_pipe.Po
+ -rm -f unit/$(DEPDIR)/recycling_allocator.Po
+ -rm -f unit/$(DEPDIR)/redirect_error.Po
+ -rm -f unit/$(DEPDIR)/registered_buffer.Po
+ -rm -f unit/$(DEPDIR)/serial_port.Po
+ -rm -f unit/$(DEPDIR)/serial_port_base.Po
+ -rm -f unit/$(DEPDIR)/signal_set.Po
+ -rm -f unit/$(DEPDIR)/signal_set_base.Po
+ -rm -f unit/$(DEPDIR)/socket_base.Po
+ -rm -f unit/$(DEPDIR)/static_thread_pool.Po
+ -rm -f unit/$(DEPDIR)/steady_timer.Po
+ -rm -f unit/$(DEPDIR)/strand.Po
+ -rm -f unit/$(DEPDIR)/stream_file.Po
+ -rm -f unit/$(DEPDIR)/streambuf.Po
+ -rm -f unit/$(DEPDIR)/system_context.Po
+ -rm -f unit/$(DEPDIR)/system_executor.Po
+ -rm -f unit/$(DEPDIR)/system_timer.Po
+ -rm -f unit/$(DEPDIR)/this_coro.Po
+ -rm -f unit/$(DEPDIR)/thread.Po
+ -rm -f unit/$(DEPDIR)/thread_pool.Po
+ -rm -f unit/$(DEPDIR)/time_traits.Po
+ -rm -f unit/$(DEPDIR)/use_awaitable.Po
+ -rm -f unit/$(DEPDIR)/use_future.Po
+ -rm -f unit/$(DEPDIR)/uses_executor.Po
+ -rm -f unit/$(DEPDIR)/wait_traits.Po
+ -rm -f unit/$(DEPDIR)/writable_pipe.Po
+ -rm -f unit/$(DEPDIR)/write.Po
+ -rm -f unit/$(DEPDIR)/write_at.Po
+ -rm -f unit/execution/$(DEPDIR)/any_executor.Po
+ -rm -f unit/execution/$(DEPDIR)/blocking.Po
+ -rm -f unit/execution/$(DEPDIR)/blocking_adaptation.Po
+ -rm -f unit/execution/$(DEPDIR)/context_as.Po
+ -rm -f unit/execution/$(DEPDIR)/executor.Po
+ -rm -f unit/execution/$(DEPDIR)/invocable_archetype.Po
+ -rm -f unit/execution/$(DEPDIR)/mapping.Po
+ -rm -f unit/execution/$(DEPDIR)/outstanding_work.Po
+ -rm -f unit/execution/$(DEPDIR)/prefer_only.Po
+ -rm -f unit/execution/$(DEPDIR)/relationship.Po
+ -rm -f unit/experimental/$(DEPDIR)/awaitable_operators.Po
+ -rm -f unit/experimental/$(DEPDIR)/basic_channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/basic_concurrent_channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/channel_traits.Po
+ -rm -f unit/experimental/$(DEPDIR)/co_composed.Po
+ -rm -f unit/experimental/$(DEPDIR)/concurrent_channel.Po
+ -rm -f unit/experimental/$(DEPDIR)/parallel_group.Po
+ -rm -f unit/experimental/$(DEPDIR)/promise.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/allocator.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/cancel.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/co_spawn.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/exception.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/executor.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/partial.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/simple_test.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/stack_test.Po
+ -rm -f unit/experimental/coro/$(DEPDIR)/use_coro.Po
+ -rm -f unit/generic/$(DEPDIR)/basic_endpoint.Po
+ -rm -f unit/generic/$(DEPDIR)/datagram_protocol.Po
+ -rm -f unit/generic/$(DEPDIR)/raw_protocol.Po
+ -rm -f unit/generic/$(DEPDIR)/seq_packet_protocol.Po
+ -rm -f unit/generic/$(DEPDIR)/stream_protocol.Po
+ -rm -f unit/ip/$(DEPDIR)/address.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v4.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v4_iterator.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v4_range.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v6.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v6_iterator.Po
+ -rm -f unit/ip/$(DEPDIR)/address_v6_range.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_endpoint.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver_entry.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver_iterator.Po
+ -rm -f unit/ip/$(DEPDIR)/basic_resolver_query.Po
+ -rm -f unit/ip/$(DEPDIR)/host_name.Po
+ -rm -f unit/ip/$(DEPDIR)/icmp.Po
+ -rm -f unit/ip/$(DEPDIR)/multicast.Po
+ -rm -f unit/ip/$(DEPDIR)/network_v4.Po
+ -rm -f unit/ip/$(DEPDIR)/network_v6.Po
+ -rm -f unit/ip/$(DEPDIR)/resolver_query_base.Po
+ -rm -f unit/ip/$(DEPDIR)/tcp.Po
+ -rm -f unit/ip/$(DEPDIR)/udp.Po
+ -rm -f unit/ip/$(DEPDIR)/unicast.Po
+ -rm -f unit/ip/$(DEPDIR)/v6_only.Po
+ -rm -f unit/local/$(DEPDIR)/basic_endpoint.Po
+ -rm -f unit/local/$(DEPDIR)/connect_pair.Po
+ -rm -f unit/local/$(DEPDIR)/datagram_protocol.Po
+ -rm -f unit/local/$(DEPDIR)/seq_packet_protocol.Po
+ -rm -f unit/local/$(DEPDIR)/stream_protocol.Po
+ -rm -f unit/posix/$(DEPDIR)/basic_descriptor.Po
+ -rm -f unit/posix/$(DEPDIR)/basic_stream_descriptor.Po
+ -rm -f unit/posix/$(DEPDIR)/descriptor.Po
+ -rm -f unit/posix/$(DEPDIR)/descriptor_base.Po
+ -rm -f unit/posix/$(DEPDIR)/stream_descriptor.Po
+ -rm -f unit/ssl/$(DEPDIR)/context.Po
+ -rm -f unit/ssl/$(DEPDIR)/context_base.Po
+ -rm -f unit/ssl/$(DEPDIR)/error.Po
+ -rm -f unit/ssl/$(DEPDIR)/host_name_verification.Po
+ -rm -f unit/ssl/$(DEPDIR)/rfc2818_verification.Po
+ -rm -f unit/ssl/$(DEPDIR)/stream.Po
+ -rm -f unit/ssl/$(DEPDIR)/stream_base.Po
+ -rm -f unit/ts/$(DEPDIR)/buffer.Po
+ -rm -f unit/ts/$(DEPDIR)/executor.Po
+ -rm -f unit/ts/$(DEPDIR)/internet.Po
+ -rm -f unit/ts/$(DEPDIR)/io_context.Po
+ -rm -f unit/ts/$(DEPDIR)/net.Po
+ -rm -f unit/ts/$(DEPDIR)/netfwd.Po
+ -rm -f unit/ts/$(DEPDIR)/socket.Po
+ -rm -f unit/ts/$(DEPDIR)/timer.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_object_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_overlapped_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_random_access_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/basic_stream_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/object_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/overlapped_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/overlapped_ptr.Po
+ -rm -f unit/windows/$(DEPDIR)/random_access_handle.Po
+ -rm -f unit/windows/$(DEPDIR)/stream_handle.Po
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--depfiles check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-noinstLIBRARIES \
+ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/3rdparty/asio/src/tests/latency/.gitignore b/3rdparty/asio/src/tests/latency/.gitignore
deleted file mode 100644
index feea55d4d7f..00000000000
--- a/3rdparty/asio/src/tests/latency/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*client
-*server
-*.ilk
-*.manifest
-*.pdb
-*.tds
diff --git a/3rdparty/asio/src/tests/latency/allocator.hpp b/3rdparty/asio/src/tests/latency/allocator.hpp
index 56a7af3ae9b..2b186aef8ec 100644
--- a/3rdparty/asio/src/tests/latency/allocator.hpp
+++ b/3rdparty/asio/src/tests/latency/allocator.hpp
@@ -2,7 +2,7 @@
// allocator.hpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/latency/coroutine.hpp b/3rdparty/asio/src/tests/latency/coroutine.hpp
deleted file mode 100644
index 74b515b843c..00000000000
--- a/3rdparty/asio/src/tests/latency/coroutine.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// coroutine.hpp
-// ~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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 COROUTINE_HPP
-#define COROUTINE_HPP
-
-class coroutine
-{
-public:
- coroutine() : value_(0) {}
- bool is_child() const { return value_ < 0; }
- bool is_parent() const { return !is_child(); }
- bool is_complete() const { return value_ == -1; }
-private:
- friend class coroutine_ref;
- int value_;
-};
-
-class coroutine_ref
-{
-public:
- coroutine_ref(coroutine& c) : value_(c.value_), modified_(false) {}
- coroutine_ref(coroutine* c) : value_(c->value_), modified_(false) {}
- ~coroutine_ref() { if (!modified_) value_ = -1; }
- operator int() const { return value_; }
- int& operator=(int v) { modified_ = true; return value_ = v; }
-private:
- void operator=(const coroutine_ref&);
- int& value_;
- bool modified_;
-};
-
-#define CORO_REENTER(c) \
- switch (coroutine_ref _coro_value = c) \
- case -1: if (_coro_value) \
- { \
- goto terminate_coroutine; \
- terminate_coroutine: \
- _coro_value = -1; \
- goto bail_out_of_coroutine; \
- bail_out_of_coroutine: \
- break; \
- } \
- else case 0:
-
-#define CORO_YIELD_IMPL(n) \
- for (_coro_value = (n);;) \
- if (_coro_value == 0) \
- { \
- case (n): ; \
- break; \
- } \
- else \
- switch (_coro_value ? 0 : 1) \
- for (;;) \
- case -1: if (_coro_value) \
- goto terminate_coroutine; \
- else for (;;) \
- case 1: if (_coro_value) \
- goto bail_out_of_coroutine; \
- else case 0:
-
-#define CORO_FORK_IMPL(n) \
- for (_coro_value = -(n);; _coro_value = (n)) \
- if (_coro_value == (n)) \
- { \
- case -(n): ; \
- break; \
- } \
- else
-
-#if defined(_MSC_VER)
-# define CORO_YIELD CORO_YIELD_IMPL(__COUNTER__ + 1)
-# define CORO_FORK CORO_FORK_IMPL(__COUNTER__ + 1)
-#else // defined(_MSC_VER)
-# define CORO_YIELD CORO_YIELD_IMPL(__LINE__)
-# define CORO_FORK CORO_FORK_IMPL(__LINE__)
-#endif // defined(_MSC_VER)
-
-#endif // COROUTINE_HPP
diff --git a/3rdparty/asio/src/tests/latency/high_res_clock.hpp b/3rdparty/asio/src/tests/latency/high_res_clock.hpp
index 4756f52646b..a497834d6d8 100644
--- a/3rdparty/asio/src/tests/latency/high_res_clock.hpp
+++ b/3rdparty/asio/src/tests/latency/high_res_clock.hpp
@@ -2,7 +2,7 @@
// high_res_clock.hpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/latency/tcp_client.cpp b/3rdparty/asio/src/tests/latency/tcp_client.cpp
index ee1b6711f5d..2a4c5b7640f 100644
--- a/3rdparty/asio/src/tests/latency/tcp_client.cpp
+++ b/3rdparty/asio/src/tests/latency/tcp_client.cpp
@@ -2,7 +2,7 @@
// tcp_client.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/latency/tcp_server.cpp b/3rdparty/asio/src/tests/latency/tcp_server.cpp
index 2bbdfdc17b0..c26c8509a45 100644
--- a/3rdparty/asio/src/tests/latency/tcp_server.cpp
+++ b/3rdparty/asio/src/tests/latency/tcp_server.cpp
@@ -2,7 +2,7 @@
// tcp_server.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -20,14 +20,14 @@
using asio::ip::tcp;
-#include "yield.hpp"
+#include <asio/yield.hpp>
-class tcp_server : coroutine
+class tcp_server : asio::coroutine
{
public:
tcp_server(tcp::acceptor& acceptor, std::size_t buf_size) :
acceptor_(acceptor),
- socket_(acceptor_.get_executor().context()),
+ socket_(acceptor_.get_executor()),
buffer_(buf_size)
{
}
@@ -79,7 +79,7 @@ private:
tcp::endpoint sender_;
};
-#include "unyield.hpp"
+#include <asio/unyield.hpp>
int main(int argc, char* argv[])
{
diff --git a/3rdparty/asio/src/tests/latency/udp_client.cpp b/3rdparty/asio/src/tests/latency/udp_client.cpp
index cc2762971d0..484ba085cd8 100644
--- a/3rdparty/asio/src/tests/latency/udp_client.cpp
+++ b/3rdparty/asio/src/tests/latency/udp_client.cpp
@@ -2,7 +2,7 @@
// udp_client.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/latency/udp_server.cpp b/3rdparty/asio/src/tests/latency/udp_server.cpp
index a767f4c782a..13483fab76f 100644
--- a/3rdparty/asio/src/tests/latency/udp_server.cpp
+++ b/3rdparty/asio/src/tests/latency/udp_server.cpp
@@ -2,7 +2,7 @@
// udp_server.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -19,9 +19,9 @@
using asio::ip::udp;
-#include "yield.hpp"
+#include <asio/yield.hpp>
-class udp_server : coroutine
+class udp_server : asio::coroutine
{
public:
udp_server(asio::io_context& io_context,
@@ -90,7 +90,7 @@ private:
allocator allocator_;
};
-#include "unyield.hpp"
+#include <asio/unyield.hpp>
int main(int argc, char* argv[])
{
diff --git a/3rdparty/asio/src/tests/latency/unyield.hpp b/3rdparty/asio/src/tests/latency/unyield.hpp
deleted file mode 100644
index ccbb043547e..00000000000
--- a/3rdparty/asio/src/tests/latency/unyield.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// unyield.hpp
-// ~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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)
-//
-
-#ifdef reenter
-# undef reenter
-#endif
-
-#ifdef yield
-# undef yield
-#endif
-
-#ifdef fork
-# undef fork
-#endif
diff --git a/3rdparty/asio/src/tests/latency/yield.hpp b/3rdparty/asio/src/tests/latency/yield.hpp
deleted file mode 100644
index bf4c6a8e13e..00000000000
--- a/3rdparty/asio/src/tests/latency/yield.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// yield.hpp
-// ~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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)
-//
-
-#include "coroutine.hpp"
-
-#ifndef reenter
-# define reenter(c) CORO_REENTER(c)
-#endif
-
-#ifndef yield
-# define yield CORO_YIELD
-#endif
-
-#ifndef fork
-# define fork CORO_FORK
-#endif
diff --git a/3rdparty/asio/src/tests/performance/.gitignore b/3rdparty/asio/src/tests/performance/.gitignore
deleted file mode 100644
index 692ea7e7e65..00000000000
--- a/3rdparty/asio/src/tests/performance/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-client
-server
-*.ilk
-*.manifest
-*.pdb
-*.tds
diff --git a/3rdparty/asio/src/tests/performance/client.cpp b/3rdparty/asio/src/tests/performance/client.cpp
index 6851d32fc9e..b42a6c50930 100644
--- a/3rdparty/asio/src/tests/performance/client.cpp
+++ b/3rdparty/asio/src/tests/performance/client.cpp
@@ -2,7 +2,7 @@
// client.cpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -10,7 +10,7 @@
#include "asio.hpp"
#include <algorithm>
-#include <boost/bind.hpp>
+#include <boost/bind/bind.hpp>
#include <boost/mem_fn.hpp>
#include <iostream>
#include <list>
@@ -51,7 +51,7 @@ class session
{
public:
session(asio::io_context& ioc, size_t block_size, stats& s)
- : strand_(ioc),
+ : strand_(ioc.get_executor()),
socket_(ioc),
block_size_(block_size),
read_data_(new char[block_size]),
@@ -173,7 +173,7 @@ private:
}
private:
- asio::io_context::strand strand_;
+ asio::strand<asio::io_context::executor_type> strand_;
asio::ip::tcp::socket socket_;
size_t block_size_;
char* read_data_;
@@ -198,7 +198,7 @@ public:
sessions_(),
stats_()
{
- stop_timer_.expires_from_now(boost::posix_time::seconds(timeout));
+ stop_timer_.expires_after(asio::chrono::seconds(timeout));
stop_timer_.async_wait(boost::bind(&client::handle_timeout, this));
for (size_t i = 0; i < session_count; ++i)
@@ -228,7 +228,7 @@ public:
private:
asio::io_context& io_context_;
- asio::deadline_timer stop_timer_;
+ asio::steady_timer stop_timer_;
std::list<session*> sessions_;
stats stats_;
};
diff --git a/3rdparty/asio/src/tests/performance/handler_allocator.hpp b/3rdparty/asio/src/tests/performance/handler_allocator.hpp
index b8609049728..6c1b98532ab 100644
--- a/3rdparty/asio/src/tests/performance/handler_allocator.hpp
+++ b/3rdparty/asio/src/tests/performance/handler_allocator.hpp
@@ -2,7 +2,7 @@
// handler_allocator.cpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/performance/server.cpp b/3rdparty/asio/src/tests/performance/server.cpp
index be8c3813ece..9de3c1294f8 100644
--- a/3rdparty/asio/src/tests/performance/server.cpp
+++ b/3rdparty/asio/src/tests/performance/server.cpp
@@ -2,7 +2,7 @@
// server.cpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -10,7 +10,7 @@
#include "asio.hpp"
#include <algorithm>
-#include <boost/bind.hpp>
+#include <boost/bind/bind.hpp>
#include <iostream>
#include <list>
#include "handler_allocator.hpp"
@@ -20,7 +20,7 @@ class session
public:
session(asio::io_context& ioc, size_t block_size)
: io_context_(ioc),
- strand_(ioc),
+ strand_(ioc.get_executor()),
socket_(ioc),
block_size_(block_size),
read_data_(new char[block_size]),
@@ -129,7 +129,7 @@ public:
private:
asio::io_context& io_context_;
- asio::io_context::strand strand_;
+ asio::strand<asio::io_context::executor_type> strand_;
asio::ip::tcp::socket socket_;
size_t block_size_;
char* read_data_;
diff --git a/3rdparty/asio/src/tests/properties/Makefile.am b/3rdparty/asio/src/tests/properties/Makefile.am
new file mode 100644
index 00000000000..688b3f48640
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/Makefile.am
@@ -0,0 +1,367 @@
+AUTOMAKE_OPTIONS = subdir-objects
+
+check_PROGRAMS = \
+ cpp03/query_free \
+ cpp03/query_member \
+ cpp03/query_static \
+ cpp03/can_query_free \
+ cpp03/can_query_member \
+ cpp03/can_query_static \
+ cpp03/can_query_unsupported \
+ cpp03/can_query_not_applicable_free \
+ cpp03/can_query_not_applicable_member \
+ cpp03/can_query_not_applicable_static \
+ cpp03/can_query_not_applicable_unsupported \
+ cpp03/require_concept_free \
+ cpp03/require_concept_member \
+ cpp03/require_concept_static \
+ cpp03/can_require_concept_free \
+ cpp03/can_require_concept_member \
+ cpp03/can_require_concept_static \
+ cpp03/can_require_concept_unsupported \
+ cpp03/can_require_concept_not_applicable_free \
+ cpp03/can_require_concept_not_applicable_member \
+ cpp03/can_require_concept_not_applicable_static \
+ cpp03/can_require_concept_not_applicable_unsupported \
+ cpp03/require_free \
+ cpp03/require_member \
+ cpp03/require_static \
+ cpp03/can_require_free \
+ cpp03/can_require_member \
+ cpp03/can_require_static \
+ cpp03/can_require_unsupported \
+ cpp03/can_require_not_applicable_free \
+ cpp03/can_require_not_applicable_member \
+ cpp03/can_require_not_applicable_static \
+ cpp03/can_require_not_applicable_unsupported \
+ cpp03/prefer_free_prefer \
+ cpp03/prefer_member_prefer \
+ cpp03/prefer_free_require \
+ cpp03/prefer_member_require \
+ cpp03/prefer_static \
+ cpp03/prefer_unsupported \
+ cpp03/can_prefer_free_prefer \
+ cpp03/can_prefer_free_require \
+ cpp03/can_prefer_member_prefer \
+ cpp03/can_prefer_member_require \
+ cpp03/can_prefer_static \
+ cpp03/can_prefer_unsupported \
+ cpp03/can_prefer_not_applicable_free_prefer \
+ cpp03/can_prefer_not_applicable_free_require \
+ cpp03/can_prefer_not_applicable_member_prefer \
+ cpp03/can_prefer_not_applicable_member_require \
+ cpp03/can_prefer_not_applicable_static \
+ cpp03/can_prefer_not_applicable_unsupported \
+ cpp03/can_prefer_not_preferable_free_prefer \
+ cpp03/can_prefer_not_preferable_free_require \
+ cpp03/can_prefer_not_preferable_member_prefer \
+ cpp03/can_prefer_not_preferable_member_require \
+ cpp03/can_prefer_not_preferable_static \
+ cpp03/can_prefer_not_preferable_unsupported
+
+cpp03_query_free_SOURCES = cpp03/query_free.cpp
+cpp03_query_member_SOURCES = cpp03/query_member.cpp
+cpp03_query_static_SOURCES = cpp03/query_static.cpp
+cpp03_can_query_free_SOURCES = cpp03/can_query_free.cpp
+cpp03_can_query_member_SOURCES = cpp03/can_query_member.cpp
+cpp03_can_query_static_SOURCES = cpp03/can_query_static.cpp
+cpp03_can_query_unsupported_SOURCES = cpp03/can_query_unsupported.cpp
+cpp03_can_query_not_applicable_free_SOURCES = cpp03/can_query_not_applicable_free.cpp
+cpp03_can_query_not_applicable_member_SOURCES = cpp03/can_query_not_applicable_member.cpp
+cpp03_can_query_not_applicable_static_SOURCES = cpp03/can_query_not_applicable_static.cpp
+cpp03_can_query_not_applicable_unsupported_SOURCES = cpp03/can_query_not_applicable_unsupported.cpp
+cpp03_require_concept_free_SOURCES = cpp03/require_concept_free.cpp
+cpp03_require_concept_member_SOURCES = cpp03/require_concept_member.cpp
+cpp03_require_concept_static_SOURCES = cpp03/require_concept_static.cpp
+cpp03_can_require_concept_free_SOURCES = cpp03/can_require_concept_free.cpp
+cpp03_can_require_concept_member_SOURCES = cpp03/can_require_concept_member.cpp
+cpp03_can_require_concept_static_SOURCES = cpp03/can_require_concept_static.cpp
+cpp03_can_require_concept_unsupported_SOURCES = cpp03/can_require_concept_unsupported.cpp
+cpp03_can_require_concept_not_applicable_free_SOURCES = cpp03/can_require_concept_not_applicable_free.cpp
+cpp03_can_require_concept_not_applicable_member_SOURCES = cpp03/can_require_concept_not_applicable_member.cpp
+cpp03_can_require_concept_not_applicable_static_SOURCES = cpp03/can_require_concept_not_applicable_static.cpp
+cpp03_can_require_concept_not_applicable_unsupported_SOURCES = cpp03/can_require_concept_not_applicable_unsupported.cpp
+cpp03_require_free_SOURCES = cpp03/require_free.cpp
+cpp03_require_member_SOURCES = cpp03/require_member.cpp
+cpp03_require_static_SOURCES = cpp03/require_static.cpp
+cpp03_can_require_free_SOURCES = cpp03/can_require_free.cpp
+cpp03_can_require_member_SOURCES = cpp03/can_require_member.cpp
+cpp03_can_require_static_SOURCES = cpp03/can_require_static.cpp
+cpp03_can_require_unsupported_SOURCES = cpp03/can_require_unsupported.cpp
+cpp03_can_require_not_applicable_free_SOURCES = cpp03/can_require_not_applicable_free.cpp
+cpp03_can_require_not_applicable_member_SOURCES = cpp03/can_require_not_applicable_member.cpp
+cpp03_can_require_not_applicable_static_SOURCES = cpp03/can_require_not_applicable_static.cpp
+cpp03_can_require_not_applicable_unsupported_SOURCES = cpp03/can_require_not_applicable_unsupported.cpp
+cpp03_prefer_free_prefer_SOURCES = cpp03/prefer_free_prefer.cpp
+cpp03_prefer_free_require_SOURCES = cpp03/prefer_free_require.cpp
+cpp03_prefer_member_prefer_SOURCES = cpp03/prefer_member_prefer.cpp
+cpp03_prefer_member_require_SOURCES = cpp03/prefer_member_require.cpp
+cpp03_prefer_static_SOURCES = cpp03/prefer_static.cpp
+cpp03_prefer_unsupported_SOURCES = cpp03/prefer_unsupported.cpp
+cpp03_can_prefer_free_prefer_SOURCES = cpp03/can_prefer_free_prefer.cpp
+cpp03_can_prefer_free_require_SOURCES = cpp03/can_prefer_free_require.cpp
+cpp03_can_prefer_member_prefer_SOURCES = cpp03/can_prefer_member_prefer.cpp
+cpp03_can_prefer_member_require_SOURCES = cpp03/can_prefer_member_require.cpp
+cpp03_can_prefer_static_SOURCES = cpp03/can_prefer_static.cpp
+cpp03_can_prefer_unsupported_SOURCES = cpp03/can_prefer_unsupported.cpp
+cpp03_can_prefer_not_applicable_free_prefer_SOURCES = cpp03/can_prefer_not_applicable_free_prefer.cpp
+cpp03_can_prefer_not_applicable_free_require_SOURCES = cpp03/can_prefer_not_applicable_free_require.cpp
+cpp03_can_prefer_not_applicable_member_prefer_SOURCES = cpp03/can_prefer_not_applicable_member_prefer.cpp
+cpp03_can_prefer_not_applicable_member_require_SOURCES = cpp03/can_prefer_not_applicable_member_require.cpp
+cpp03_can_prefer_not_applicable_static_SOURCES = cpp03/can_prefer_not_applicable_static.cpp
+cpp03_can_prefer_not_applicable_unsupported_SOURCES = cpp03/can_prefer_not_applicable_unsupported.cpp
+cpp03_can_prefer_not_preferable_free_prefer_SOURCES = cpp03/can_prefer_not_preferable_free_prefer.cpp
+cpp03_can_prefer_not_preferable_free_require_SOURCES = cpp03/can_prefer_not_preferable_free_require.cpp
+cpp03_can_prefer_not_preferable_member_prefer_SOURCES = cpp03/can_prefer_not_preferable_member_prefer.cpp
+cpp03_can_prefer_not_preferable_member_require_SOURCES = cpp03/can_prefer_not_preferable_member_require.cpp
+cpp03_can_prefer_not_preferable_static_SOURCES = cpp03/can_prefer_not_preferable_static.cpp
+cpp03_can_prefer_not_preferable_unsupported_SOURCES = cpp03/can_prefer_not_preferable_unsupported.cpp
+
+if HAVE_CXX11
+
+check_PROGRAMS += \
+ cpp11/query_free \
+ cpp11/query_member \
+ cpp11/query_static \
+ cpp11/can_query_free \
+ cpp11/can_query_member \
+ cpp11/can_query_static \
+ cpp11/can_query_unsupported \
+ cpp11/can_query_not_applicable_free \
+ cpp11/can_query_not_applicable_member \
+ cpp11/can_query_not_applicable_static \
+ cpp11/can_query_not_applicable_unsupported \
+ cpp11/require_concept_free \
+ cpp11/require_concept_member \
+ cpp11/require_concept_static \
+ cpp11/can_require_concept_free \
+ cpp11/can_require_concept_member \
+ cpp11/can_require_concept_static \
+ cpp11/can_require_concept_unsupported \
+ cpp11/can_require_concept_not_applicable_free \
+ cpp11/can_require_concept_not_applicable_member \
+ cpp11/can_require_concept_not_applicable_static \
+ cpp11/can_require_concept_not_applicable_unsupported \
+ cpp11/require_free \
+ cpp11/require_member \
+ cpp11/require_static \
+ cpp11/can_require_free \
+ cpp11/can_require_member \
+ cpp11/can_require_static \
+ cpp11/can_require_unsupported \
+ cpp11/can_require_not_applicable_free \
+ cpp11/can_require_not_applicable_member \
+ cpp11/can_require_not_applicable_static \
+ cpp11/can_require_not_applicable_unsupported \
+ cpp11/prefer_free_prefer \
+ cpp11/prefer_member_prefer \
+ cpp11/prefer_free_require \
+ cpp11/prefer_member_require \
+ cpp11/prefer_static \
+ cpp11/prefer_unsupported \
+ cpp11/can_prefer_free_prefer \
+ cpp11/can_prefer_free_require \
+ cpp11/can_prefer_member_prefer \
+ cpp11/can_prefer_member_require \
+ cpp11/can_prefer_static \
+ cpp11/can_prefer_unsupported \
+ cpp11/can_prefer_not_applicable_free_prefer \
+ cpp11/can_prefer_not_applicable_free_require \
+ cpp11/can_prefer_not_applicable_member_prefer \
+ cpp11/can_prefer_not_applicable_member_require \
+ cpp11/can_prefer_not_applicable_static \
+ cpp11/can_prefer_not_applicable_unsupported \
+ cpp11/can_prefer_not_preferable_free_prefer \
+ cpp11/can_prefer_not_preferable_free_require \
+ cpp11/can_prefer_not_preferable_member_prefer \
+ cpp11/can_prefer_not_preferable_member_require \
+ cpp11/can_prefer_not_preferable_static \
+ cpp11/can_prefer_not_preferable_unsupported
+
+cpp11_query_free_SOURCES = cpp11/query_free.cpp
+cpp11_query_member_SOURCES = cpp11/query_member.cpp
+cpp11_query_static_SOURCES = cpp11/query_static.cpp
+cpp11_can_query_free_SOURCES = cpp11/can_query_free.cpp
+cpp11_can_query_member_SOURCES = cpp11/can_query_member.cpp
+cpp11_can_query_static_SOURCES = cpp11/can_query_static.cpp
+cpp11_can_query_unsupported_SOURCES = cpp11/can_query_unsupported.cpp
+cpp11_can_query_not_applicable_free_SOURCES = cpp11/can_query_not_applicable_free.cpp
+cpp11_can_query_not_applicable_member_SOURCES = cpp11/can_query_not_applicable_member.cpp
+cpp11_can_query_not_applicable_static_SOURCES = cpp11/can_query_not_applicable_static.cpp
+cpp11_can_query_not_applicable_unsupported_SOURCES = cpp11/can_query_not_applicable_unsupported.cpp
+cpp11_require_concept_free_SOURCES = cpp11/require_concept_free.cpp
+cpp11_require_concept_member_SOURCES = cpp11/require_concept_member.cpp
+cpp11_require_concept_static_SOURCES = cpp11/require_concept_static.cpp
+cpp11_can_require_concept_free_SOURCES = cpp11/can_require_concept_free.cpp
+cpp11_can_require_concept_member_SOURCES = cpp11/can_require_concept_member.cpp
+cpp11_can_require_concept_static_SOURCES = cpp11/can_require_concept_static.cpp
+cpp11_can_require_concept_unsupported_SOURCES = cpp11/can_require_concept_unsupported.cpp
+cpp11_can_require_concept_not_applicable_free_SOURCES = cpp11/can_require_concept_not_applicable_free.cpp
+cpp11_can_require_concept_not_applicable_member_SOURCES = cpp11/can_require_concept_not_applicable_member.cpp
+cpp11_can_require_concept_not_applicable_static_SOURCES = cpp11/can_require_concept_not_applicable_static.cpp
+cpp11_can_require_concept_not_applicable_unsupported_SOURCES = cpp11/can_require_concept_not_applicable_unsupported.cpp
+cpp11_require_free_SOURCES = cpp11/require_free.cpp
+cpp11_require_member_SOURCES = cpp11/require_member.cpp
+cpp11_require_static_SOURCES = cpp11/require_static.cpp
+cpp11_can_require_free_SOURCES = cpp11/can_require_free.cpp
+cpp11_can_require_member_SOURCES = cpp11/can_require_member.cpp
+cpp11_can_require_static_SOURCES = cpp11/can_require_static.cpp
+cpp11_can_require_unsupported_SOURCES = cpp11/can_require_unsupported.cpp
+cpp11_can_require_not_applicable_free_SOURCES = cpp11/can_require_not_applicable_free.cpp
+cpp11_can_require_not_applicable_member_SOURCES = cpp11/can_require_not_applicable_member.cpp
+cpp11_can_require_not_applicable_static_SOURCES = cpp11/can_require_not_applicable_static.cpp
+cpp11_can_require_not_applicable_unsupported_SOURCES = cpp11/can_require_not_applicable_unsupported.cpp
+cpp11_prefer_free_prefer_SOURCES = cpp11/prefer_free_prefer.cpp
+cpp11_prefer_free_require_SOURCES = cpp11/prefer_free_require.cpp
+cpp11_prefer_member_prefer_SOURCES = cpp11/prefer_member_prefer.cpp
+cpp11_prefer_member_require_SOURCES = cpp11/prefer_member_require.cpp
+cpp11_prefer_static_SOURCES = cpp11/prefer_static.cpp
+cpp11_prefer_unsupported_SOURCES = cpp11/prefer_unsupported.cpp
+cpp11_can_prefer_free_prefer_SOURCES = cpp11/can_prefer_free_prefer.cpp
+cpp11_can_prefer_free_require_SOURCES = cpp11/can_prefer_free_require.cpp
+cpp11_can_prefer_member_prefer_SOURCES = cpp11/can_prefer_member_prefer.cpp
+cpp11_can_prefer_member_require_SOURCES = cpp11/can_prefer_member_require.cpp
+cpp11_can_prefer_static_SOURCES = cpp11/can_prefer_static.cpp
+cpp11_can_prefer_unsupported_SOURCES = cpp11/can_prefer_unsupported.cpp
+cpp11_can_prefer_not_applicable_free_prefer_SOURCES = cpp11/can_prefer_not_applicable_free_prefer.cpp
+cpp11_can_prefer_not_applicable_free_require_SOURCES = cpp11/can_prefer_not_applicable_free_require.cpp
+cpp11_can_prefer_not_applicable_member_prefer_SOURCES = cpp11/can_prefer_not_applicable_member_prefer.cpp
+cpp11_can_prefer_not_applicable_member_require_SOURCES = cpp11/can_prefer_not_applicable_member_require.cpp
+cpp11_can_prefer_not_applicable_static_SOURCES = cpp11/can_prefer_not_applicable_static.cpp
+cpp11_can_prefer_not_applicable_unsupported_SOURCES = cpp11/can_prefer_not_applicable_unsupported.cpp
+cpp11_can_prefer_not_preferable_free_prefer_SOURCES = cpp11/can_prefer_not_preferable_free_prefer.cpp
+cpp11_can_prefer_not_preferable_free_require_SOURCES = cpp11/can_prefer_not_preferable_free_require.cpp
+cpp11_can_prefer_not_preferable_member_prefer_SOURCES = cpp11/can_prefer_not_preferable_member_prefer.cpp
+cpp11_can_prefer_not_preferable_member_require_SOURCES = cpp11/can_prefer_not_preferable_member_require.cpp
+cpp11_can_prefer_not_preferable_static_SOURCES = cpp11/can_prefer_not_preferable_static.cpp
+cpp11_can_prefer_not_preferable_unsupported_SOURCES = cpp11/can_prefer_not_preferable_unsupported.cpp
+
+endif
+
+if HAVE_CXX14
+
+check_PROGRAMS += \
+ cpp14/query_free \
+ cpp14/query_member \
+ cpp14/query_static \
+ cpp14/can_query_free \
+ cpp14/can_query_member \
+ cpp14/can_query_static \
+ cpp14/can_query_unsupported \
+ cpp14/can_query_not_applicable_free \
+ cpp14/can_query_not_applicable_member \
+ cpp14/can_query_not_applicable_static \
+ cpp14/can_query_not_applicable_unsupported \
+ cpp14/require_concept_free \
+ cpp14/require_concept_member \
+ cpp14/require_concept_static \
+ cpp14/can_require_concept_free \
+ cpp14/can_require_concept_member \
+ cpp14/can_require_concept_static \
+ cpp14/can_require_concept_unsupported \
+ cpp14/can_require_concept_not_applicable_free \
+ cpp14/can_require_concept_not_applicable_member \
+ cpp14/can_require_concept_not_applicable_static \
+ cpp14/can_require_concept_not_applicable_unsupported \
+ cpp14/require_free \
+ cpp14/require_member \
+ cpp14/require_static \
+ cpp14/can_require_free \
+ cpp14/can_require_member \
+ cpp14/can_require_static \
+ cpp14/can_require_unsupported \
+ cpp14/can_require_not_applicable_free \
+ cpp14/can_require_not_applicable_member \
+ cpp14/can_require_not_applicable_static \
+ cpp14/can_require_not_applicable_unsupported \
+ cpp14/prefer_free_prefer \
+ cpp14/prefer_member_prefer \
+ cpp14/prefer_free_require \
+ cpp14/prefer_member_require \
+ cpp14/prefer_static \
+ cpp14/prefer_unsupported \
+ cpp14/can_prefer_free_prefer \
+ cpp14/can_prefer_free_require \
+ cpp14/can_prefer_member_prefer \
+ cpp14/can_prefer_member_require \
+ cpp14/can_prefer_static \
+ cpp14/can_prefer_unsupported \
+ cpp14/can_prefer_not_applicable_free_prefer \
+ cpp14/can_prefer_not_applicable_free_require \
+ cpp14/can_prefer_not_applicable_member_prefer \
+ cpp14/can_prefer_not_applicable_member_require \
+ cpp14/can_prefer_not_applicable_static \
+ cpp14/can_prefer_not_applicable_unsupported \
+ cpp14/can_prefer_not_preferable_free_prefer \
+ cpp14/can_prefer_not_preferable_free_require \
+ cpp14/can_prefer_not_preferable_member_prefer \
+ cpp14/can_prefer_not_preferable_member_require \
+ cpp14/can_prefer_not_preferable_static \
+ cpp14/can_prefer_not_preferable_unsupported
+
+cpp14_query_free_SOURCES = cpp14/query_free.cpp
+cpp14_query_member_SOURCES = cpp14/query_member.cpp
+cpp14_query_static_SOURCES = cpp14/query_static.cpp
+cpp14_can_query_free_SOURCES = cpp14/can_query_free.cpp
+cpp14_can_query_member_SOURCES = cpp14/can_query_member.cpp
+cpp14_can_query_static_SOURCES = cpp14/can_query_static.cpp
+cpp14_can_query_unsupported_SOURCES = cpp14/can_query_unsupported.cpp
+cpp14_can_query_not_applicable_free_SOURCES = cpp14/can_query_not_applicable_free.cpp
+cpp14_can_query_not_applicable_member_SOURCES = cpp14/can_query_not_applicable_member.cpp
+cpp14_can_query_not_applicable_static_SOURCES = cpp14/can_query_not_applicable_static.cpp
+cpp14_can_query_not_applicable_unsupported_SOURCES = cpp14/can_query_not_applicable_unsupported.cpp
+cpp14_require_concept_free_SOURCES = cpp14/require_concept_free.cpp
+cpp14_require_concept_member_SOURCES = cpp14/require_concept_member.cpp
+cpp14_require_concept_static_SOURCES = cpp14/require_concept_static.cpp
+cpp14_can_require_concept_free_SOURCES = cpp14/can_require_concept_free.cpp
+cpp14_can_require_concept_member_SOURCES = cpp14/can_require_concept_member.cpp
+cpp14_can_require_concept_static_SOURCES = cpp14/can_require_concept_static.cpp
+cpp14_can_require_concept_unsupported_SOURCES = cpp14/can_require_concept_unsupported.cpp
+cpp14_can_require_concept_not_applicable_free_SOURCES = cpp14/can_require_concept_not_applicable_free.cpp
+cpp14_can_require_concept_not_applicable_member_SOURCES = cpp14/can_require_concept_not_applicable_member.cpp
+cpp14_can_require_concept_not_applicable_static_SOURCES = cpp14/can_require_concept_not_applicable_static.cpp
+cpp14_can_require_concept_not_applicable_unsupported_SOURCES = cpp14/can_require_concept_not_applicable_unsupported.cpp
+cpp14_require_free_SOURCES = cpp14/require_free.cpp
+cpp14_require_member_SOURCES = cpp14/require_member.cpp
+cpp14_require_static_SOURCES = cpp14/require_static.cpp
+cpp14_can_require_free_SOURCES = cpp14/can_require_free.cpp
+cpp14_can_require_member_SOURCES = cpp14/can_require_member.cpp
+cpp14_can_require_static_SOURCES = cpp14/can_require_static.cpp
+cpp14_can_require_unsupported_SOURCES = cpp14/can_require_unsupported.cpp
+cpp14_can_require_not_applicable_free_SOURCES = cpp14/can_require_not_applicable_free.cpp
+cpp14_can_require_not_applicable_member_SOURCES = cpp14/can_require_not_applicable_member.cpp
+cpp14_can_require_not_applicable_static_SOURCES = cpp14/can_require_not_applicable_static.cpp
+cpp14_can_require_not_applicable_unsupported_SOURCES = cpp14/can_require_not_applicable_unsupported.cpp
+cpp14_prefer_free_prefer_SOURCES = cpp14/prefer_free_prefer.cpp
+cpp14_prefer_free_require_SOURCES = cpp14/prefer_free_require.cpp
+cpp14_prefer_member_prefer_SOURCES = cpp14/prefer_member_prefer.cpp
+cpp14_prefer_member_require_SOURCES = cpp14/prefer_member_require.cpp
+cpp14_prefer_static_SOURCES = cpp14/prefer_static.cpp
+cpp14_prefer_unsupported_SOURCES = cpp14/prefer_unsupported.cpp
+cpp14_can_prefer_free_prefer_SOURCES = cpp14/can_prefer_free_prefer.cpp
+cpp14_can_prefer_free_require_SOURCES = cpp14/can_prefer_free_require.cpp
+cpp14_can_prefer_member_prefer_SOURCES = cpp14/can_prefer_member_prefer.cpp
+cpp14_can_prefer_member_require_SOURCES = cpp14/can_prefer_member_require.cpp
+cpp14_can_prefer_static_SOURCES = cpp14/can_prefer_static.cpp
+cpp14_can_prefer_unsupported_SOURCES = cpp14/can_prefer_unsupported.cpp
+cpp14_can_prefer_not_applicable_free_prefer_SOURCES = cpp14/can_prefer_not_applicable_free_prefer.cpp
+cpp14_can_prefer_not_applicable_free_require_SOURCES = cpp14/can_prefer_not_applicable_free_require.cpp
+cpp14_can_prefer_not_applicable_member_prefer_SOURCES = cpp14/can_prefer_not_applicable_member_prefer.cpp
+cpp14_can_prefer_not_applicable_member_require_SOURCES = cpp14/can_prefer_not_applicable_member_require.cpp
+cpp14_can_prefer_not_applicable_static_SOURCES = cpp14/can_prefer_not_applicable_static.cpp
+cpp14_can_prefer_not_applicable_unsupported_SOURCES = cpp14/can_prefer_not_applicable_unsupported.cpp
+cpp14_can_prefer_not_preferable_free_prefer_SOURCES = cpp14/can_prefer_not_preferable_free_prefer.cpp
+cpp14_can_prefer_not_preferable_free_require_SOURCES = cpp14/can_prefer_not_preferable_free_require.cpp
+cpp14_can_prefer_not_preferable_member_prefer_SOURCES = cpp14/can_prefer_not_preferable_member_prefer.cpp
+cpp14_can_prefer_not_preferable_member_require_SOURCES = cpp14/can_prefer_not_preferable_member_require.cpp
+cpp14_can_prefer_not_preferable_static_SOURCES = cpp14/can_prefer_not_preferable_static.cpp
+cpp14_can_prefer_not_preferable_unsupported_SOURCES = cpp14/can_prefer_not_preferable_unsupported.cpp
+
+endif
+
+TESTS = $(check_PROGRAMS)
+
+AM_CXXFLAGS = -I$(srcdir)/../../../include
+
+MAINTAINERCLEANFILES = \
+ $(srcdir)/Makefile.in
diff --git a/3rdparty/asio/src/tests/properties/Makefile.in b/3rdparty/asio/src/tests/properties/Makefile.in
new file mode 100644
index 00000000000..fb6b500f02e
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/Makefile.in
@@ -0,0 +1,5585 @@
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = cpp03/query_free$(EXEEXT) cpp03/query_member$(EXEEXT) \
+ cpp03/query_static$(EXEEXT) cpp03/can_query_free$(EXEEXT) \
+ cpp03/can_query_member$(EXEEXT) \
+ cpp03/can_query_static$(EXEEXT) \
+ cpp03/can_query_unsupported$(EXEEXT) \
+ cpp03/can_query_not_applicable_free$(EXEEXT) \
+ cpp03/can_query_not_applicable_member$(EXEEXT) \
+ cpp03/can_query_not_applicable_static$(EXEEXT) \
+ cpp03/can_query_not_applicable_unsupported$(EXEEXT) \
+ cpp03/require_concept_free$(EXEEXT) \
+ cpp03/require_concept_member$(EXEEXT) \
+ cpp03/require_concept_static$(EXEEXT) \
+ cpp03/can_require_concept_free$(EXEEXT) \
+ cpp03/can_require_concept_member$(EXEEXT) \
+ cpp03/can_require_concept_static$(EXEEXT) \
+ cpp03/can_require_concept_unsupported$(EXEEXT) \
+ cpp03/can_require_concept_not_applicable_free$(EXEEXT) \
+ cpp03/can_require_concept_not_applicable_member$(EXEEXT) \
+ cpp03/can_require_concept_not_applicable_static$(EXEEXT) \
+ cpp03/can_require_concept_not_applicable_unsupported$(EXEEXT) \
+ cpp03/require_free$(EXEEXT) cpp03/require_member$(EXEEXT) \
+ cpp03/require_static$(EXEEXT) cpp03/can_require_free$(EXEEXT) \
+ cpp03/can_require_member$(EXEEXT) \
+ cpp03/can_require_static$(EXEEXT) \
+ cpp03/can_require_unsupported$(EXEEXT) \
+ cpp03/can_require_not_applicable_free$(EXEEXT) \
+ cpp03/can_require_not_applicable_member$(EXEEXT) \
+ cpp03/can_require_not_applicable_static$(EXEEXT) \
+ cpp03/can_require_not_applicable_unsupported$(EXEEXT) \
+ cpp03/prefer_free_prefer$(EXEEXT) \
+ cpp03/prefer_member_prefer$(EXEEXT) \
+ cpp03/prefer_free_require$(EXEEXT) \
+ cpp03/prefer_member_require$(EXEEXT) \
+ cpp03/prefer_static$(EXEEXT) cpp03/prefer_unsupported$(EXEEXT) \
+ cpp03/can_prefer_free_prefer$(EXEEXT) \
+ cpp03/can_prefer_free_require$(EXEEXT) \
+ cpp03/can_prefer_member_prefer$(EXEEXT) \
+ cpp03/can_prefer_member_require$(EXEEXT) \
+ cpp03/can_prefer_static$(EXEEXT) \
+ cpp03/can_prefer_unsupported$(EXEEXT) \
+ cpp03/can_prefer_not_applicable_free_prefer$(EXEEXT) \
+ cpp03/can_prefer_not_applicable_free_require$(EXEEXT) \
+ cpp03/can_prefer_not_applicable_member_prefer$(EXEEXT) \
+ cpp03/can_prefer_not_applicable_member_require$(EXEEXT) \
+ cpp03/can_prefer_not_applicable_static$(EXEEXT) \
+ cpp03/can_prefer_not_applicable_unsupported$(EXEEXT) \
+ cpp03/can_prefer_not_preferable_free_prefer$(EXEEXT) \
+ cpp03/can_prefer_not_preferable_free_require$(EXEEXT) \
+ cpp03/can_prefer_not_preferable_member_prefer$(EXEEXT) \
+ cpp03/can_prefer_not_preferable_member_require$(EXEEXT) \
+ cpp03/can_prefer_not_preferable_static$(EXEEXT) \
+ cpp03/can_prefer_not_preferable_unsupported$(EXEEXT) \
+ $(am__EXEEXT_1) $(am__EXEEXT_2)
+@HAVE_CXX11_TRUE@am__append_1 = \
+@HAVE_CXX11_TRUE@ cpp11/query_free \
+@HAVE_CXX11_TRUE@ cpp11/query_member \
+@HAVE_CXX11_TRUE@ cpp11/query_static \
+@HAVE_CXX11_TRUE@ cpp11/can_query_free \
+@HAVE_CXX11_TRUE@ cpp11/can_query_member \
+@HAVE_CXX11_TRUE@ cpp11/can_query_static \
+@HAVE_CXX11_TRUE@ cpp11/can_query_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_free \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_member \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_static \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_free \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_member \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_static \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_free \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_member \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_static \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_free \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_member \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_static \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/require_free \
+@HAVE_CXX11_TRUE@ cpp11/require_member \
+@HAVE_CXX11_TRUE@ cpp11/require_static \
+@HAVE_CXX11_TRUE@ cpp11/can_require_free \
+@HAVE_CXX11_TRUE@ cpp11/can_require_member \
+@HAVE_CXX11_TRUE@ cpp11/can_require_static \
+@HAVE_CXX11_TRUE@ cpp11/can_require_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_free \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_member \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_static \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/prefer_free_prefer \
+@HAVE_CXX11_TRUE@ cpp11/prefer_member_prefer \
+@HAVE_CXX11_TRUE@ cpp11/prefer_free_require \
+@HAVE_CXX11_TRUE@ cpp11/prefer_member_require \
+@HAVE_CXX11_TRUE@ cpp11/prefer_static \
+@HAVE_CXX11_TRUE@ cpp11/prefer_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_free_prefer \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_free_require \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_member_prefer \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_member_require \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_static \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_free_prefer \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_free_require \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_member_prefer \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_member_require \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_static \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_unsupported \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_free_prefer \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_free_require \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_member_prefer \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_member_require \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_static \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_unsupported
+
+@HAVE_CXX14_TRUE@am__append_2 = \
+@HAVE_CXX14_TRUE@ cpp14/query_free \
+@HAVE_CXX14_TRUE@ cpp14/query_member \
+@HAVE_CXX14_TRUE@ cpp14/query_static \
+@HAVE_CXX14_TRUE@ cpp14/can_query_free \
+@HAVE_CXX14_TRUE@ cpp14/can_query_member \
+@HAVE_CXX14_TRUE@ cpp14/can_query_static \
+@HAVE_CXX14_TRUE@ cpp14/can_query_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_free \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_member \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_static \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_free \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_member \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_static \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_free \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_member \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_static \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_free \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_member \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_static \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/require_free \
+@HAVE_CXX14_TRUE@ cpp14/require_member \
+@HAVE_CXX14_TRUE@ cpp14/require_static \
+@HAVE_CXX14_TRUE@ cpp14/can_require_free \
+@HAVE_CXX14_TRUE@ cpp14/can_require_member \
+@HAVE_CXX14_TRUE@ cpp14/can_require_static \
+@HAVE_CXX14_TRUE@ cpp14/can_require_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_free \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_member \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_static \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/prefer_free_prefer \
+@HAVE_CXX14_TRUE@ cpp14/prefer_member_prefer \
+@HAVE_CXX14_TRUE@ cpp14/prefer_free_require \
+@HAVE_CXX14_TRUE@ cpp14/prefer_member_require \
+@HAVE_CXX14_TRUE@ cpp14/prefer_static \
+@HAVE_CXX14_TRUE@ cpp14/prefer_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_free_prefer \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_free_require \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_member_prefer \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_member_require \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_static \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_free_prefer \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_free_require \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_member_prefer \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_member_require \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_static \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_unsupported \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_free_prefer \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_free_require \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_member_prefer \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_member_require \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_static \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_unsupported
+
+subdir = src/tests/properties
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+@HAVE_CXX11_TRUE@am__EXEEXT_1 = cpp11/query_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/query_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/query_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_query_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/require_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/require_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/require_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_free$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_member$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_require_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/prefer_free_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/prefer_member_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/prefer_free_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/prefer_member_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/prefer_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/prefer_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_free_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_free_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_member_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_member_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_free_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_free_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_member_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_member_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_free_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_free_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_member_prefer$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_member_require$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_static$(EXEEXT) \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_not_preferable_unsupported$(EXEEXT)
+@HAVE_CXX14_TRUE@am__EXEEXT_2 = cpp14/query_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/query_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/query_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_query_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/require_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/require_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/require_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_free$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_member$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_require_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/prefer_free_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/prefer_member_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/prefer_free_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/prefer_member_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/prefer_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/prefer_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_free_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_free_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_member_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_member_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_free_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_free_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_member_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_member_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_applicable_unsupported$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_free_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_free_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_member_prefer$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_member_require$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_static$(EXEEXT) \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_not_preferable_unsupported$(EXEEXT)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_cpp03_can_prefer_free_prefer_OBJECTS = \
+ cpp03/can_prefer_free_prefer.$(OBJEXT)
+cpp03_can_prefer_free_prefer_OBJECTS = \
+ $(am_cpp03_can_prefer_free_prefer_OBJECTS)
+cpp03_can_prefer_free_prefer_LDADD = $(LDADD)
+am_cpp03_can_prefer_free_require_OBJECTS = \
+ cpp03/can_prefer_free_require.$(OBJEXT)
+cpp03_can_prefer_free_require_OBJECTS = \
+ $(am_cpp03_can_prefer_free_require_OBJECTS)
+cpp03_can_prefer_free_require_LDADD = $(LDADD)
+am_cpp03_can_prefer_member_prefer_OBJECTS = \
+ cpp03/can_prefer_member_prefer.$(OBJEXT)
+cpp03_can_prefer_member_prefer_OBJECTS = \
+ $(am_cpp03_can_prefer_member_prefer_OBJECTS)
+cpp03_can_prefer_member_prefer_LDADD = $(LDADD)
+am_cpp03_can_prefer_member_require_OBJECTS = \
+ cpp03/can_prefer_member_require.$(OBJEXT)
+cpp03_can_prefer_member_require_OBJECTS = \
+ $(am_cpp03_can_prefer_member_require_OBJECTS)
+cpp03_can_prefer_member_require_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_applicable_free_prefer_OBJECTS = \
+ cpp03/can_prefer_not_applicable_free_prefer.$(OBJEXT)
+cpp03_can_prefer_not_applicable_free_prefer_OBJECTS = \
+ $(am_cpp03_can_prefer_not_applicable_free_prefer_OBJECTS)
+cpp03_can_prefer_not_applicable_free_prefer_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_applicable_free_require_OBJECTS = \
+ cpp03/can_prefer_not_applicable_free_require.$(OBJEXT)
+cpp03_can_prefer_not_applicable_free_require_OBJECTS = \
+ $(am_cpp03_can_prefer_not_applicable_free_require_OBJECTS)
+cpp03_can_prefer_not_applicable_free_require_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_applicable_member_prefer_OBJECTS = \
+ cpp03/can_prefer_not_applicable_member_prefer.$(OBJEXT)
+cpp03_can_prefer_not_applicable_member_prefer_OBJECTS = \
+ $(am_cpp03_can_prefer_not_applicable_member_prefer_OBJECTS)
+cpp03_can_prefer_not_applicable_member_prefer_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_applicable_member_require_OBJECTS = \
+ cpp03/can_prefer_not_applicable_member_require.$(OBJEXT)
+cpp03_can_prefer_not_applicable_member_require_OBJECTS = \
+ $(am_cpp03_can_prefer_not_applicable_member_require_OBJECTS)
+cpp03_can_prefer_not_applicable_member_require_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_applicable_static_OBJECTS = \
+ cpp03/can_prefer_not_applicable_static.$(OBJEXT)
+cpp03_can_prefer_not_applicable_static_OBJECTS = \
+ $(am_cpp03_can_prefer_not_applicable_static_OBJECTS)
+cpp03_can_prefer_not_applicable_static_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_applicable_unsupported_OBJECTS = \
+ cpp03/can_prefer_not_applicable_unsupported.$(OBJEXT)
+cpp03_can_prefer_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp03_can_prefer_not_applicable_unsupported_OBJECTS)
+cpp03_can_prefer_not_applicable_unsupported_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_preferable_free_prefer_OBJECTS = \
+ cpp03/can_prefer_not_preferable_free_prefer.$(OBJEXT)
+cpp03_can_prefer_not_preferable_free_prefer_OBJECTS = \
+ $(am_cpp03_can_prefer_not_preferable_free_prefer_OBJECTS)
+cpp03_can_prefer_not_preferable_free_prefer_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_preferable_free_require_OBJECTS = \
+ cpp03/can_prefer_not_preferable_free_require.$(OBJEXT)
+cpp03_can_prefer_not_preferable_free_require_OBJECTS = \
+ $(am_cpp03_can_prefer_not_preferable_free_require_OBJECTS)
+cpp03_can_prefer_not_preferable_free_require_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_preferable_member_prefer_OBJECTS = \
+ cpp03/can_prefer_not_preferable_member_prefer.$(OBJEXT)
+cpp03_can_prefer_not_preferable_member_prefer_OBJECTS = \
+ $(am_cpp03_can_prefer_not_preferable_member_prefer_OBJECTS)
+cpp03_can_prefer_not_preferable_member_prefer_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_preferable_member_require_OBJECTS = \
+ cpp03/can_prefer_not_preferable_member_require.$(OBJEXT)
+cpp03_can_prefer_not_preferable_member_require_OBJECTS = \
+ $(am_cpp03_can_prefer_not_preferable_member_require_OBJECTS)
+cpp03_can_prefer_not_preferable_member_require_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_preferable_static_OBJECTS = \
+ cpp03/can_prefer_not_preferable_static.$(OBJEXT)
+cpp03_can_prefer_not_preferable_static_OBJECTS = \
+ $(am_cpp03_can_prefer_not_preferable_static_OBJECTS)
+cpp03_can_prefer_not_preferable_static_LDADD = $(LDADD)
+am_cpp03_can_prefer_not_preferable_unsupported_OBJECTS = \
+ cpp03/can_prefer_not_preferable_unsupported.$(OBJEXT)
+cpp03_can_prefer_not_preferable_unsupported_OBJECTS = \
+ $(am_cpp03_can_prefer_not_preferable_unsupported_OBJECTS)
+cpp03_can_prefer_not_preferable_unsupported_LDADD = $(LDADD)
+am_cpp03_can_prefer_static_OBJECTS = \
+ cpp03/can_prefer_static.$(OBJEXT)
+cpp03_can_prefer_static_OBJECTS = \
+ $(am_cpp03_can_prefer_static_OBJECTS)
+cpp03_can_prefer_static_LDADD = $(LDADD)
+am_cpp03_can_prefer_unsupported_OBJECTS = \
+ cpp03/can_prefer_unsupported.$(OBJEXT)
+cpp03_can_prefer_unsupported_OBJECTS = \
+ $(am_cpp03_can_prefer_unsupported_OBJECTS)
+cpp03_can_prefer_unsupported_LDADD = $(LDADD)
+am_cpp03_can_query_free_OBJECTS = cpp03/can_query_free.$(OBJEXT)
+cpp03_can_query_free_OBJECTS = $(am_cpp03_can_query_free_OBJECTS)
+cpp03_can_query_free_LDADD = $(LDADD)
+am_cpp03_can_query_member_OBJECTS = cpp03/can_query_member.$(OBJEXT)
+cpp03_can_query_member_OBJECTS = $(am_cpp03_can_query_member_OBJECTS)
+cpp03_can_query_member_LDADD = $(LDADD)
+am_cpp03_can_query_not_applicable_free_OBJECTS = \
+ cpp03/can_query_not_applicable_free.$(OBJEXT)
+cpp03_can_query_not_applicable_free_OBJECTS = \
+ $(am_cpp03_can_query_not_applicable_free_OBJECTS)
+cpp03_can_query_not_applicable_free_LDADD = $(LDADD)
+am_cpp03_can_query_not_applicable_member_OBJECTS = \
+ cpp03/can_query_not_applicable_member.$(OBJEXT)
+cpp03_can_query_not_applicable_member_OBJECTS = \
+ $(am_cpp03_can_query_not_applicable_member_OBJECTS)
+cpp03_can_query_not_applicable_member_LDADD = $(LDADD)
+am_cpp03_can_query_not_applicable_static_OBJECTS = \
+ cpp03/can_query_not_applicable_static.$(OBJEXT)
+cpp03_can_query_not_applicable_static_OBJECTS = \
+ $(am_cpp03_can_query_not_applicable_static_OBJECTS)
+cpp03_can_query_not_applicable_static_LDADD = $(LDADD)
+am_cpp03_can_query_not_applicable_unsupported_OBJECTS = \
+ cpp03/can_query_not_applicable_unsupported.$(OBJEXT)
+cpp03_can_query_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp03_can_query_not_applicable_unsupported_OBJECTS)
+cpp03_can_query_not_applicable_unsupported_LDADD = $(LDADD)
+am_cpp03_can_query_static_OBJECTS = cpp03/can_query_static.$(OBJEXT)
+cpp03_can_query_static_OBJECTS = $(am_cpp03_can_query_static_OBJECTS)
+cpp03_can_query_static_LDADD = $(LDADD)
+am_cpp03_can_query_unsupported_OBJECTS = \
+ cpp03/can_query_unsupported.$(OBJEXT)
+cpp03_can_query_unsupported_OBJECTS = \
+ $(am_cpp03_can_query_unsupported_OBJECTS)
+cpp03_can_query_unsupported_LDADD = $(LDADD)
+am_cpp03_can_require_concept_free_OBJECTS = \
+ cpp03/can_require_concept_free.$(OBJEXT)
+cpp03_can_require_concept_free_OBJECTS = \
+ $(am_cpp03_can_require_concept_free_OBJECTS)
+cpp03_can_require_concept_free_LDADD = $(LDADD)
+am_cpp03_can_require_concept_member_OBJECTS = \
+ cpp03/can_require_concept_member.$(OBJEXT)
+cpp03_can_require_concept_member_OBJECTS = \
+ $(am_cpp03_can_require_concept_member_OBJECTS)
+cpp03_can_require_concept_member_LDADD = $(LDADD)
+am_cpp03_can_require_concept_not_applicable_free_OBJECTS = \
+ cpp03/can_require_concept_not_applicable_free.$(OBJEXT)
+cpp03_can_require_concept_not_applicable_free_OBJECTS = \
+ $(am_cpp03_can_require_concept_not_applicable_free_OBJECTS)
+cpp03_can_require_concept_not_applicable_free_LDADD = $(LDADD)
+am_cpp03_can_require_concept_not_applicable_member_OBJECTS = \
+ cpp03/can_require_concept_not_applicable_member.$(OBJEXT)
+cpp03_can_require_concept_not_applicable_member_OBJECTS = \
+ $(am_cpp03_can_require_concept_not_applicable_member_OBJECTS)
+cpp03_can_require_concept_not_applicable_member_LDADD = $(LDADD)
+am_cpp03_can_require_concept_not_applicable_static_OBJECTS = \
+ cpp03/can_require_concept_not_applicable_static.$(OBJEXT)
+cpp03_can_require_concept_not_applicable_static_OBJECTS = \
+ $(am_cpp03_can_require_concept_not_applicable_static_OBJECTS)
+cpp03_can_require_concept_not_applicable_static_LDADD = $(LDADD)
+am_cpp03_can_require_concept_not_applicable_unsupported_OBJECTS = cpp03/can_require_concept_not_applicable_unsupported.$(OBJEXT)
+cpp03_can_require_concept_not_applicable_unsupported_OBJECTS = $(am_cpp03_can_require_concept_not_applicable_unsupported_OBJECTS)
+cpp03_can_require_concept_not_applicable_unsupported_LDADD = $(LDADD)
+am_cpp03_can_require_concept_static_OBJECTS = \
+ cpp03/can_require_concept_static.$(OBJEXT)
+cpp03_can_require_concept_static_OBJECTS = \
+ $(am_cpp03_can_require_concept_static_OBJECTS)
+cpp03_can_require_concept_static_LDADD = $(LDADD)
+am_cpp03_can_require_concept_unsupported_OBJECTS = \
+ cpp03/can_require_concept_unsupported.$(OBJEXT)
+cpp03_can_require_concept_unsupported_OBJECTS = \
+ $(am_cpp03_can_require_concept_unsupported_OBJECTS)
+cpp03_can_require_concept_unsupported_LDADD = $(LDADD)
+am_cpp03_can_require_free_OBJECTS = cpp03/can_require_free.$(OBJEXT)
+cpp03_can_require_free_OBJECTS = $(am_cpp03_can_require_free_OBJECTS)
+cpp03_can_require_free_LDADD = $(LDADD)
+am_cpp03_can_require_member_OBJECTS = \
+ cpp03/can_require_member.$(OBJEXT)
+cpp03_can_require_member_OBJECTS = \
+ $(am_cpp03_can_require_member_OBJECTS)
+cpp03_can_require_member_LDADD = $(LDADD)
+am_cpp03_can_require_not_applicable_free_OBJECTS = \
+ cpp03/can_require_not_applicable_free.$(OBJEXT)
+cpp03_can_require_not_applicable_free_OBJECTS = \
+ $(am_cpp03_can_require_not_applicable_free_OBJECTS)
+cpp03_can_require_not_applicable_free_LDADD = $(LDADD)
+am_cpp03_can_require_not_applicable_member_OBJECTS = \
+ cpp03/can_require_not_applicable_member.$(OBJEXT)
+cpp03_can_require_not_applicable_member_OBJECTS = \
+ $(am_cpp03_can_require_not_applicable_member_OBJECTS)
+cpp03_can_require_not_applicable_member_LDADD = $(LDADD)
+am_cpp03_can_require_not_applicable_static_OBJECTS = \
+ cpp03/can_require_not_applicable_static.$(OBJEXT)
+cpp03_can_require_not_applicable_static_OBJECTS = \
+ $(am_cpp03_can_require_not_applicable_static_OBJECTS)
+cpp03_can_require_not_applicable_static_LDADD = $(LDADD)
+am_cpp03_can_require_not_applicable_unsupported_OBJECTS = \
+ cpp03/can_require_not_applicable_unsupported.$(OBJEXT)
+cpp03_can_require_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp03_can_require_not_applicable_unsupported_OBJECTS)
+cpp03_can_require_not_applicable_unsupported_LDADD = $(LDADD)
+am_cpp03_can_require_static_OBJECTS = \
+ cpp03/can_require_static.$(OBJEXT)
+cpp03_can_require_static_OBJECTS = \
+ $(am_cpp03_can_require_static_OBJECTS)
+cpp03_can_require_static_LDADD = $(LDADD)
+am_cpp03_can_require_unsupported_OBJECTS = \
+ cpp03/can_require_unsupported.$(OBJEXT)
+cpp03_can_require_unsupported_OBJECTS = \
+ $(am_cpp03_can_require_unsupported_OBJECTS)
+cpp03_can_require_unsupported_LDADD = $(LDADD)
+am_cpp03_prefer_free_prefer_OBJECTS = \
+ cpp03/prefer_free_prefer.$(OBJEXT)
+cpp03_prefer_free_prefer_OBJECTS = \
+ $(am_cpp03_prefer_free_prefer_OBJECTS)
+cpp03_prefer_free_prefer_LDADD = $(LDADD)
+am_cpp03_prefer_free_require_OBJECTS = \
+ cpp03/prefer_free_require.$(OBJEXT)
+cpp03_prefer_free_require_OBJECTS = \
+ $(am_cpp03_prefer_free_require_OBJECTS)
+cpp03_prefer_free_require_LDADD = $(LDADD)
+am_cpp03_prefer_member_prefer_OBJECTS = \
+ cpp03/prefer_member_prefer.$(OBJEXT)
+cpp03_prefer_member_prefer_OBJECTS = \
+ $(am_cpp03_prefer_member_prefer_OBJECTS)
+cpp03_prefer_member_prefer_LDADD = $(LDADD)
+am_cpp03_prefer_member_require_OBJECTS = \
+ cpp03/prefer_member_require.$(OBJEXT)
+cpp03_prefer_member_require_OBJECTS = \
+ $(am_cpp03_prefer_member_require_OBJECTS)
+cpp03_prefer_member_require_LDADD = $(LDADD)
+am_cpp03_prefer_static_OBJECTS = cpp03/prefer_static.$(OBJEXT)
+cpp03_prefer_static_OBJECTS = $(am_cpp03_prefer_static_OBJECTS)
+cpp03_prefer_static_LDADD = $(LDADD)
+am_cpp03_prefer_unsupported_OBJECTS = \
+ cpp03/prefer_unsupported.$(OBJEXT)
+cpp03_prefer_unsupported_OBJECTS = \
+ $(am_cpp03_prefer_unsupported_OBJECTS)
+cpp03_prefer_unsupported_LDADD = $(LDADD)
+am_cpp03_query_free_OBJECTS = cpp03/query_free.$(OBJEXT)
+cpp03_query_free_OBJECTS = $(am_cpp03_query_free_OBJECTS)
+cpp03_query_free_LDADD = $(LDADD)
+am_cpp03_query_member_OBJECTS = cpp03/query_member.$(OBJEXT)
+cpp03_query_member_OBJECTS = $(am_cpp03_query_member_OBJECTS)
+cpp03_query_member_LDADD = $(LDADD)
+am_cpp03_query_static_OBJECTS = cpp03/query_static.$(OBJEXT)
+cpp03_query_static_OBJECTS = $(am_cpp03_query_static_OBJECTS)
+cpp03_query_static_LDADD = $(LDADD)
+am_cpp03_require_concept_free_OBJECTS = \
+ cpp03/require_concept_free.$(OBJEXT)
+cpp03_require_concept_free_OBJECTS = \
+ $(am_cpp03_require_concept_free_OBJECTS)
+cpp03_require_concept_free_LDADD = $(LDADD)
+am_cpp03_require_concept_member_OBJECTS = \
+ cpp03/require_concept_member.$(OBJEXT)
+cpp03_require_concept_member_OBJECTS = \
+ $(am_cpp03_require_concept_member_OBJECTS)
+cpp03_require_concept_member_LDADD = $(LDADD)
+am_cpp03_require_concept_static_OBJECTS = \
+ cpp03/require_concept_static.$(OBJEXT)
+cpp03_require_concept_static_OBJECTS = \
+ $(am_cpp03_require_concept_static_OBJECTS)
+cpp03_require_concept_static_LDADD = $(LDADD)
+am_cpp03_require_free_OBJECTS = cpp03/require_free.$(OBJEXT)
+cpp03_require_free_OBJECTS = $(am_cpp03_require_free_OBJECTS)
+cpp03_require_free_LDADD = $(LDADD)
+am_cpp03_require_member_OBJECTS = cpp03/require_member.$(OBJEXT)
+cpp03_require_member_OBJECTS = $(am_cpp03_require_member_OBJECTS)
+cpp03_require_member_LDADD = $(LDADD)
+am_cpp03_require_static_OBJECTS = cpp03/require_static.$(OBJEXT)
+cpp03_require_static_OBJECTS = $(am_cpp03_require_static_OBJECTS)
+cpp03_require_static_LDADD = $(LDADD)
+am__cpp11_can_prefer_free_prefer_SOURCES_DIST = \
+ cpp11/can_prefer_free_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_free_prefer_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_free_prefer.$(OBJEXT)
+cpp11_can_prefer_free_prefer_OBJECTS = \
+ $(am_cpp11_can_prefer_free_prefer_OBJECTS)
+cpp11_can_prefer_free_prefer_LDADD = $(LDADD)
+am__cpp11_can_prefer_free_require_SOURCES_DIST = \
+ cpp11/can_prefer_free_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_free_require_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_free_require.$(OBJEXT)
+cpp11_can_prefer_free_require_OBJECTS = \
+ $(am_cpp11_can_prefer_free_require_OBJECTS)
+cpp11_can_prefer_free_require_LDADD = $(LDADD)
+am__cpp11_can_prefer_member_prefer_SOURCES_DIST = \
+ cpp11/can_prefer_member_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_member_prefer_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_member_prefer.$(OBJEXT)
+cpp11_can_prefer_member_prefer_OBJECTS = \
+ $(am_cpp11_can_prefer_member_prefer_OBJECTS)
+cpp11_can_prefer_member_prefer_LDADD = $(LDADD)
+am__cpp11_can_prefer_member_require_SOURCES_DIST = \
+ cpp11/can_prefer_member_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_member_require_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_member_require.$(OBJEXT)
+cpp11_can_prefer_member_require_OBJECTS = \
+ $(am_cpp11_can_prefer_member_require_OBJECTS)
+cpp11_can_prefer_member_require_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_applicable_free_prefer_SOURCES_DIST = \
+ cpp11/can_prefer_not_applicable_free_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_applicable_free_prefer_OBJECTS = cpp11/can_prefer_not_applicable_free_prefer.$(OBJEXT)
+cpp11_can_prefer_not_applicable_free_prefer_OBJECTS = \
+ $(am_cpp11_can_prefer_not_applicable_free_prefer_OBJECTS)
+cpp11_can_prefer_not_applicable_free_prefer_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_applicable_free_require_SOURCES_DIST = \
+ cpp11/can_prefer_not_applicable_free_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_applicable_free_require_OBJECTS = cpp11/can_prefer_not_applicable_free_require.$(OBJEXT)
+cpp11_can_prefer_not_applicable_free_require_OBJECTS = \
+ $(am_cpp11_can_prefer_not_applicable_free_require_OBJECTS)
+cpp11_can_prefer_not_applicable_free_require_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_applicable_member_prefer_SOURCES_DIST = \
+ cpp11/can_prefer_not_applicable_member_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_applicable_member_prefer_OBJECTS = cpp11/can_prefer_not_applicable_member_prefer.$(OBJEXT)
+cpp11_can_prefer_not_applicable_member_prefer_OBJECTS = \
+ $(am_cpp11_can_prefer_not_applicable_member_prefer_OBJECTS)
+cpp11_can_prefer_not_applicable_member_prefer_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_applicable_member_require_SOURCES_DIST = \
+ cpp11/can_prefer_not_applicable_member_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_applicable_member_require_OBJECTS = cpp11/can_prefer_not_applicable_member_require.$(OBJEXT)
+cpp11_can_prefer_not_applicable_member_require_OBJECTS = \
+ $(am_cpp11_can_prefer_not_applicable_member_require_OBJECTS)
+cpp11_can_prefer_not_applicable_member_require_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_applicable_static_SOURCES_DIST = \
+ cpp11/can_prefer_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_applicable_static_OBJECTS = cpp11/can_prefer_not_applicable_static.$(OBJEXT)
+cpp11_can_prefer_not_applicable_static_OBJECTS = \
+ $(am_cpp11_can_prefer_not_applicable_static_OBJECTS)
+cpp11_can_prefer_not_applicable_static_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_applicable_unsupported_SOURCES_DIST = \
+ cpp11/can_prefer_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_applicable_unsupported_OBJECTS = cpp11/can_prefer_not_applicable_unsupported.$(OBJEXT)
+cpp11_can_prefer_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp11_can_prefer_not_applicable_unsupported_OBJECTS)
+cpp11_can_prefer_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_preferable_free_prefer_SOURCES_DIST = \
+ cpp11/can_prefer_not_preferable_free_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_preferable_free_prefer_OBJECTS = cpp11/can_prefer_not_preferable_free_prefer.$(OBJEXT)
+cpp11_can_prefer_not_preferable_free_prefer_OBJECTS = \
+ $(am_cpp11_can_prefer_not_preferable_free_prefer_OBJECTS)
+cpp11_can_prefer_not_preferable_free_prefer_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_preferable_free_require_SOURCES_DIST = \
+ cpp11/can_prefer_not_preferable_free_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_preferable_free_require_OBJECTS = cpp11/can_prefer_not_preferable_free_require.$(OBJEXT)
+cpp11_can_prefer_not_preferable_free_require_OBJECTS = \
+ $(am_cpp11_can_prefer_not_preferable_free_require_OBJECTS)
+cpp11_can_prefer_not_preferable_free_require_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_preferable_member_prefer_SOURCES_DIST = \
+ cpp11/can_prefer_not_preferable_member_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_preferable_member_prefer_OBJECTS = cpp11/can_prefer_not_preferable_member_prefer.$(OBJEXT)
+cpp11_can_prefer_not_preferable_member_prefer_OBJECTS = \
+ $(am_cpp11_can_prefer_not_preferable_member_prefer_OBJECTS)
+cpp11_can_prefer_not_preferable_member_prefer_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_preferable_member_require_SOURCES_DIST = \
+ cpp11/can_prefer_not_preferable_member_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_preferable_member_require_OBJECTS = cpp11/can_prefer_not_preferable_member_require.$(OBJEXT)
+cpp11_can_prefer_not_preferable_member_require_OBJECTS = \
+ $(am_cpp11_can_prefer_not_preferable_member_require_OBJECTS)
+cpp11_can_prefer_not_preferable_member_require_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_preferable_static_SOURCES_DIST = \
+ cpp11/can_prefer_not_preferable_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_preferable_static_OBJECTS = cpp11/can_prefer_not_preferable_static.$(OBJEXT)
+cpp11_can_prefer_not_preferable_static_OBJECTS = \
+ $(am_cpp11_can_prefer_not_preferable_static_OBJECTS)
+cpp11_can_prefer_not_preferable_static_LDADD = $(LDADD)
+am__cpp11_can_prefer_not_preferable_unsupported_SOURCES_DIST = \
+ cpp11/can_prefer_not_preferable_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_not_preferable_unsupported_OBJECTS = cpp11/can_prefer_not_preferable_unsupported.$(OBJEXT)
+cpp11_can_prefer_not_preferable_unsupported_OBJECTS = \
+ $(am_cpp11_can_prefer_not_preferable_unsupported_OBJECTS)
+cpp11_can_prefer_not_preferable_unsupported_LDADD = $(LDADD)
+am__cpp11_can_prefer_static_SOURCES_DIST = \
+ cpp11/can_prefer_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_static.$(OBJEXT)
+cpp11_can_prefer_static_OBJECTS = \
+ $(am_cpp11_can_prefer_static_OBJECTS)
+cpp11_can_prefer_static_LDADD = $(LDADD)
+am__cpp11_can_prefer_unsupported_SOURCES_DIST = \
+ cpp11/can_prefer_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_prefer_unsupported_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_prefer_unsupported.$(OBJEXT)
+cpp11_can_prefer_unsupported_OBJECTS = \
+ $(am_cpp11_can_prefer_unsupported_OBJECTS)
+cpp11_can_prefer_unsupported_LDADD = $(LDADD)
+am__cpp11_can_query_free_SOURCES_DIST = cpp11/can_query_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_free_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_query_free.$(OBJEXT)
+cpp11_can_query_free_OBJECTS = $(am_cpp11_can_query_free_OBJECTS)
+cpp11_can_query_free_LDADD = $(LDADD)
+am__cpp11_can_query_member_SOURCES_DIST = cpp11/can_query_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_member_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_query_member.$(OBJEXT)
+cpp11_can_query_member_OBJECTS = $(am_cpp11_can_query_member_OBJECTS)
+cpp11_can_query_member_LDADD = $(LDADD)
+am__cpp11_can_query_not_applicable_free_SOURCES_DIST = \
+ cpp11/can_query_not_applicable_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_not_applicable_free_OBJECTS = cpp11/can_query_not_applicable_free.$(OBJEXT)
+cpp11_can_query_not_applicable_free_OBJECTS = \
+ $(am_cpp11_can_query_not_applicable_free_OBJECTS)
+cpp11_can_query_not_applicable_free_LDADD = $(LDADD)
+am__cpp11_can_query_not_applicable_member_SOURCES_DIST = \
+ cpp11/can_query_not_applicable_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_not_applicable_member_OBJECTS = cpp11/can_query_not_applicable_member.$(OBJEXT)
+cpp11_can_query_not_applicable_member_OBJECTS = \
+ $(am_cpp11_can_query_not_applicable_member_OBJECTS)
+cpp11_can_query_not_applicable_member_LDADD = $(LDADD)
+am__cpp11_can_query_not_applicable_static_SOURCES_DIST = \
+ cpp11/can_query_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_not_applicable_static_OBJECTS = cpp11/can_query_not_applicable_static.$(OBJEXT)
+cpp11_can_query_not_applicable_static_OBJECTS = \
+ $(am_cpp11_can_query_not_applicable_static_OBJECTS)
+cpp11_can_query_not_applicable_static_LDADD = $(LDADD)
+am__cpp11_can_query_not_applicable_unsupported_SOURCES_DIST = \
+ cpp11/can_query_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_not_applicable_unsupported_OBJECTS = cpp11/can_query_not_applicable_unsupported.$(OBJEXT)
+cpp11_can_query_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp11_can_query_not_applicable_unsupported_OBJECTS)
+cpp11_can_query_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp11_can_query_static_SOURCES_DIST = cpp11/can_query_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_query_static.$(OBJEXT)
+cpp11_can_query_static_OBJECTS = $(am_cpp11_can_query_static_OBJECTS)
+cpp11_can_query_static_LDADD = $(LDADD)
+am__cpp11_can_query_unsupported_SOURCES_DIST = \
+ cpp11/can_query_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_query_unsupported_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_query_unsupported.$(OBJEXT)
+cpp11_can_query_unsupported_OBJECTS = \
+ $(am_cpp11_can_query_unsupported_OBJECTS)
+cpp11_can_query_unsupported_LDADD = $(LDADD)
+am__cpp11_can_require_concept_free_SOURCES_DIST = \
+ cpp11/can_require_concept_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_free_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_free.$(OBJEXT)
+cpp11_can_require_concept_free_OBJECTS = \
+ $(am_cpp11_can_require_concept_free_OBJECTS)
+cpp11_can_require_concept_free_LDADD = $(LDADD)
+am__cpp11_can_require_concept_member_SOURCES_DIST = \
+ cpp11/can_require_concept_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_member_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_member.$(OBJEXT)
+cpp11_can_require_concept_member_OBJECTS = \
+ $(am_cpp11_can_require_concept_member_OBJECTS)
+cpp11_can_require_concept_member_LDADD = $(LDADD)
+am__cpp11_can_require_concept_not_applicable_free_SOURCES_DIST = \
+ cpp11/can_require_concept_not_applicable_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_not_applicable_free_OBJECTS = cpp11/can_require_concept_not_applicable_free.$(OBJEXT)
+cpp11_can_require_concept_not_applicable_free_OBJECTS = \
+ $(am_cpp11_can_require_concept_not_applicable_free_OBJECTS)
+cpp11_can_require_concept_not_applicable_free_LDADD = $(LDADD)
+am__cpp11_can_require_concept_not_applicable_member_SOURCES_DIST = \
+ cpp11/can_require_concept_not_applicable_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_not_applicable_member_OBJECTS = cpp11/can_require_concept_not_applicable_member.$(OBJEXT)
+cpp11_can_require_concept_not_applicable_member_OBJECTS = \
+ $(am_cpp11_can_require_concept_not_applicable_member_OBJECTS)
+cpp11_can_require_concept_not_applicable_member_LDADD = $(LDADD)
+am__cpp11_can_require_concept_not_applicable_static_SOURCES_DIST = \
+ cpp11/can_require_concept_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_not_applicable_static_OBJECTS = cpp11/can_require_concept_not_applicable_static.$(OBJEXT)
+cpp11_can_require_concept_not_applicable_static_OBJECTS = \
+ $(am_cpp11_can_require_concept_not_applicable_static_OBJECTS)
+cpp11_can_require_concept_not_applicable_static_LDADD = $(LDADD)
+am__cpp11_can_require_concept_not_applicable_unsupported_SOURCES_DIST = \
+ cpp11/can_require_concept_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_not_applicable_unsupported_OBJECTS = cpp11/can_require_concept_not_applicable_unsupported.$(OBJEXT)
+cpp11_can_require_concept_not_applicable_unsupported_OBJECTS = $(am_cpp11_can_require_concept_not_applicable_unsupported_OBJECTS)
+cpp11_can_require_concept_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp11_can_require_concept_static_SOURCES_DIST = \
+ cpp11/can_require_concept_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_require_concept_static.$(OBJEXT)
+cpp11_can_require_concept_static_OBJECTS = \
+ $(am_cpp11_can_require_concept_static_OBJECTS)
+cpp11_can_require_concept_static_LDADD = $(LDADD)
+am__cpp11_can_require_concept_unsupported_SOURCES_DIST = \
+ cpp11/can_require_concept_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_concept_unsupported_OBJECTS = cpp11/can_require_concept_unsupported.$(OBJEXT)
+cpp11_can_require_concept_unsupported_OBJECTS = \
+ $(am_cpp11_can_require_concept_unsupported_OBJECTS)
+cpp11_can_require_concept_unsupported_LDADD = $(LDADD)
+am__cpp11_can_require_free_SOURCES_DIST = cpp11/can_require_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_free_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_require_free.$(OBJEXT)
+cpp11_can_require_free_OBJECTS = $(am_cpp11_can_require_free_OBJECTS)
+cpp11_can_require_free_LDADD = $(LDADD)
+am__cpp11_can_require_member_SOURCES_DIST = \
+ cpp11/can_require_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_member_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_require_member.$(OBJEXT)
+cpp11_can_require_member_OBJECTS = \
+ $(am_cpp11_can_require_member_OBJECTS)
+cpp11_can_require_member_LDADD = $(LDADD)
+am__cpp11_can_require_not_applicable_free_SOURCES_DIST = \
+ cpp11/can_require_not_applicable_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_not_applicable_free_OBJECTS = cpp11/can_require_not_applicable_free.$(OBJEXT)
+cpp11_can_require_not_applicable_free_OBJECTS = \
+ $(am_cpp11_can_require_not_applicable_free_OBJECTS)
+cpp11_can_require_not_applicable_free_LDADD = $(LDADD)
+am__cpp11_can_require_not_applicable_member_SOURCES_DIST = \
+ cpp11/can_require_not_applicable_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_not_applicable_member_OBJECTS = cpp11/can_require_not_applicable_member.$(OBJEXT)
+cpp11_can_require_not_applicable_member_OBJECTS = \
+ $(am_cpp11_can_require_not_applicable_member_OBJECTS)
+cpp11_can_require_not_applicable_member_LDADD = $(LDADD)
+am__cpp11_can_require_not_applicable_static_SOURCES_DIST = \
+ cpp11/can_require_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_not_applicable_static_OBJECTS = cpp11/can_require_not_applicable_static.$(OBJEXT)
+cpp11_can_require_not_applicable_static_OBJECTS = \
+ $(am_cpp11_can_require_not_applicable_static_OBJECTS)
+cpp11_can_require_not_applicable_static_LDADD = $(LDADD)
+am__cpp11_can_require_not_applicable_unsupported_SOURCES_DIST = \
+ cpp11/can_require_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_not_applicable_unsupported_OBJECTS = cpp11/can_require_not_applicable_unsupported.$(OBJEXT)
+cpp11_can_require_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp11_can_require_not_applicable_unsupported_OBJECTS)
+cpp11_can_require_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp11_can_require_static_SOURCES_DIST = \
+ cpp11/can_require_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_require_static.$(OBJEXT)
+cpp11_can_require_static_OBJECTS = \
+ $(am_cpp11_can_require_static_OBJECTS)
+cpp11_can_require_static_LDADD = $(LDADD)
+am__cpp11_can_require_unsupported_SOURCES_DIST = \
+ cpp11/can_require_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_can_require_unsupported_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/can_require_unsupported.$(OBJEXT)
+cpp11_can_require_unsupported_OBJECTS = \
+ $(am_cpp11_can_require_unsupported_OBJECTS)
+cpp11_can_require_unsupported_LDADD = $(LDADD)
+am__cpp11_prefer_free_prefer_SOURCES_DIST = \
+ cpp11/prefer_free_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_prefer_free_prefer_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/prefer_free_prefer.$(OBJEXT)
+cpp11_prefer_free_prefer_OBJECTS = \
+ $(am_cpp11_prefer_free_prefer_OBJECTS)
+cpp11_prefer_free_prefer_LDADD = $(LDADD)
+am__cpp11_prefer_free_require_SOURCES_DIST = \
+ cpp11/prefer_free_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_prefer_free_require_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/prefer_free_require.$(OBJEXT)
+cpp11_prefer_free_require_OBJECTS = \
+ $(am_cpp11_prefer_free_require_OBJECTS)
+cpp11_prefer_free_require_LDADD = $(LDADD)
+am__cpp11_prefer_member_prefer_SOURCES_DIST = \
+ cpp11/prefer_member_prefer.cpp
+@HAVE_CXX11_TRUE@am_cpp11_prefer_member_prefer_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/prefer_member_prefer.$(OBJEXT)
+cpp11_prefer_member_prefer_OBJECTS = \
+ $(am_cpp11_prefer_member_prefer_OBJECTS)
+cpp11_prefer_member_prefer_LDADD = $(LDADD)
+am__cpp11_prefer_member_require_SOURCES_DIST = \
+ cpp11/prefer_member_require.cpp
+@HAVE_CXX11_TRUE@am_cpp11_prefer_member_require_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/prefer_member_require.$(OBJEXT)
+cpp11_prefer_member_require_OBJECTS = \
+ $(am_cpp11_prefer_member_require_OBJECTS)
+cpp11_prefer_member_require_LDADD = $(LDADD)
+am__cpp11_prefer_static_SOURCES_DIST = cpp11/prefer_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_prefer_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/prefer_static.$(OBJEXT)
+cpp11_prefer_static_OBJECTS = $(am_cpp11_prefer_static_OBJECTS)
+cpp11_prefer_static_LDADD = $(LDADD)
+am__cpp11_prefer_unsupported_SOURCES_DIST = \
+ cpp11/prefer_unsupported.cpp
+@HAVE_CXX11_TRUE@am_cpp11_prefer_unsupported_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/prefer_unsupported.$(OBJEXT)
+cpp11_prefer_unsupported_OBJECTS = \
+ $(am_cpp11_prefer_unsupported_OBJECTS)
+cpp11_prefer_unsupported_LDADD = $(LDADD)
+am__cpp11_query_free_SOURCES_DIST = cpp11/query_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_query_free_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/query_free.$(OBJEXT)
+cpp11_query_free_OBJECTS = $(am_cpp11_query_free_OBJECTS)
+cpp11_query_free_LDADD = $(LDADD)
+am__cpp11_query_member_SOURCES_DIST = cpp11/query_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_query_member_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/query_member.$(OBJEXT)
+cpp11_query_member_OBJECTS = $(am_cpp11_query_member_OBJECTS)
+cpp11_query_member_LDADD = $(LDADD)
+am__cpp11_query_static_SOURCES_DIST = cpp11/query_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_query_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/query_static.$(OBJEXT)
+cpp11_query_static_OBJECTS = $(am_cpp11_query_static_OBJECTS)
+cpp11_query_static_LDADD = $(LDADD)
+am__cpp11_require_concept_free_SOURCES_DIST = \
+ cpp11/require_concept_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_require_concept_free_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_free.$(OBJEXT)
+cpp11_require_concept_free_OBJECTS = \
+ $(am_cpp11_require_concept_free_OBJECTS)
+cpp11_require_concept_free_LDADD = $(LDADD)
+am__cpp11_require_concept_member_SOURCES_DIST = \
+ cpp11/require_concept_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_require_concept_member_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_member.$(OBJEXT)
+cpp11_require_concept_member_OBJECTS = \
+ $(am_cpp11_require_concept_member_OBJECTS)
+cpp11_require_concept_member_LDADD = $(LDADD)
+am__cpp11_require_concept_static_SOURCES_DIST = \
+ cpp11/require_concept_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_require_concept_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/require_concept_static.$(OBJEXT)
+cpp11_require_concept_static_OBJECTS = \
+ $(am_cpp11_require_concept_static_OBJECTS)
+cpp11_require_concept_static_LDADD = $(LDADD)
+am__cpp11_require_free_SOURCES_DIST = cpp11/require_free.cpp
+@HAVE_CXX11_TRUE@am_cpp11_require_free_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/require_free.$(OBJEXT)
+cpp11_require_free_OBJECTS = $(am_cpp11_require_free_OBJECTS)
+cpp11_require_free_LDADD = $(LDADD)
+am__cpp11_require_member_SOURCES_DIST = cpp11/require_member.cpp
+@HAVE_CXX11_TRUE@am_cpp11_require_member_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/require_member.$(OBJEXT)
+cpp11_require_member_OBJECTS = $(am_cpp11_require_member_OBJECTS)
+cpp11_require_member_LDADD = $(LDADD)
+am__cpp11_require_static_SOURCES_DIST = cpp11/require_static.cpp
+@HAVE_CXX11_TRUE@am_cpp11_require_static_OBJECTS = \
+@HAVE_CXX11_TRUE@ cpp11/require_static.$(OBJEXT)
+cpp11_require_static_OBJECTS = $(am_cpp11_require_static_OBJECTS)
+cpp11_require_static_LDADD = $(LDADD)
+am__cpp14_can_prefer_free_prefer_SOURCES_DIST = \
+ cpp14/can_prefer_free_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_free_prefer_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_free_prefer.$(OBJEXT)
+cpp14_can_prefer_free_prefer_OBJECTS = \
+ $(am_cpp14_can_prefer_free_prefer_OBJECTS)
+cpp14_can_prefer_free_prefer_LDADD = $(LDADD)
+am__cpp14_can_prefer_free_require_SOURCES_DIST = \
+ cpp14/can_prefer_free_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_free_require_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_free_require.$(OBJEXT)
+cpp14_can_prefer_free_require_OBJECTS = \
+ $(am_cpp14_can_prefer_free_require_OBJECTS)
+cpp14_can_prefer_free_require_LDADD = $(LDADD)
+am__cpp14_can_prefer_member_prefer_SOURCES_DIST = \
+ cpp14/can_prefer_member_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_member_prefer_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_member_prefer.$(OBJEXT)
+cpp14_can_prefer_member_prefer_OBJECTS = \
+ $(am_cpp14_can_prefer_member_prefer_OBJECTS)
+cpp14_can_prefer_member_prefer_LDADD = $(LDADD)
+am__cpp14_can_prefer_member_require_SOURCES_DIST = \
+ cpp14/can_prefer_member_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_member_require_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_member_require.$(OBJEXT)
+cpp14_can_prefer_member_require_OBJECTS = \
+ $(am_cpp14_can_prefer_member_require_OBJECTS)
+cpp14_can_prefer_member_require_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_applicable_free_prefer_SOURCES_DIST = \
+ cpp14/can_prefer_not_applicable_free_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_applicable_free_prefer_OBJECTS = cpp14/can_prefer_not_applicable_free_prefer.$(OBJEXT)
+cpp14_can_prefer_not_applicable_free_prefer_OBJECTS = \
+ $(am_cpp14_can_prefer_not_applicable_free_prefer_OBJECTS)
+cpp14_can_prefer_not_applicable_free_prefer_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_applicable_free_require_SOURCES_DIST = \
+ cpp14/can_prefer_not_applicable_free_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_applicable_free_require_OBJECTS = cpp14/can_prefer_not_applicable_free_require.$(OBJEXT)
+cpp14_can_prefer_not_applicable_free_require_OBJECTS = \
+ $(am_cpp14_can_prefer_not_applicable_free_require_OBJECTS)
+cpp14_can_prefer_not_applicable_free_require_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_applicable_member_prefer_SOURCES_DIST = \
+ cpp14/can_prefer_not_applicable_member_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_applicable_member_prefer_OBJECTS = cpp14/can_prefer_not_applicable_member_prefer.$(OBJEXT)
+cpp14_can_prefer_not_applicable_member_prefer_OBJECTS = \
+ $(am_cpp14_can_prefer_not_applicable_member_prefer_OBJECTS)
+cpp14_can_prefer_not_applicable_member_prefer_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_applicable_member_require_SOURCES_DIST = \
+ cpp14/can_prefer_not_applicable_member_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_applicable_member_require_OBJECTS = cpp14/can_prefer_not_applicable_member_require.$(OBJEXT)
+cpp14_can_prefer_not_applicable_member_require_OBJECTS = \
+ $(am_cpp14_can_prefer_not_applicable_member_require_OBJECTS)
+cpp14_can_prefer_not_applicable_member_require_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_applicable_static_SOURCES_DIST = \
+ cpp14/can_prefer_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_applicable_static_OBJECTS = cpp14/can_prefer_not_applicable_static.$(OBJEXT)
+cpp14_can_prefer_not_applicable_static_OBJECTS = \
+ $(am_cpp14_can_prefer_not_applicable_static_OBJECTS)
+cpp14_can_prefer_not_applicable_static_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_applicable_unsupported_SOURCES_DIST = \
+ cpp14/can_prefer_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_applicable_unsupported_OBJECTS = cpp14/can_prefer_not_applicable_unsupported.$(OBJEXT)
+cpp14_can_prefer_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp14_can_prefer_not_applicable_unsupported_OBJECTS)
+cpp14_can_prefer_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_preferable_free_prefer_SOURCES_DIST = \
+ cpp14/can_prefer_not_preferable_free_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_preferable_free_prefer_OBJECTS = cpp14/can_prefer_not_preferable_free_prefer.$(OBJEXT)
+cpp14_can_prefer_not_preferable_free_prefer_OBJECTS = \
+ $(am_cpp14_can_prefer_not_preferable_free_prefer_OBJECTS)
+cpp14_can_prefer_not_preferable_free_prefer_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_preferable_free_require_SOURCES_DIST = \
+ cpp14/can_prefer_not_preferable_free_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_preferable_free_require_OBJECTS = cpp14/can_prefer_not_preferable_free_require.$(OBJEXT)
+cpp14_can_prefer_not_preferable_free_require_OBJECTS = \
+ $(am_cpp14_can_prefer_not_preferable_free_require_OBJECTS)
+cpp14_can_prefer_not_preferable_free_require_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_preferable_member_prefer_SOURCES_DIST = \
+ cpp14/can_prefer_not_preferable_member_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_preferable_member_prefer_OBJECTS = cpp14/can_prefer_not_preferable_member_prefer.$(OBJEXT)
+cpp14_can_prefer_not_preferable_member_prefer_OBJECTS = \
+ $(am_cpp14_can_prefer_not_preferable_member_prefer_OBJECTS)
+cpp14_can_prefer_not_preferable_member_prefer_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_preferable_member_require_SOURCES_DIST = \
+ cpp14/can_prefer_not_preferable_member_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_preferable_member_require_OBJECTS = cpp14/can_prefer_not_preferable_member_require.$(OBJEXT)
+cpp14_can_prefer_not_preferable_member_require_OBJECTS = \
+ $(am_cpp14_can_prefer_not_preferable_member_require_OBJECTS)
+cpp14_can_prefer_not_preferable_member_require_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_preferable_static_SOURCES_DIST = \
+ cpp14/can_prefer_not_preferable_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_preferable_static_OBJECTS = cpp14/can_prefer_not_preferable_static.$(OBJEXT)
+cpp14_can_prefer_not_preferable_static_OBJECTS = \
+ $(am_cpp14_can_prefer_not_preferable_static_OBJECTS)
+cpp14_can_prefer_not_preferable_static_LDADD = $(LDADD)
+am__cpp14_can_prefer_not_preferable_unsupported_SOURCES_DIST = \
+ cpp14/can_prefer_not_preferable_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_not_preferable_unsupported_OBJECTS = cpp14/can_prefer_not_preferable_unsupported.$(OBJEXT)
+cpp14_can_prefer_not_preferable_unsupported_OBJECTS = \
+ $(am_cpp14_can_prefer_not_preferable_unsupported_OBJECTS)
+cpp14_can_prefer_not_preferable_unsupported_LDADD = $(LDADD)
+am__cpp14_can_prefer_static_SOURCES_DIST = \
+ cpp14/can_prefer_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_static.$(OBJEXT)
+cpp14_can_prefer_static_OBJECTS = \
+ $(am_cpp14_can_prefer_static_OBJECTS)
+cpp14_can_prefer_static_LDADD = $(LDADD)
+am__cpp14_can_prefer_unsupported_SOURCES_DIST = \
+ cpp14/can_prefer_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_prefer_unsupported_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_prefer_unsupported.$(OBJEXT)
+cpp14_can_prefer_unsupported_OBJECTS = \
+ $(am_cpp14_can_prefer_unsupported_OBJECTS)
+cpp14_can_prefer_unsupported_LDADD = $(LDADD)
+am__cpp14_can_query_free_SOURCES_DIST = cpp14/can_query_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_free_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_query_free.$(OBJEXT)
+cpp14_can_query_free_OBJECTS = $(am_cpp14_can_query_free_OBJECTS)
+cpp14_can_query_free_LDADD = $(LDADD)
+am__cpp14_can_query_member_SOURCES_DIST = cpp14/can_query_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_member_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_query_member.$(OBJEXT)
+cpp14_can_query_member_OBJECTS = $(am_cpp14_can_query_member_OBJECTS)
+cpp14_can_query_member_LDADD = $(LDADD)
+am__cpp14_can_query_not_applicable_free_SOURCES_DIST = \
+ cpp14/can_query_not_applicable_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_not_applicable_free_OBJECTS = cpp14/can_query_not_applicable_free.$(OBJEXT)
+cpp14_can_query_not_applicable_free_OBJECTS = \
+ $(am_cpp14_can_query_not_applicable_free_OBJECTS)
+cpp14_can_query_not_applicable_free_LDADD = $(LDADD)
+am__cpp14_can_query_not_applicable_member_SOURCES_DIST = \
+ cpp14/can_query_not_applicable_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_not_applicable_member_OBJECTS = cpp14/can_query_not_applicable_member.$(OBJEXT)
+cpp14_can_query_not_applicable_member_OBJECTS = \
+ $(am_cpp14_can_query_not_applicable_member_OBJECTS)
+cpp14_can_query_not_applicable_member_LDADD = $(LDADD)
+am__cpp14_can_query_not_applicable_static_SOURCES_DIST = \
+ cpp14/can_query_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_not_applicable_static_OBJECTS = cpp14/can_query_not_applicable_static.$(OBJEXT)
+cpp14_can_query_not_applicable_static_OBJECTS = \
+ $(am_cpp14_can_query_not_applicable_static_OBJECTS)
+cpp14_can_query_not_applicable_static_LDADD = $(LDADD)
+am__cpp14_can_query_not_applicable_unsupported_SOURCES_DIST = \
+ cpp14/can_query_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_not_applicable_unsupported_OBJECTS = cpp14/can_query_not_applicable_unsupported.$(OBJEXT)
+cpp14_can_query_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp14_can_query_not_applicable_unsupported_OBJECTS)
+cpp14_can_query_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp14_can_query_static_SOURCES_DIST = cpp14/can_query_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_query_static.$(OBJEXT)
+cpp14_can_query_static_OBJECTS = $(am_cpp14_can_query_static_OBJECTS)
+cpp14_can_query_static_LDADD = $(LDADD)
+am__cpp14_can_query_unsupported_SOURCES_DIST = \
+ cpp14/can_query_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_query_unsupported_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_query_unsupported.$(OBJEXT)
+cpp14_can_query_unsupported_OBJECTS = \
+ $(am_cpp14_can_query_unsupported_OBJECTS)
+cpp14_can_query_unsupported_LDADD = $(LDADD)
+am__cpp14_can_require_concept_free_SOURCES_DIST = \
+ cpp14/can_require_concept_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_free_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_free.$(OBJEXT)
+cpp14_can_require_concept_free_OBJECTS = \
+ $(am_cpp14_can_require_concept_free_OBJECTS)
+cpp14_can_require_concept_free_LDADD = $(LDADD)
+am__cpp14_can_require_concept_member_SOURCES_DIST = \
+ cpp14/can_require_concept_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_member_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_member.$(OBJEXT)
+cpp14_can_require_concept_member_OBJECTS = \
+ $(am_cpp14_can_require_concept_member_OBJECTS)
+cpp14_can_require_concept_member_LDADD = $(LDADD)
+am__cpp14_can_require_concept_not_applicable_free_SOURCES_DIST = \
+ cpp14/can_require_concept_not_applicable_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_not_applicable_free_OBJECTS = cpp14/can_require_concept_not_applicable_free.$(OBJEXT)
+cpp14_can_require_concept_not_applicable_free_OBJECTS = \
+ $(am_cpp14_can_require_concept_not_applicable_free_OBJECTS)
+cpp14_can_require_concept_not_applicable_free_LDADD = $(LDADD)
+am__cpp14_can_require_concept_not_applicable_member_SOURCES_DIST = \
+ cpp14/can_require_concept_not_applicable_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_not_applicable_member_OBJECTS = cpp14/can_require_concept_not_applicable_member.$(OBJEXT)
+cpp14_can_require_concept_not_applicable_member_OBJECTS = \
+ $(am_cpp14_can_require_concept_not_applicable_member_OBJECTS)
+cpp14_can_require_concept_not_applicable_member_LDADD = $(LDADD)
+am__cpp14_can_require_concept_not_applicable_static_SOURCES_DIST = \
+ cpp14/can_require_concept_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_not_applicable_static_OBJECTS = cpp14/can_require_concept_not_applicable_static.$(OBJEXT)
+cpp14_can_require_concept_not_applicable_static_OBJECTS = \
+ $(am_cpp14_can_require_concept_not_applicable_static_OBJECTS)
+cpp14_can_require_concept_not_applicable_static_LDADD = $(LDADD)
+am__cpp14_can_require_concept_not_applicable_unsupported_SOURCES_DIST = \
+ cpp14/can_require_concept_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_not_applicable_unsupported_OBJECTS = cpp14/can_require_concept_not_applicable_unsupported.$(OBJEXT)
+cpp14_can_require_concept_not_applicable_unsupported_OBJECTS = $(am_cpp14_can_require_concept_not_applicable_unsupported_OBJECTS)
+cpp14_can_require_concept_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp14_can_require_concept_static_SOURCES_DIST = \
+ cpp14/can_require_concept_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_require_concept_static.$(OBJEXT)
+cpp14_can_require_concept_static_OBJECTS = \
+ $(am_cpp14_can_require_concept_static_OBJECTS)
+cpp14_can_require_concept_static_LDADD = $(LDADD)
+am__cpp14_can_require_concept_unsupported_SOURCES_DIST = \
+ cpp14/can_require_concept_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_concept_unsupported_OBJECTS = cpp14/can_require_concept_unsupported.$(OBJEXT)
+cpp14_can_require_concept_unsupported_OBJECTS = \
+ $(am_cpp14_can_require_concept_unsupported_OBJECTS)
+cpp14_can_require_concept_unsupported_LDADD = $(LDADD)
+am__cpp14_can_require_free_SOURCES_DIST = cpp14/can_require_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_free_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_require_free.$(OBJEXT)
+cpp14_can_require_free_OBJECTS = $(am_cpp14_can_require_free_OBJECTS)
+cpp14_can_require_free_LDADD = $(LDADD)
+am__cpp14_can_require_member_SOURCES_DIST = \
+ cpp14/can_require_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_member_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_require_member.$(OBJEXT)
+cpp14_can_require_member_OBJECTS = \
+ $(am_cpp14_can_require_member_OBJECTS)
+cpp14_can_require_member_LDADD = $(LDADD)
+am__cpp14_can_require_not_applicable_free_SOURCES_DIST = \
+ cpp14/can_require_not_applicable_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_not_applicable_free_OBJECTS = cpp14/can_require_not_applicable_free.$(OBJEXT)
+cpp14_can_require_not_applicable_free_OBJECTS = \
+ $(am_cpp14_can_require_not_applicable_free_OBJECTS)
+cpp14_can_require_not_applicable_free_LDADD = $(LDADD)
+am__cpp14_can_require_not_applicable_member_SOURCES_DIST = \
+ cpp14/can_require_not_applicable_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_not_applicable_member_OBJECTS = cpp14/can_require_not_applicable_member.$(OBJEXT)
+cpp14_can_require_not_applicable_member_OBJECTS = \
+ $(am_cpp14_can_require_not_applicable_member_OBJECTS)
+cpp14_can_require_not_applicable_member_LDADD = $(LDADD)
+am__cpp14_can_require_not_applicable_static_SOURCES_DIST = \
+ cpp14/can_require_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_not_applicable_static_OBJECTS = cpp14/can_require_not_applicable_static.$(OBJEXT)
+cpp14_can_require_not_applicable_static_OBJECTS = \
+ $(am_cpp14_can_require_not_applicable_static_OBJECTS)
+cpp14_can_require_not_applicable_static_LDADD = $(LDADD)
+am__cpp14_can_require_not_applicable_unsupported_SOURCES_DIST = \
+ cpp14/can_require_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_not_applicable_unsupported_OBJECTS = cpp14/can_require_not_applicable_unsupported.$(OBJEXT)
+cpp14_can_require_not_applicable_unsupported_OBJECTS = \
+ $(am_cpp14_can_require_not_applicable_unsupported_OBJECTS)
+cpp14_can_require_not_applicable_unsupported_LDADD = $(LDADD)
+am__cpp14_can_require_static_SOURCES_DIST = \
+ cpp14/can_require_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_require_static.$(OBJEXT)
+cpp14_can_require_static_OBJECTS = \
+ $(am_cpp14_can_require_static_OBJECTS)
+cpp14_can_require_static_LDADD = $(LDADD)
+am__cpp14_can_require_unsupported_SOURCES_DIST = \
+ cpp14/can_require_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_can_require_unsupported_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/can_require_unsupported.$(OBJEXT)
+cpp14_can_require_unsupported_OBJECTS = \
+ $(am_cpp14_can_require_unsupported_OBJECTS)
+cpp14_can_require_unsupported_LDADD = $(LDADD)
+am__cpp14_prefer_free_prefer_SOURCES_DIST = \
+ cpp14/prefer_free_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_prefer_free_prefer_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/prefer_free_prefer.$(OBJEXT)
+cpp14_prefer_free_prefer_OBJECTS = \
+ $(am_cpp14_prefer_free_prefer_OBJECTS)
+cpp14_prefer_free_prefer_LDADD = $(LDADD)
+am__cpp14_prefer_free_require_SOURCES_DIST = \
+ cpp14/prefer_free_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_prefer_free_require_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/prefer_free_require.$(OBJEXT)
+cpp14_prefer_free_require_OBJECTS = \
+ $(am_cpp14_prefer_free_require_OBJECTS)
+cpp14_prefer_free_require_LDADD = $(LDADD)
+am__cpp14_prefer_member_prefer_SOURCES_DIST = \
+ cpp14/prefer_member_prefer.cpp
+@HAVE_CXX14_TRUE@am_cpp14_prefer_member_prefer_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/prefer_member_prefer.$(OBJEXT)
+cpp14_prefer_member_prefer_OBJECTS = \
+ $(am_cpp14_prefer_member_prefer_OBJECTS)
+cpp14_prefer_member_prefer_LDADD = $(LDADD)
+am__cpp14_prefer_member_require_SOURCES_DIST = \
+ cpp14/prefer_member_require.cpp
+@HAVE_CXX14_TRUE@am_cpp14_prefer_member_require_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/prefer_member_require.$(OBJEXT)
+cpp14_prefer_member_require_OBJECTS = \
+ $(am_cpp14_prefer_member_require_OBJECTS)
+cpp14_prefer_member_require_LDADD = $(LDADD)
+am__cpp14_prefer_static_SOURCES_DIST = cpp14/prefer_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_prefer_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/prefer_static.$(OBJEXT)
+cpp14_prefer_static_OBJECTS = $(am_cpp14_prefer_static_OBJECTS)
+cpp14_prefer_static_LDADD = $(LDADD)
+am__cpp14_prefer_unsupported_SOURCES_DIST = \
+ cpp14/prefer_unsupported.cpp
+@HAVE_CXX14_TRUE@am_cpp14_prefer_unsupported_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/prefer_unsupported.$(OBJEXT)
+cpp14_prefer_unsupported_OBJECTS = \
+ $(am_cpp14_prefer_unsupported_OBJECTS)
+cpp14_prefer_unsupported_LDADD = $(LDADD)
+am__cpp14_query_free_SOURCES_DIST = cpp14/query_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_query_free_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/query_free.$(OBJEXT)
+cpp14_query_free_OBJECTS = $(am_cpp14_query_free_OBJECTS)
+cpp14_query_free_LDADD = $(LDADD)
+am__cpp14_query_member_SOURCES_DIST = cpp14/query_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_query_member_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/query_member.$(OBJEXT)
+cpp14_query_member_OBJECTS = $(am_cpp14_query_member_OBJECTS)
+cpp14_query_member_LDADD = $(LDADD)
+am__cpp14_query_static_SOURCES_DIST = cpp14/query_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_query_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/query_static.$(OBJEXT)
+cpp14_query_static_OBJECTS = $(am_cpp14_query_static_OBJECTS)
+cpp14_query_static_LDADD = $(LDADD)
+am__cpp14_require_concept_free_SOURCES_DIST = \
+ cpp14/require_concept_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_require_concept_free_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_free.$(OBJEXT)
+cpp14_require_concept_free_OBJECTS = \
+ $(am_cpp14_require_concept_free_OBJECTS)
+cpp14_require_concept_free_LDADD = $(LDADD)
+am__cpp14_require_concept_member_SOURCES_DIST = \
+ cpp14/require_concept_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_require_concept_member_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_member.$(OBJEXT)
+cpp14_require_concept_member_OBJECTS = \
+ $(am_cpp14_require_concept_member_OBJECTS)
+cpp14_require_concept_member_LDADD = $(LDADD)
+am__cpp14_require_concept_static_SOURCES_DIST = \
+ cpp14/require_concept_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_require_concept_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/require_concept_static.$(OBJEXT)
+cpp14_require_concept_static_OBJECTS = \
+ $(am_cpp14_require_concept_static_OBJECTS)
+cpp14_require_concept_static_LDADD = $(LDADD)
+am__cpp14_require_free_SOURCES_DIST = cpp14/require_free.cpp
+@HAVE_CXX14_TRUE@am_cpp14_require_free_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/require_free.$(OBJEXT)
+cpp14_require_free_OBJECTS = $(am_cpp14_require_free_OBJECTS)
+cpp14_require_free_LDADD = $(LDADD)
+am__cpp14_require_member_SOURCES_DIST = cpp14/require_member.cpp
+@HAVE_CXX14_TRUE@am_cpp14_require_member_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/require_member.$(OBJEXT)
+cpp14_require_member_OBJECTS = $(am_cpp14_require_member_OBJECTS)
+cpp14_require_member_LDADD = $(LDADD)
+am__cpp14_require_static_SOURCES_DIST = cpp14/require_static.cpp
+@HAVE_CXX14_TRUE@am_cpp14_require_static_OBJECTS = \
+@HAVE_CXX14_TRUE@ cpp14/require_static.$(OBJEXT)
+cpp14_require_static_OBJECTS = $(am_cpp14_require_static_OBJECTS)
+cpp14_require_static_LDADD = $(LDADD)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = cpp03/$(DEPDIR)/can_prefer_free_prefer.Po \
+ cpp03/$(DEPDIR)/can_prefer_free_require.Po \
+ cpp03/$(DEPDIR)/can_prefer_member_prefer.Po \
+ cpp03/$(DEPDIR)/can_prefer_member_require.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_applicable_free_require.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_applicable_member_require.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_applicable_static.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_preferable_free_require.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_preferable_member_require.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_preferable_static.Po \
+ cpp03/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po \
+ cpp03/$(DEPDIR)/can_prefer_static.Po \
+ cpp03/$(DEPDIR)/can_prefer_unsupported.Po \
+ cpp03/$(DEPDIR)/can_query_free.Po \
+ cpp03/$(DEPDIR)/can_query_member.Po \
+ cpp03/$(DEPDIR)/can_query_not_applicable_free.Po \
+ cpp03/$(DEPDIR)/can_query_not_applicable_member.Po \
+ cpp03/$(DEPDIR)/can_query_not_applicable_static.Po \
+ cpp03/$(DEPDIR)/can_query_not_applicable_unsupported.Po \
+ cpp03/$(DEPDIR)/can_query_static.Po \
+ cpp03/$(DEPDIR)/can_query_unsupported.Po \
+ cpp03/$(DEPDIR)/can_require_concept_free.Po \
+ cpp03/$(DEPDIR)/can_require_concept_member.Po \
+ cpp03/$(DEPDIR)/can_require_concept_not_applicable_free.Po \
+ cpp03/$(DEPDIR)/can_require_concept_not_applicable_member.Po \
+ cpp03/$(DEPDIR)/can_require_concept_not_applicable_static.Po \
+ cpp03/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po \
+ cpp03/$(DEPDIR)/can_require_concept_static.Po \
+ cpp03/$(DEPDIR)/can_require_concept_unsupported.Po \
+ cpp03/$(DEPDIR)/can_require_free.Po \
+ cpp03/$(DEPDIR)/can_require_member.Po \
+ cpp03/$(DEPDIR)/can_require_not_applicable_free.Po \
+ cpp03/$(DEPDIR)/can_require_not_applicable_member.Po \
+ cpp03/$(DEPDIR)/can_require_not_applicable_static.Po \
+ cpp03/$(DEPDIR)/can_require_not_applicable_unsupported.Po \
+ cpp03/$(DEPDIR)/can_require_static.Po \
+ cpp03/$(DEPDIR)/can_require_unsupported.Po \
+ cpp03/$(DEPDIR)/prefer_free_prefer.Po \
+ cpp03/$(DEPDIR)/prefer_free_require.Po \
+ cpp03/$(DEPDIR)/prefer_member_prefer.Po \
+ cpp03/$(DEPDIR)/prefer_member_require.Po \
+ cpp03/$(DEPDIR)/prefer_static.Po \
+ cpp03/$(DEPDIR)/prefer_unsupported.Po \
+ cpp03/$(DEPDIR)/query_free.Po cpp03/$(DEPDIR)/query_member.Po \
+ cpp03/$(DEPDIR)/query_static.Po \
+ cpp03/$(DEPDIR)/require_concept_free.Po \
+ cpp03/$(DEPDIR)/require_concept_member.Po \
+ cpp03/$(DEPDIR)/require_concept_static.Po \
+ cpp03/$(DEPDIR)/require_free.Po \
+ cpp03/$(DEPDIR)/require_member.Po \
+ cpp03/$(DEPDIR)/require_static.Po \
+ cpp11/$(DEPDIR)/can_prefer_free_prefer.Po \
+ cpp11/$(DEPDIR)/can_prefer_free_require.Po \
+ cpp11/$(DEPDIR)/can_prefer_member_prefer.Po \
+ cpp11/$(DEPDIR)/can_prefer_member_require.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_applicable_free_require.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_applicable_member_require.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_applicable_static.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_preferable_free_require.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_preferable_member_require.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_preferable_static.Po \
+ cpp11/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po \
+ cpp11/$(DEPDIR)/can_prefer_static.Po \
+ cpp11/$(DEPDIR)/can_prefer_unsupported.Po \
+ cpp11/$(DEPDIR)/can_query_free.Po \
+ cpp11/$(DEPDIR)/can_query_member.Po \
+ cpp11/$(DEPDIR)/can_query_not_applicable_free.Po \
+ cpp11/$(DEPDIR)/can_query_not_applicable_member.Po \
+ cpp11/$(DEPDIR)/can_query_not_applicable_static.Po \
+ cpp11/$(DEPDIR)/can_query_not_applicable_unsupported.Po \
+ cpp11/$(DEPDIR)/can_query_static.Po \
+ cpp11/$(DEPDIR)/can_query_unsupported.Po \
+ cpp11/$(DEPDIR)/can_require_concept_free.Po \
+ cpp11/$(DEPDIR)/can_require_concept_member.Po \
+ cpp11/$(DEPDIR)/can_require_concept_not_applicable_free.Po \
+ cpp11/$(DEPDIR)/can_require_concept_not_applicable_member.Po \
+ cpp11/$(DEPDIR)/can_require_concept_not_applicable_static.Po \
+ cpp11/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po \
+ cpp11/$(DEPDIR)/can_require_concept_static.Po \
+ cpp11/$(DEPDIR)/can_require_concept_unsupported.Po \
+ cpp11/$(DEPDIR)/can_require_free.Po \
+ cpp11/$(DEPDIR)/can_require_member.Po \
+ cpp11/$(DEPDIR)/can_require_not_applicable_free.Po \
+ cpp11/$(DEPDIR)/can_require_not_applicable_member.Po \
+ cpp11/$(DEPDIR)/can_require_not_applicable_static.Po \
+ cpp11/$(DEPDIR)/can_require_not_applicable_unsupported.Po \
+ cpp11/$(DEPDIR)/can_require_static.Po \
+ cpp11/$(DEPDIR)/can_require_unsupported.Po \
+ cpp11/$(DEPDIR)/prefer_free_prefer.Po \
+ cpp11/$(DEPDIR)/prefer_free_require.Po \
+ cpp11/$(DEPDIR)/prefer_member_prefer.Po \
+ cpp11/$(DEPDIR)/prefer_member_require.Po \
+ cpp11/$(DEPDIR)/prefer_static.Po \
+ cpp11/$(DEPDIR)/prefer_unsupported.Po \
+ cpp11/$(DEPDIR)/query_free.Po cpp11/$(DEPDIR)/query_member.Po \
+ cpp11/$(DEPDIR)/query_static.Po \
+ cpp11/$(DEPDIR)/require_concept_free.Po \
+ cpp11/$(DEPDIR)/require_concept_member.Po \
+ cpp11/$(DEPDIR)/require_concept_static.Po \
+ cpp11/$(DEPDIR)/require_free.Po \
+ cpp11/$(DEPDIR)/require_member.Po \
+ cpp11/$(DEPDIR)/require_static.Po \
+ cpp14/$(DEPDIR)/can_prefer_free_prefer.Po \
+ cpp14/$(DEPDIR)/can_prefer_free_require.Po \
+ cpp14/$(DEPDIR)/can_prefer_member_prefer.Po \
+ cpp14/$(DEPDIR)/can_prefer_member_require.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_applicable_free_require.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_applicable_member_require.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_applicable_static.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_preferable_free_require.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_preferable_member_require.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_preferable_static.Po \
+ cpp14/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po \
+ cpp14/$(DEPDIR)/can_prefer_static.Po \
+ cpp14/$(DEPDIR)/can_prefer_unsupported.Po \
+ cpp14/$(DEPDIR)/can_query_free.Po \
+ cpp14/$(DEPDIR)/can_query_member.Po \
+ cpp14/$(DEPDIR)/can_query_not_applicable_free.Po \
+ cpp14/$(DEPDIR)/can_query_not_applicable_member.Po \
+ cpp14/$(DEPDIR)/can_query_not_applicable_static.Po \
+ cpp14/$(DEPDIR)/can_query_not_applicable_unsupported.Po \
+ cpp14/$(DEPDIR)/can_query_static.Po \
+ cpp14/$(DEPDIR)/can_query_unsupported.Po \
+ cpp14/$(DEPDIR)/can_require_concept_free.Po \
+ cpp14/$(DEPDIR)/can_require_concept_member.Po \
+ cpp14/$(DEPDIR)/can_require_concept_not_applicable_free.Po \
+ cpp14/$(DEPDIR)/can_require_concept_not_applicable_member.Po \
+ cpp14/$(DEPDIR)/can_require_concept_not_applicable_static.Po \
+ cpp14/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po \
+ cpp14/$(DEPDIR)/can_require_concept_static.Po \
+ cpp14/$(DEPDIR)/can_require_concept_unsupported.Po \
+ cpp14/$(DEPDIR)/can_require_free.Po \
+ cpp14/$(DEPDIR)/can_require_member.Po \
+ cpp14/$(DEPDIR)/can_require_not_applicable_free.Po \
+ cpp14/$(DEPDIR)/can_require_not_applicable_member.Po \
+ cpp14/$(DEPDIR)/can_require_not_applicable_static.Po \
+ cpp14/$(DEPDIR)/can_require_not_applicable_unsupported.Po \
+ cpp14/$(DEPDIR)/can_require_static.Po \
+ cpp14/$(DEPDIR)/can_require_unsupported.Po \
+ cpp14/$(DEPDIR)/prefer_free_prefer.Po \
+ cpp14/$(DEPDIR)/prefer_free_require.Po \
+ cpp14/$(DEPDIR)/prefer_member_prefer.Po \
+ cpp14/$(DEPDIR)/prefer_member_require.Po \
+ cpp14/$(DEPDIR)/prefer_static.Po \
+ cpp14/$(DEPDIR)/prefer_unsupported.Po \
+ cpp14/$(DEPDIR)/query_free.Po cpp14/$(DEPDIR)/query_member.Po \
+ cpp14/$(DEPDIR)/query_static.Po \
+ cpp14/$(DEPDIR)/require_concept_free.Po \
+ cpp14/$(DEPDIR)/require_concept_member.Po \
+ cpp14/$(DEPDIR)/require_concept_static.Po \
+ cpp14/$(DEPDIR)/require_free.Po \
+ cpp14/$(DEPDIR)/require_member.Po \
+ cpp14/$(DEPDIR)/require_static.Po
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+SOURCES = $(cpp03_can_prefer_free_prefer_SOURCES) \
+ $(cpp03_can_prefer_free_require_SOURCES) \
+ $(cpp03_can_prefer_member_prefer_SOURCES) \
+ $(cpp03_can_prefer_member_require_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_free_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_free_require_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_member_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_member_require_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_static_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_free_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_free_require_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_member_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_member_require_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_static_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_unsupported_SOURCES) \
+ $(cpp03_can_prefer_static_SOURCES) \
+ $(cpp03_can_prefer_unsupported_SOURCES) \
+ $(cpp03_can_query_free_SOURCES) \
+ $(cpp03_can_query_member_SOURCES) \
+ $(cpp03_can_query_not_applicable_free_SOURCES) \
+ $(cpp03_can_query_not_applicable_member_SOURCES) \
+ $(cpp03_can_query_not_applicable_static_SOURCES) \
+ $(cpp03_can_query_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_query_static_SOURCES) \
+ $(cpp03_can_query_unsupported_SOURCES) \
+ $(cpp03_can_require_concept_free_SOURCES) \
+ $(cpp03_can_require_concept_member_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_free_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_member_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_static_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_require_concept_static_SOURCES) \
+ $(cpp03_can_require_concept_unsupported_SOURCES) \
+ $(cpp03_can_require_free_SOURCES) \
+ $(cpp03_can_require_member_SOURCES) \
+ $(cpp03_can_require_not_applicable_free_SOURCES) \
+ $(cpp03_can_require_not_applicable_member_SOURCES) \
+ $(cpp03_can_require_not_applicable_static_SOURCES) \
+ $(cpp03_can_require_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_require_static_SOURCES) \
+ $(cpp03_can_require_unsupported_SOURCES) \
+ $(cpp03_prefer_free_prefer_SOURCES) \
+ $(cpp03_prefer_free_require_SOURCES) \
+ $(cpp03_prefer_member_prefer_SOURCES) \
+ $(cpp03_prefer_member_require_SOURCES) \
+ $(cpp03_prefer_static_SOURCES) \
+ $(cpp03_prefer_unsupported_SOURCES) \
+ $(cpp03_query_free_SOURCES) $(cpp03_query_member_SOURCES) \
+ $(cpp03_query_static_SOURCES) \
+ $(cpp03_require_concept_free_SOURCES) \
+ $(cpp03_require_concept_member_SOURCES) \
+ $(cpp03_require_concept_static_SOURCES) \
+ $(cpp03_require_free_SOURCES) $(cpp03_require_member_SOURCES) \
+ $(cpp03_require_static_SOURCES) \
+ $(cpp11_can_prefer_free_prefer_SOURCES) \
+ $(cpp11_can_prefer_free_require_SOURCES) \
+ $(cpp11_can_prefer_member_prefer_SOURCES) \
+ $(cpp11_can_prefer_member_require_SOURCES) \
+ $(cpp11_can_prefer_not_applicable_free_prefer_SOURCES) \
+ $(cpp11_can_prefer_not_applicable_free_require_SOURCES) \
+ $(cpp11_can_prefer_not_applicable_member_prefer_SOURCES) \
+ $(cpp11_can_prefer_not_applicable_member_require_SOURCES) \
+ $(cpp11_can_prefer_not_applicable_static_SOURCES) \
+ $(cpp11_can_prefer_not_applicable_unsupported_SOURCES) \
+ $(cpp11_can_prefer_not_preferable_free_prefer_SOURCES) \
+ $(cpp11_can_prefer_not_preferable_free_require_SOURCES) \
+ $(cpp11_can_prefer_not_preferable_member_prefer_SOURCES) \
+ $(cpp11_can_prefer_not_preferable_member_require_SOURCES) \
+ $(cpp11_can_prefer_not_preferable_static_SOURCES) \
+ $(cpp11_can_prefer_not_preferable_unsupported_SOURCES) \
+ $(cpp11_can_prefer_static_SOURCES) \
+ $(cpp11_can_prefer_unsupported_SOURCES) \
+ $(cpp11_can_query_free_SOURCES) \
+ $(cpp11_can_query_member_SOURCES) \
+ $(cpp11_can_query_not_applicable_free_SOURCES) \
+ $(cpp11_can_query_not_applicable_member_SOURCES) \
+ $(cpp11_can_query_not_applicable_static_SOURCES) \
+ $(cpp11_can_query_not_applicable_unsupported_SOURCES) \
+ $(cpp11_can_query_static_SOURCES) \
+ $(cpp11_can_query_unsupported_SOURCES) \
+ $(cpp11_can_require_concept_free_SOURCES) \
+ $(cpp11_can_require_concept_member_SOURCES) \
+ $(cpp11_can_require_concept_not_applicable_free_SOURCES) \
+ $(cpp11_can_require_concept_not_applicable_member_SOURCES) \
+ $(cpp11_can_require_concept_not_applicable_static_SOURCES) \
+ $(cpp11_can_require_concept_not_applicable_unsupported_SOURCES) \
+ $(cpp11_can_require_concept_static_SOURCES) \
+ $(cpp11_can_require_concept_unsupported_SOURCES) \
+ $(cpp11_can_require_free_SOURCES) \
+ $(cpp11_can_require_member_SOURCES) \
+ $(cpp11_can_require_not_applicable_free_SOURCES) \
+ $(cpp11_can_require_not_applicable_member_SOURCES) \
+ $(cpp11_can_require_not_applicable_static_SOURCES) \
+ $(cpp11_can_require_not_applicable_unsupported_SOURCES) \
+ $(cpp11_can_require_static_SOURCES) \
+ $(cpp11_can_require_unsupported_SOURCES) \
+ $(cpp11_prefer_free_prefer_SOURCES) \
+ $(cpp11_prefer_free_require_SOURCES) \
+ $(cpp11_prefer_member_prefer_SOURCES) \
+ $(cpp11_prefer_member_require_SOURCES) \
+ $(cpp11_prefer_static_SOURCES) \
+ $(cpp11_prefer_unsupported_SOURCES) \
+ $(cpp11_query_free_SOURCES) $(cpp11_query_member_SOURCES) \
+ $(cpp11_query_static_SOURCES) \
+ $(cpp11_require_concept_free_SOURCES) \
+ $(cpp11_require_concept_member_SOURCES) \
+ $(cpp11_require_concept_static_SOURCES) \
+ $(cpp11_require_free_SOURCES) $(cpp11_require_member_SOURCES) \
+ $(cpp11_require_static_SOURCES) \
+ $(cpp14_can_prefer_free_prefer_SOURCES) \
+ $(cpp14_can_prefer_free_require_SOURCES) \
+ $(cpp14_can_prefer_member_prefer_SOURCES) \
+ $(cpp14_can_prefer_member_require_SOURCES) \
+ $(cpp14_can_prefer_not_applicable_free_prefer_SOURCES) \
+ $(cpp14_can_prefer_not_applicable_free_require_SOURCES) \
+ $(cpp14_can_prefer_not_applicable_member_prefer_SOURCES) \
+ $(cpp14_can_prefer_not_applicable_member_require_SOURCES) \
+ $(cpp14_can_prefer_not_applicable_static_SOURCES) \
+ $(cpp14_can_prefer_not_applicable_unsupported_SOURCES) \
+ $(cpp14_can_prefer_not_preferable_free_prefer_SOURCES) \
+ $(cpp14_can_prefer_not_preferable_free_require_SOURCES) \
+ $(cpp14_can_prefer_not_preferable_member_prefer_SOURCES) \
+ $(cpp14_can_prefer_not_preferable_member_require_SOURCES) \
+ $(cpp14_can_prefer_not_preferable_static_SOURCES) \
+ $(cpp14_can_prefer_not_preferable_unsupported_SOURCES) \
+ $(cpp14_can_prefer_static_SOURCES) \
+ $(cpp14_can_prefer_unsupported_SOURCES) \
+ $(cpp14_can_query_free_SOURCES) \
+ $(cpp14_can_query_member_SOURCES) \
+ $(cpp14_can_query_not_applicable_free_SOURCES) \
+ $(cpp14_can_query_not_applicable_member_SOURCES) \
+ $(cpp14_can_query_not_applicable_static_SOURCES) \
+ $(cpp14_can_query_not_applicable_unsupported_SOURCES) \
+ $(cpp14_can_query_static_SOURCES) \
+ $(cpp14_can_query_unsupported_SOURCES) \
+ $(cpp14_can_require_concept_free_SOURCES) \
+ $(cpp14_can_require_concept_member_SOURCES) \
+ $(cpp14_can_require_concept_not_applicable_free_SOURCES) \
+ $(cpp14_can_require_concept_not_applicable_member_SOURCES) \
+ $(cpp14_can_require_concept_not_applicable_static_SOURCES) \
+ $(cpp14_can_require_concept_not_applicable_unsupported_SOURCES) \
+ $(cpp14_can_require_concept_static_SOURCES) \
+ $(cpp14_can_require_concept_unsupported_SOURCES) \
+ $(cpp14_can_require_free_SOURCES) \
+ $(cpp14_can_require_member_SOURCES) \
+ $(cpp14_can_require_not_applicable_free_SOURCES) \
+ $(cpp14_can_require_not_applicable_member_SOURCES) \
+ $(cpp14_can_require_not_applicable_static_SOURCES) \
+ $(cpp14_can_require_not_applicable_unsupported_SOURCES) \
+ $(cpp14_can_require_static_SOURCES) \
+ $(cpp14_can_require_unsupported_SOURCES) \
+ $(cpp14_prefer_free_prefer_SOURCES) \
+ $(cpp14_prefer_free_require_SOURCES) \
+ $(cpp14_prefer_member_prefer_SOURCES) \
+ $(cpp14_prefer_member_require_SOURCES) \
+ $(cpp14_prefer_static_SOURCES) \
+ $(cpp14_prefer_unsupported_SOURCES) \
+ $(cpp14_query_free_SOURCES) $(cpp14_query_member_SOURCES) \
+ $(cpp14_query_static_SOURCES) \
+ $(cpp14_require_concept_free_SOURCES) \
+ $(cpp14_require_concept_member_SOURCES) \
+ $(cpp14_require_concept_static_SOURCES) \
+ $(cpp14_require_free_SOURCES) $(cpp14_require_member_SOURCES) \
+ $(cpp14_require_static_SOURCES)
+DIST_SOURCES = $(cpp03_can_prefer_free_prefer_SOURCES) \
+ $(cpp03_can_prefer_free_require_SOURCES) \
+ $(cpp03_can_prefer_member_prefer_SOURCES) \
+ $(cpp03_can_prefer_member_require_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_free_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_free_require_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_member_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_member_require_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_static_SOURCES) \
+ $(cpp03_can_prefer_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_free_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_free_require_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_member_prefer_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_member_require_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_static_SOURCES) \
+ $(cpp03_can_prefer_not_preferable_unsupported_SOURCES) \
+ $(cpp03_can_prefer_static_SOURCES) \
+ $(cpp03_can_prefer_unsupported_SOURCES) \
+ $(cpp03_can_query_free_SOURCES) \
+ $(cpp03_can_query_member_SOURCES) \
+ $(cpp03_can_query_not_applicable_free_SOURCES) \
+ $(cpp03_can_query_not_applicable_member_SOURCES) \
+ $(cpp03_can_query_not_applicable_static_SOURCES) \
+ $(cpp03_can_query_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_query_static_SOURCES) \
+ $(cpp03_can_query_unsupported_SOURCES) \
+ $(cpp03_can_require_concept_free_SOURCES) \
+ $(cpp03_can_require_concept_member_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_free_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_member_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_static_SOURCES) \
+ $(cpp03_can_require_concept_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_require_concept_static_SOURCES) \
+ $(cpp03_can_require_concept_unsupported_SOURCES) \
+ $(cpp03_can_require_free_SOURCES) \
+ $(cpp03_can_require_member_SOURCES) \
+ $(cpp03_can_require_not_applicable_free_SOURCES) \
+ $(cpp03_can_require_not_applicable_member_SOURCES) \
+ $(cpp03_can_require_not_applicable_static_SOURCES) \
+ $(cpp03_can_require_not_applicable_unsupported_SOURCES) \
+ $(cpp03_can_require_static_SOURCES) \
+ $(cpp03_can_require_unsupported_SOURCES) \
+ $(cpp03_prefer_free_prefer_SOURCES) \
+ $(cpp03_prefer_free_require_SOURCES) \
+ $(cpp03_prefer_member_prefer_SOURCES) \
+ $(cpp03_prefer_member_require_SOURCES) \
+ $(cpp03_prefer_static_SOURCES) \
+ $(cpp03_prefer_unsupported_SOURCES) \
+ $(cpp03_query_free_SOURCES) $(cpp03_query_member_SOURCES) \
+ $(cpp03_query_static_SOURCES) \
+ $(cpp03_require_concept_free_SOURCES) \
+ $(cpp03_require_concept_member_SOURCES) \
+ $(cpp03_require_concept_static_SOURCES) \
+ $(cpp03_require_free_SOURCES) $(cpp03_require_member_SOURCES) \
+ $(cpp03_require_static_SOURCES) \
+ $(am__cpp11_can_prefer_free_prefer_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_free_require_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_member_prefer_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_member_require_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_applicable_free_prefer_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_applicable_free_require_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_applicable_member_prefer_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_applicable_member_require_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_preferable_free_prefer_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_preferable_free_require_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_preferable_member_prefer_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_preferable_member_require_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_preferable_static_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_not_preferable_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_static_SOURCES_DIST) \
+ $(am__cpp11_can_prefer_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_query_free_SOURCES_DIST) \
+ $(am__cpp11_can_query_member_SOURCES_DIST) \
+ $(am__cpp11_can_query_not_applicable_free_SOURCES_DIST) \
+ $(am__cpp11_can_query_not_applicable_member_SOURCES_DIST) \
+ $(am__cpp11_can_query_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp11_can_query_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_query_static_SOURCES_DIST) \
+ $(am__cpp11_can_query_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_free_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_member_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_not_applicable_free_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_not_applicable_member_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_static_SOURCES_DIST) \
+ $(am__cpp11_can_require_concept_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_require_free_SOURCES_DIST) \
+ $(am__cpp11_can_require_member_SOURCES_DIST) \
+ $(am__cpp11_can_require_not_applicable_free_SOURCES_DIST) \
+ $(am__cpp11_can_require_not_applicable_member_SOURCES_DIST) \
+ $(am__cpp11_can_require_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp11_can_require_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp11_can_require_static_SOURCES_DIST) \
+ $(am__cpp11_can_require_unsupported_SOURCES_DIST) \
+ $(am__cpp11_prefer_free_prefer_SOURCES_DIST) \
+ $(am__cpp11_prefer_free_require_SOURCES_DIST) \
+ $(am__cpp11_prefer_member_prefer_SOURCES_DIST) \
+ $(am__cpp11_prefer_member_require_SOURCES_DIST) \
+ $(am__cpp11_prefer_static_SOURCES_DIST) \
+ $(am__cpp11_prefer_unsupported_SOURCES_DIST) \
+ $(am__cpp11_query_free_SOURCES_DIST) \
+ $(am__cpp11_query_member_SOURCES_DIST) \
+ $(am__cpp11_query_static_SOURCES_DIST) \
+ $(am__cpp11_require_concept_free_SOURCES_DIST) \
+ $(am__cpp11_require_concept_member_SOURCES_DIST) \
+ $(am__cpp11_require_concept_static_SOURCES_DIST) \
+ $(am__cpp11_require_free_SOURCES_DIST) \
+ $(am__cpp11_require_member_SOURCES_DIST) \
+ $(am__cpp11_require_static_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_free_prefer_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_free_require_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_member_prefer_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_member_require_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_applicable_free_prefer_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_applicable_free_require_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_applicable_member_prefer_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_applicable_member_require_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_preferable_free_prefer_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_preferable_free_require_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_preferable_member_prefer_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_preferable_member_require_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_preferable_static_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_not_preferable_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_static_SOURCES_DIST) \
+ $(am__cpp14_can_prefer_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_query_free_SOURCES_DIST) \
+ $(am__cpp14_can_query_member_SOURCES_DIST) \
+ $(am__cpp14_can_query_not_applicable_free_SOURCES_DIST) \
+ $(am__cpp14_can_query_not_applicable_member_SOURCES_DIST) \
+ $(am__cpp14_can_query_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp14_can_query_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_query_static_SOURCES_DIST) \
+ $(am__cpp14_can_query_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_free_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_member_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_not_applicable_free_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_not_applicable_member_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_static_SOURCES_DIST) \
+ $(am__cpp14_can_require_concept_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_require_free_SOURCES_DIST) \
+ $(am__cpp14_can_require_member_SOURCES_DIST) \
+ $(am__cpp14_can_require_not_applicable_free_SOURCES_DIST) \
+ $(am__cpp14_can_require_not_applicable_member_SOURCES_DIST) \
+ $(am__cpp14_can_require_not_applicable_static_SOURCES_DIST) \
+ $(am__cpp14_can_require_not_applicable_unsupported_SOURCES_DIST) \
+ $(am__cpp14_can_require_static_SOURCES_DIST) \
+ $(am__cpp14_can_require_unsupported_SOURCES_DIST) \
+ $(am__cpp14_prefer_free_prefer_SOURCES_DIST) \
+ $(am__cpp14_prefer_free_require_SOURCES_DIST) \
+ $(am__cpp14_prefer_member_prefer_SOURCES_DIST) \
+ $(am__cpp14_prefer_member_require_SOURCES_DIST) \
+ $(am__cpp14_prefer_static_SOURCES_DIST) \
+ $(am__cpp14_prefer_unsupported_SOURCES_DIST) \
+ $(am__cpp14_query_free_SOURCES_DIST) \
+ $(am__cpp14_query_member_SOURCES_DIST) \
+ $(am__cpp14_query_static_SOURCES_DIST) \
+ $(am__cpp14_require_concept_free_SOURCES_DIST) \
+ $(am__cpp14_require_concept_member_SOURCES_DIST) \
+ $(am__cpp14_require_concept_static_SOURCES_DIST) \
+ $(am__cpp14_require_free_SOURCES_DIST) \
+ $(am__cpp14_require_member_SOURCES_DIST) \
+ $(am__cpp14_require_static_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ETAGS = @ETAGS@
+EXEEXT = @EXEEXT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = subdir-objects
+cpp03_query_free_SOURCES = cpp03/query_free.cpp
+cpp03_query_member_SOURCES = cpp03/query_member.cpp
+cpp03_query_static_SOURCES = cpp03/query_static.cpp
+cpp03_can_query_free_SOURCES = cpp03/can_query_free.cpp
+cpp03_can_query_member_SOURCES = cpp03/can_query_member.cpp
+cpp03_can_query_static_SOURCES = cpp03/can_query_static.cpp
+cpp03_can_query_unsupported_SOURCES = cpp03/can_query_unsupported.cpp
+cpp03_can_query_not_applicable_free_SOURCES = cpp03/can_query_not_applicable_free.cpp
+cpp03_can_query_not_applicable_member_SOURCES = cpp03/can_query_not_applicable_member.cpp
+cpp03_can_query_not_applicable_static_SOURCES = cpp03/can_query_not_applicable_static.cpp
+cpp03_can_query_not_applicable_unsupported_SOURCES = cpp03/can_query_not_applicable_unsupported.cpp
+cpp03_require_concept_free_SOURCES = cpp03/require_concept_free.cpp
+cpp03_require_concept_member_SOURCES = cpp03/require_concept_member.cpp
+cpp03_require_concept_static_SOURCES = cpp03/require_concept_static.cpp
+cpp03_can_require_concept_free_SOURCES = cpp03/can_require_concept_free.cpp
+cpp03_can_require_concept_member_SOURCES = cpp03/can_require_concept_member.cpp
+cpp03_can_require_concept_static_SOURCES = cpp03/can_require_concept_static.cpp
+cpp03_can_require_concept_unsupported_SOURCES = cpp03/can_require_concept_unsupported.cpp
+cpp03_can_require_concept_not_applicable_free_SOURCES = cpp03/can_require_concept_not_applicable_free.cpp
+cpp03_can_require_concept_not_applicable_member_SOURCES = cpp03/can_require_concept_not_applicable_member.cpp
+cpp03_can_require_concept_not_applicable_static_SOURCES = cpp03/can_require_concept_not_applicable_static.cpp
+cpp03_can_require_concept_not_applicable_unsupported_SOURCES = cpp03/can_require_concept_not_applicable_unsupported.cpp
+cpp03_require_free_SOURCES = cpp03/require_free.cpp
+cpp03_require_member_SOURCES = cpp03/require_member.cpp
+cpp03_require_static_SOURCES = cpp03/require_static.cpp
+cpp03_can_require_free_SOURCES = cpp03/can_require_free.cpp
+cpp03_can_require_member_SOURCES = cpp03/can_require_member.cpp
+cpp03_can_require_static_SOURCES = cpp03/can_require_static.cpp
+cpp03_can_require_unsupported_SOURCES = cpp03/can_require_unsupported.cpp
+cpp03_can_require_not_applicable_free_SOURCES = cpp03/can_require_not_applicable_free.cpp
+cpp03_can_require_not_applicable_member_SOURCES = cpp03/can_require_not_applicable_member.cpp
+cpp03_can_require_not_applicable_static_SOURCES = cpp03/can_require_not_applicable_static.cpp
+cpp03_can_require_not_applicable_unsupported_SOURCES = cpp03/can_require_not_applicable_unsupported.cpp
+cpp03_prefer_free_prefer_SOURCES = cpp03/prefer_free_prefer.cpp
+cpp03_prefer_free_require_SOURCES = cpp03/prefer_free_require.cpp
+cpp03_prefer_member_prefer_SOURCES = cpp03/prefer_member_prefer.cpp
+cpp03_prefer_member_require_SOURCES = cpp03/prefer_member_require.cpp
+cpp03_prefer_static_SOURCES = cpp03/prefer_static.cpp
+cpp03_prefer_unsupported_SOURCES = cpp03/prefer_unsupported.cpp
+cpp03_can_prefer_free_prefer_SOURCES = cpp03/can_prefer_free_prefer.cpp
+cpp03_can_prefer_free_require_SOURCES = cpp03/can_prefer_free_require.cpp
+cpp03_can_prefer_member_prefer_SOURCES = cpp03/can_prefer_member_prefer.cpp
+cpp03_can_prefer_member_require_SOURCES = cpp03/can_prefer_member_require.cpp
+cpp03_can_prefer_static_SOURCES = cpp03/can_prefer_static.cpp
+cpp03_can_prefer_unsupported_SOURCES = cpp03/can_prefer_unsupported.cpp
+cpp03_can_prefer_not_applicable_free_prefer_SOURCES = cpp03/can_prefer_not_applicable_free_prefer.cpp
+cpp03_can_prefer_not_applicable_free_require_SOURCES = cpp03/can_prefer_not_applicable_free_require.cpp
+cpp03_can_prefer_not_applicable_member_prefer_SOURCES = cpp03/can_prefer_not_applicable_member_prefer.cpp
+cpp03_can_prefer_not_applicable_member_require_SOURCES = cpp03/can_prefer_not_applicable_member_require.cpp
+cpp03_can_prefer_not_applicable_static_SOURCES = cpp03/can_prefer_not_applicable_static.cpp
+cpp03_can_prefer_not_applicable_unsupported_SOURCES = cpp03/can_prefer_not_applicable_unsupported.cpp
+cpp03_can_prefer_not_preferable_free_prefer_SOURCES = cpp03/can_prefer_not_preferable_free_prefer.cpp
+cpp03_can_prefer_not_preferable_free_require_SOURCES = cpp03/can_prefer_not_preferable_free_require.cpp
+cpp03_can_prefer_not_preferable_member_prefer_SOURCES = cpp03/can_prefer_not_preferable_member_prefer.cpp
+cpp03_can_prefer_not_preferable_member_require_SOURCES = cpp03/can_prefer_not_preferable_member_require.cpp
+cpp03_can_prefer_not_preferable_static_SOURCES = cpp03/can_prefer_not_preferable_static.cpp
+cpp03_can_prefer_not_preferable_unsupported_SOURCES = cpp03/can_prefer_not_preferable_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_query_free_SOURCES = cpp11/query_free.cpp
+@HAVE_CXX11_TRUE@cpp11_query_member_SOURCES = cpp11/query_member.cpp
+@HAVE_CXX11_TRUE@cpp11_query_static_SOURCES = cpp11/query_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_free_SOURCES = cpp11/can_query_free.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_member_SOURCES = cpp11/can_query_member.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_static_SOURCES = cpp11/can_query_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_unsupported_SOURCES = cpp11/can_query_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_not_applicable_free_SOURCES = cpp11/can_query_not_applicable_free.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_not_applicable_member_SOURCES = cpp11/can_query_not_applicable_member.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_not_applicable_static_SOURCES = cpp11/can_query_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_query_not_applicable_unsupported_SOURCES = cpp11/can_query_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_require_concept_free_SOURCES = cpp11/require_concept_free.cpp
+@HAVE_CXX11_TRUE@cpp11_require_concept_member_SOURCES = cpp11/require_concept_member.cpp
+@HAVE_CXX11_TRUE@cpp11_require_concept_static_SOURCES = cpp11/require_concept_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_free_SOURCES = cpp11/can_require_concept_free.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_member_SOURCES = cpp11/can_require_concept_member.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_static_SOURCES = cpp11/can_require_concept_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_unsupported_SOURCES = cpp11/can_require_concept_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_not_applicable_free_SOURCES = cpp11/can_require_concept_not_applicable_free.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_not_applicable_member_SOURCES = cpp11/can_require_concept_not_applicable_member.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_not_applicable_static_SOURCES = cpp11/can_require_concept_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_concept_not_applicable_unsupported_SOURCES = cpp11/can_require_concept_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_require_free_SOURCES = cpp11/require_free.cpp
+@HAVE_CXX11_TRUE@cpp11_require_member_SOURCES = cpp11/require_member.cpp
+@HAVE_CXX11_TRUE@cpp11_require_static_SOURCES = cpp11/require_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_free_SOURCES = cpp11/can_require_free.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_member_SOURCES = cpp11/can_require_member.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_static_SOURCES = cpp11/can_require_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_unsupported_SOURCES = cpp11/can_require_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_not_applicable_free_SOURCES = cpp11/can_require_not_applicable_free.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_not_applicable_member_SOURCES = cpp11/can_require_not_applicable_member.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_not_applicable_static_SOURCES = cpp11/can_require_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_require_not_applicable_unsupported_SOURCES = cpp11/can_require_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_prefer_free_prefer_SOURCES = cpp11/prefer_free_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_prefer_free_require_SOURCES = cpp11/prefer_free_require.cpp
+@HAVE_CXX11_TRUE@cpp11_prefer_member_prefer_SOURCES = cpp11/prefer_member_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_prefer_member_require_SOURCES = cpp11/prefer_member_require.cpp
+@HAVE_CXX11_TRUE@cpp11_prefer_static_SOURCES = cpp11/prefer_static.cpp
+@HAVE_CXX11_TRUE@cpp11_prefer_unsupported_SOURCES = cpp11/prefer_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_free_prefer_SOURCES = cpp11/can_prefer_free_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_free_require_SOURCES = cpp11/can_prefer_free_require.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_member_prefer_SOURCES = cpp11/can_prefer_member_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_member_require_SOURCES = cpp11/can_prefer_member_require.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_static_SOURCES = cpp11/can_prefer_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_unsupported_SOURCES = cpp11/can_prefer_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_applicable_free_prefer_SOURCES = cpp11/can_prefer_not_applicable_free_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_applicable_free_require_SOURCES = cpp11/can_prefer_not_applicable_free_require.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_applicable_member_prefer_SOURCES = cpp11/can_prefer_not_applicable_member_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_applicable_member_require_SOURCES = cpp11/can_prefer_not_applicable_member_require.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_applicable_static_SOURCES = cpp11/can_prefer_not_applicable_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_applicable_unsupported_SOURCES = cpp11/can_prefer_not_applicable_unsupported.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_preferable_free_prefer_SOURCES = cpp11/can_prefer_not_preferable_free_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_preferable_free_require_SOURCES = cpp11/can_prefer_not_preferable_free_require.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_preferable_member_prefer_SOURCES = cpp11/can_prefer_not_preferable_member_prefer.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_preferable_member_require_SOURCES = cpp11/can_prefer_not_preferable_member_require.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_preferable_static_SOURCES = cpp11/can_prefer_not_preferable_static.cpp
+@HAVE_CXX11_TRUE@cpp11_can_prefer_not_preferable_unsupported_SOURCES = cpp11/can_prefer_not_preferable_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_query_free_SOURCES = cpp14/query_free.cpp
+@HAVE_CXX14_TRUE@cpp14_query_member_SOURCES = cpp14/query_member.cpp
+@HAVE_CXX14_TRUE@cpp14_query_static_SOURCES = cpp14/query_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_free_SOURCES = cpp14/can_query_free.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_member_SOURCES = cpp14/can_query_member.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_static_SOURCES = cpp14/can_query_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_unsupported_SOURCES = cpp14/can_query_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_not_applicable_free_SOURCES = cpp14/can_query_not_applicable_free.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_not_applicable_member_SOURCES = cpp14/can_query_not_applicable_member.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_not_applicable_static_SOURCES = cpp14/can_query_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_query_not_applicable_unsupported_SOURCES = cpp14/can_query_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_require_concept_free_SOURCES = cpp14/require_concept_free.cpp
+@HAVE_CXX14_TRUE@cpp14_require_concept_member_SOURCES = cpp14/require_concept_member.cpp
+@HAVE_CXX14_TRUE@cpp14_require_concept_static_SOURCES = cpp14/require_concept_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_free_SOURCES = cpp14/can_require_concept_free.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_member_SOURCES = cpp14/can_require_concept_member.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_static_SOURCES = cpp14/can_require_concept_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_unsupported_SOURCES = cpp14/can_require_concept_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_not_applicable_free_SOURCES = cpp14/can_require_concept_not_applicable_free.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_not_applicable_member_SOURCES = cpp14/can_require_concept_not_applicable_member.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_not_applicable_static_SOURCES = cpp14/can_require_concept_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_concept_not_applicable_unsupported_SOURCES = cpp14/can_require_concept_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_require_free_SOURCES = cpp14/require_free.cpp
+@HAVE_CXX14_TRUE@cpp14_require_member_SOURCES = cpp14/require_member.cpp
+@HAVE_CXX14_TRUE@cpp14_require_static_SOURCES = cpp14/require_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_free_SOURCES = cpp14/can_require_free.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_member_SOURCES = cpp14/can_require_member.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_static_SOURCES = cpp14/can_require_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_unsupported_SOURCES = cpp14/can_require_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_not_applicable_free_SOURCES = cpp14/can_require_not_applicable_free.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_not_applicable_member_SOURCES = cpp14/can_require_not_applicable_member.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_not_applicable_static_SOURCES = cpp14/can_require_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_require_not_applicable_unsupported_SOURCES = cpp14/can_require_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_prefer_free_prefer_SOURCES = cpp14/prefer_free_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_prefer_free_require_SOURCES = cpp14/prefer_free_require.cpp
+@HAVE_CXX14_TRUE@cpp14_prefer_member_prefer_SOURCES = cpp14/prefer_member_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_prefer_member_require_SOURCES = cpp14/prefer_member_require.cpp
+@HAVE_CXX14_TRUE@cpp14_prefer_static_SOURCES = cpp14/prefer_static.cpp
+@HAVE_CXX14_TRUE@cpp14_prefer_unsupported_SOURCES = cpp14/prefer_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_free_prefer_SOURCES = cpp14/can_prefer_free_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_free_require_SOURCES = cpp14/can_prefer_free_require.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_member_prefer_SOURCES = cpp14/can_prefer_member_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_member_require_SOURCES = cpp14/can_prefer_member_require.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_static_SOURCES = cpp14/can_prefer_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_unsupported_SOURCES = cpp14/can_prefer_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_applicable_free_prefer_SOURCES = cpp14/can_prefer_not_applicable_free_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_applicable_free_require_SOURCES = cpp14/can_prefer_not_applicable_free_require.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_applicable_member_prefer_SOURCES = cpp14/can_prefer_not_applicable_member_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_applicable_member_require_SOURCES = cpp14/can_prefer_not_applicable_member_require.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_applicable_static_SOURCES = cpp14/can_prefer_not_applicable_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_applicable_unsupported_SOURCES = cpp14/can_prefer_not_applicable_unsupported.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_preferable_free_prefer_SOURCES = cpp14/can_prefer_not_preferable_free_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_preferable_free_require_SOURCES = cpp14/can_prefer_not_preferable_free_require.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_preferable_member_prefer_SOURCES = cpp14/can_prefer_not_preferable_member_prefer.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_preferable_member_require_SOURCES = cpp14/can_prefer_not_preferable_member_require.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_preferable_static_SOURCES = cpp14/can_prefer_not_preferable_static.cpp
+@HAVE_CXX14_TRUE@cpp14_can_prefer_not_preferable_unsupported_SOURCES = cpp14/can_prefer_not_preferable_unsupported.cpp
+TESTS = $(check_PROGRAMS)
+AM_CXXFLAGS = -I$(srcdir)/../../../include
+MAINTAINERCLEANFILES = \
+ $(srcdir)/Makefile.in
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .log .o .obj .test .test$(EXEEXT) .trs
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/tests/properties/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/tests/properties/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkPROGRAMS:
+ -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+cpp03/$(am__dirstamp):
+ @$(MKDIR_P) cpp03
+ @: > cpp03/$(am__dirstamp)
+cpp03/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) cpp03/$(DEPDIR)
+ @: > cpp03/$(DEPDIR)/$(am__dirstamp)
+cpp03/can_prefer_free_prefer.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_free_prefer$(EXEEXT): $(cpp03_can_prefer_free_prefer_OBJECTS) $(cpp03_can_prefer_free_prefer_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_free_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_free_prefer_OBJECTS) $(cpp03_can_prefer_free_prefer_LDADD) $(LIBS)
+cpp03/can_prefer_free_require.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_free_require$(EXEEXT): $(cpp03_can_prefer_free_require_OBJECTS) $(cpp03_can_prefer_free_require_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_free_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_free_require_OBJECTS) $(cpp03_can_prefer_free_require_LDADD) $(LIBS)
+cpp03/can_prefer_member_prefer.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_member_prefer$(EXEEXT): $(cpp03_can_prefer_member_prefer_OBJECTS) $(cpp03_can_prefer_member_prefer_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_member_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_member_prefer_OBJECTS) $(cpp03_can_prefer_member_prefer_LDADD) $(LIBS)
+cpp03/can_prefer_member_require.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_member_require$(EXEEXT): $(cpp03_can_prefer_member_require_OBJECTS) $(cpp03_can_prefer_member_require_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_member_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_member_require_OBJECTS) $(cpp03_can_prefer_member_require_LDADD) $(LIBS)
+cpp03/can_prefer_not_applicable_free_prefer.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_applicable_free_prefer$(EXEEXT): $(cpp03_can_prefer_not_applicable_free_prefer_OBJECTS) $(cpp03_can_prefer_not_applicable_free_prefer_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_applicable_free_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_applicable_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_applicable_free_prefer_OBJECTS) $(cpp03_can_prefer_not_applicable_free_prefer_LDADD) $(LIBS)
+cpp03/can_prefer_not_applicable_free_require.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_applicable_free_require$(EXEEXT): $(cpp03_can_prefer_not_applicable_free_require_OBJECTS) $(cpp03_can_prefer_not_applicable_free_require_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_applicable_free_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_applicable_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_applicable_free_require_OBJECTS) $(cpp03_can_prefer_not_applicable_free_require_LDADD) $(LIBS)
+cpp03/can_prefer_not_applicable_member_prefer.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_applicable_member_prefer$(EXEEXT): $(cpp03_can_prefer_not_applicable_member_prefer_OBJECTS) $(cpp03_can_prefer_not_applicable_member_prefer_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_applicable_member_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_applicable_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_applicable_member_prefer_OBJECTS) $(cpp03_can_prefer_not_applicable_member_prefer_LDADD) $(LIBS)
+cpp03/can_prefer_not_applicable_member_require.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_applicable_member_require$(EXEEXT): $(cpp03_can_prefer_not_applicable_member_require_OBJECTS) $(cpp03_can_prefer_not_applicable_member_require_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_applicable_member_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_applicable_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_applicable_member_require_OBJECTS) $(cpp03_can_prefer_not_applicable_member_require_LDADD) $(LIBS)
+cpp03/can_prefer_not_applicable_static.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_applicable_static$(EXEEXT): $(cpp03_can_prefer_not_applicable_static_OBJECTS) $(cpp03_can_prefer_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_applicable_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_applicable_static_OBJECTS) $(cpp03_can_prefer_not_applicable_static_LDADD) $(LIBS)
+cpp03/can_prefer_not_applicable_unsupported.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_applicable_unsupported$(EXEEXT): $(cpp03_can_prefer_not_applicable_unsupported_OBJECTS) $(cpp03_can_prefer_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_applicable_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_applicable_unsupported_OBJECTS) $(cpp03_can_prefer_not_applicable_unsupported_LDADD) $(LIBS)
+cpp03/can_prefer_not_preferable_free_prefer.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_preferable_free_prefer$(EXEEXT): $(cpp03_can_prefer_not_preferable_free_prefer_OBJECTS) $(cpp03_can_prefer_not_preferable_free_prefer_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_preferable_free_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_preferable_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_preferable_free_prefer_OBJECTS) $(cpp03_can_prefer_not_preferable_free_prefer_LDADD) $(LIBS)
+cpp03/can_prefer_not_preferable_free_require.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_preferable_free_require$(EXEEXT): $(cpp03_can_prefer_not_preferable_free_require_OBJECTS) $(cpp03_can_prefer_not_preferable_free_require_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_preferable_free_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_preferable_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_preferable_free_require_OBJECTS) $(cpp03_can_prefer_not_preferable_free_require_LDADD) $(LIBS)
+cpp03/can_prefer_not_preferable_member_prefer.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_preferable_member_prefer$(EXEEXT): $(cpp03_can_prefer_not_preferable_member_prefer_OBJECTS) $(cpp03_can_prefer_not_preferable_member_prefer_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_preferable_member_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_preferable_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_preferable_member_prefer_OBJECTS) $(cpp03_can_prefer_not_preferable_member_prefer_LDADD) $(LIBS)
+cpp03/can_prefer_not_preferable_member_require.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_preferable_member_require$(EXEEXT): $(cpp03_can_prefer_not_preferable_member_require_OBJECTS) $(cpp03_can_prefer_not_preferable_member_require_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_preferable_member_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_preferable_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_preferable_member_require_OBJECTS) $(cpp03_can_prefer_not_preferable_member_require_LDADD) $(LIBS)
+cpp03/can_prefer_not_preferable_static.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_preferable_static$(EXEEXT): $(cpp03_can_prefer_not_preferable_static_OBJECTS) $(cpp03_can_prefer_not_preferable_static_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_preferable_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_preferable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_preferable_static_OBJECTS) $(cpp03_can_prefer_not_preferable_static_LDADD) $(LIBS)
+cpp03/can_prefer_not_preferable_unsupported.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_not_preferable_unsupported$(EXEEXT): $(cpp03_can_prefer_not_preferable_unsupported_OBJECTS) $(cpp03_can_prefer_not_preferable_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_not_preferable_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_not_preferable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_not_preferable_unsupported_OBJECTS) $(cpp03_can_prefer_not_preferable_unsupported_LDADD) $(LIBS)
+cpp03/can_prefer_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_static$(EXEEXT): $(cpp03_can_prefer_static_OBJECTS) $(cpp03_can_prefer_static_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_static_OBJECTS) $(cpp03_can_prefer_static_LDADD) $(LIBS)
+cpp03/can_prefer_unsupported.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_prefer_unsupported$(EXEEXT): $(cpp03_can_prefer_unsupported_OBJECTS) $(cpp03_can_prefer_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_prefer_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_prefer_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_prefer_unsupported_OBJECTS) $(cpp03_can_prefer_unsupported_LDADD) $(LIBS)
+cpp03/can_query_free.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_free$(EXEEXT): $(cpp03_can_query_free_OBJECTS) $(cpp03_can_query_free_DEPENDENCIES) $(EXTRA_cpp03_can_query_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_free_OBJECTS) $(cpp03_can_query_free_LDADD) $(LIBS)
+cpp03/can_query_member.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_member$(EXEEXT): $(cpp03_can_query_member_OBJECTS) $(cpp03_can_query_member_DEPENDENCIES) $(EXTRA_cpp03_can_query_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_member_OBJECTS) $(cpp03_can_query_member_LDADD) $(LIBS)
+cpp03/can_query_not_applicable_free.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_not_applicable_free$(EXEEXT): $(cpp03_can_query_not_applicable_free_OBJECTS) $(cpp03_can_query_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp03_can_query_not_applicable_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_not_applicable_free_OBJECTS) $(cpp03_can_query_not_applicable_free_LDADD) $(LIBS)
+cpp03/can_query_not_applicable_member.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_not_applicable_member$(EXEEXT): $(cpp03_can_query_not_applicable_member_OBJECTS) $(cpp03_can_query_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp03_can_query_not_applicable_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_not_applicable_member_OBJECTS) $(cpp03_can_query_not_applicable_member_LDADD) $(LIBS)
+cpp03/can_query_not_applicable_static.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_not_applicable_static$(EXEEXT): $(cpp03_can_query_not_applicable_static_OBJECTS) $(cpp03_can_query_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp03_can_query_not_applicable_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_not_applicable_static_OBJECTS) $(cpp03_can_query_not_applicable_static_LDADD) $(LIBS)
+cpp03/can_query_not_applicable_unsupported.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_not_applicable_unsupported$(EXEEXT): $(cpp03_can_query_not_applicable_unsupported_OBJECTS) $(cpp03_can_query_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_query_not_applicable_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_not_applicable_unsupported_OBJECTS) $(cpp03_can_query_not_applicable_unsupported_LDADD) $(LIBS)
+cpp03/can_query_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_static$(EXEEXT): $(cpp03_can_query_static_OBJECTS) $(cpp03_can_query_static_DEPENDENCIES) $(EXTRA_cpp03_can_query_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_static_OBJECTS) $(cpp03_can_query_static_LDADD) $(LIBS)
+cpp03/can_query_unsupported.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_query_unsupported$(EXEEXT): $(cpp03_can_query_unsupported_OBJECTS) $(cpp03_can_query_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_query_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_query_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_query_unsupported_OBJECTS) $(cpp03_can_query_unsupported_LDADD) $(LIBS)
+cpp03/can_require_concept_free.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_free$(EXEEXT): $(cpp03_can_require_concept_free_OBJECTS) $(cpp03_can_require_concept_free_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_free_OBJECTS) $(cpp03_can_require_concept_free_LDADD) $(LIBS)
+cpp03/can_require_concept_member.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_member$(EXEEXT): $(cpp03_can_require_concept_member_OBJECTS) $(cpp03_can_require_concept_member_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_member_OBJECTS) $(cpp03_can_require_concept_member_LDADD) $(LIBS)
+cpp03/can_require_concept_not_applicable_free.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_not_applicable_free$(EXEEXT): $(cpp03_can_require_concept_not_applicable_free_OBJECTS) $(cpp03_can_require_concept_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_not_applicable_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_not_applicable_free_OBJECTS) $(cpp03_can_require_concept_not_applicable_free_LDADD) $(LIBS)
+cpp03/can_require_concept_not_applicable_member.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_not_applicable_member$(EXEEXT): $(cpp03_can_require_concept_not_applicable_member_OBJECTS) $(cpp03_can_require_concept_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_not_applicable_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_not_applicable_member_OBJECTS) $(cpp03_can_require_concept_not_applicable_member_LDADD) $(LIBS)
+cpp03/can_require_concept_not_applicable_static.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_not_applicable_static$(EXEEXT): $(cpp03_can_require_concept_not_applicable_static_OBJECTS) $(cpp03_can_require_concept_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_not_applicable_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_not_applicable_static_OBJECTS) $(cpp03_can_require_concept_not_applicable_static_LDADD) $(LIBS)
+cpp03/can_require_concept_not_applicable_unsupported.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_not_applicable_unsupported$(EXEEXT): $(cpp03_can_require_concept_not_applicable_unsupported_OBJECTS) $(cpp03_can_require_concept_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_not_applicable_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_not_applicable_unsupported_OBJECTS) $(cpp03_can_require_concept_not_applicable_unsupported_LDADD) $(LIBS)
+cpp03/can_require_concept_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_static$(EXEEXT): $(cpp03_can_require_concept_static_OBJECTS) $(cpp03_can_require_concept_static_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_static_OBJECTS) $(cpp03_can_require_concept_static_LDADD) $(LIBS)
+cpp03/can_require_concept_unsupported.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_concept_unsupported$(EXEEXT): $(cpp03_can_require_concept_unsupported_OBJECTS) $(cpp03_can_require_concept_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_require_concept_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_concept_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_concept_unsupported_OBJECTS) $(cpp03_can_require_concept_unsupported_LDADD) $(LIBS)
+cpp03/can_require_free.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_free$(EXEEXT): $(cpp03_can_require_free_OBJECTS) $(cpp03_can_require_free_DEPENDENCIES) $(EXTRA_cpp03_can_require_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_free_OBJECTS) $(cpp03_can_require_free_LDADD) $(LIBS)
+cpp03/can_require_member.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_member$(EXEEXT): $(cpp03_can_require_member_OBJECTS) $(cpp03_can_require_member_DEPENDENCIES) $(EXTRA_cpp03_can_require_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_member_OBJECTS) $(cpp03_can_require_member_LDADD) $(LIBS)
+cpp03/can_require_not_applicable_free.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_not_applicable_free$(EXEEXT): $(cpp03_can_require_not_applicable_free_OBJECTS) $(cpp03_can_require_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp03_can_require_not_applicable_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_not_applicable_free_OBJECTS) $(cpp03_can_require_not_applicable_free_LDADD) $(LIBS)
+cpp03/can_require_not_applicable_member.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_not_applicable_member$(EXEEXT): $(cpp03_can_require_not_applicable_member_OBJECTS) $(cpp03_can_require_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp03_can_require_not_applicable_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_not_applicable_member_OBJECTS) $(cpp03_can_require_not_applicable_member_LDADD) $(LIBS)
+cpp03/can_require_not_applicable_static.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_not_applicable_static$(EXEEXT): $(cpp03_can_require_not_applicable_static_OBJECTS) $(cpp03_can_require_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp03_can_require_not_applicable_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_not_applicable_static_OBJECTS) $(cpp03_can_require_not_applicable_static_LDADD) $(LIBS)
+cpp03/can_require_not_applicable_unsupported.$(OBJEXT): \
+ cpp03/$(am__dirstamp) cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_not_applicable_unsupported$(EXEEXT): $(cpp03_can_require_not_applicable_unsupported_OBJECTS) $(cpp03_can_require_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_require_not_applicable_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_not_applicable_unsupported_OBJECTS) $(cpp03_can_require_not_applicable_unsupported_LDADD) $(LIBS)
+cpp03/can_require_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_static$(EXEEXT): $(cpp03_can_require_static_OBJECTS) $(cpp03_can_require_static_DEPENDENCIES) $(EXTRA_cpp03_can_require_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_static_OBJECTS) $(cpp03_can_require_static_LDADD) $(LIBS)
+cpp03/can_require_unsupported.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/can_require_unsupported$(EXEEXT): $(cpp03_can_require_unsupported_OBJECTS) $(cpp03_can_require_unsupported_DEPENDENCIES) $(EXTRA_cpp03_can_require_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/can_require_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_can_require_unsupported_OBJECTS) $(cpp03_can_require_unsupported_LDADD) $(LIBS)
+cpp03/prefer_free_prefer.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/prefer_free_prefer$(EXEEXT): $(cpp03_prefer_free_prefer_OBJECTS) $(cpp03_prefer_free_prefer_DEPENDENCIES) $(EXTRA_cpp03_prefer_free_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/prefer_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_prefer_free_prefer_OBJECTS) $(cpp03_prefer_free_prefer_LDADD) $(LIBS)
+cpp03/prefer_free_require.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/prefer_free_require$(EXEEXT): $(cpp03_prefer_free_require_OBJECTS) $(cpp03_prefer_free_require_DEPENDENCIES) $(EXTRA_cpp03_prefer_free_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/prefer_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_prefer_free_require_OBJECTS) $(cpp03_prefer_free_require_LDADD) $(LIBS)
+cpp03/prefer_member_prefer.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/prefer_member_prefer$(EXEEXT): $(cpp03_prefer_member_prefer_OBJECTS) $(cpp03_prefer_member_prefer_DEPENDENCIES) $(EXTRA_cpp03_prefer_member_prefer_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/prefer_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_prefer_member_prefer_OBJECTS) $(cpp03_prefer_member_prefer_LDADD) $(LIBS)
+cpp03/prefer_member_require.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/prefer_member_require$(EXEEXT): $(cpp03_prefer_member_require_OBJECTS) $(cpp03_prefer_member_require_DEPENDENCIES) $(EXTRA_cpp03_prefer_member_require_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/prefer_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_prefer_member_require_OBJECTS) $(cpp03_prefer_member_require_LDADD) $(LIBS)
+cpp03/prefer_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/prefer_static$(EXEEXT): $(cpp03_prefer_static_OBJECTS) $(cpp03_prefer_static_DEPENDENCIES) $(EXTRA_cpp03_prefer_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/prefer_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_prefer_static_OBJECTS) $(cpp03_prefer_static_LDADD) $(LIBS)
+cpp03/prefer_unsupported.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/prefer_unsupported$(EXEEXT): $(cpp03_prefer_unsupported_OBJECTS) $(cpp03_prefer_unsupported_DEPENDENCIES) $(EXTRA_cpp03_prefer_unsupported_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/prefer_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_prefer_unsupported_OBJECTS) $(cpp03_prefer_unsupported_LDADD) $(LIBS)
+cpp03/query_free.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/query_free$(EXEEXT): $(cpp03_query_free_OBJECTS) $(cpp03_query_free_DEPENDENCIES) $(EXTRA_cpp03_query_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/query_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_query_free_OBJECTS) $(cpp03_query_free_LDADD) $(LIBS)
+cpp03/query_member.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/query_member$(EXEEXT): $(cpp03_query_member_OBJECTS) $(cpp03_query_member_DEPENDENCIES) $(EXTRA_cpp03_query_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/query_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_query_member_OBJECTS) $(cpp03_query_member_LDADD) $(LIBS)
+cpp03/query_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/query_static$(EXEEXT): $(cpp03_query_static_OBJECTS) $(cpp03_query_static_DEPENDENCIES) $(EXTRA_cpp03_query_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/query_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_query_static_OBJECTS) $(cpp03_query_static_LDADD) $(LIBS)
+cpp03/require_concept_free.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/require_concept_free$(EXEEXT): $(cpp03_require_concept_free_OBJECTS) $(cpp03_require_concept_free_DEPENDENCIES) $(EXTRA_cpp03_require_concept_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/require_concept_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_require_concept_free_OBJECTS) $(cpp03_require_concept_free_LDADD) $(LIBS)
+cpp03/require_concept_member.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/require_concept_member$(EXEEXT): $(cpp03_require_concept_member_OBJECTS) $(cpp03_require_concept_member_DEPENDENCIES) $(EXTRA_cpp03_require_concept_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/require_concept_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_require_concept_member_OBJECTS) $(cpp03_require_concept_member_LDADD) $(LIBS)
+cpp03/require_concept_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/require_concept_static$(EXEEXT): $(cpp03_require_concept_static_OBJECTS) $(cpp03_require_concept_static_DEPENDENCIES) $(EXTRA_cpp03_require_concept_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/require_concept_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_require_concept_static_OBJECTS) $(cpp03_require_concept_static_LDADD) $(LIBS)
+cpp03/require_free.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/require_free$(EXEEXT): $(cpp03_require_free_OBJECTS) $(cpp03_require_free_DEPENDENCIES) $(EXTRA_cpp03_require_free_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/require_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_require_free_OBJECTS) $(cpp03_require_free_LDADD) $(LIBS)
+cpp03/require_member.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/require_member$(EXEEXT): $(cpp03_require_member_OBJECTS) $(cpp03_require_member_DEPENDENCIES) $(EXTRA_cpp03_require_member_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/require_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_require_member_OBJECTS) $(cpp03_require_member_LDADD) $(LIBS)
+cpp03/require_static.$(OBJEXT): cpp03/$(am__dirstamp) \
+ cpp03/$(DEPDIR)/$(am__dirstamp)
+
+cpp03/require_static$(EXEEXT): $(cpp03_require_static_OBJECTS) $(cpp03_require_static_DEPENDENCIES) $(EXTRA_cpp03_require_static_DEPENDENCIES) cpp03/$(am__dirstamp)
+ @rm -f cpp03/require_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp03_require_static_OBJECTS) $(cpp03_require_static_LDADD) $(LIBS)
+cpp11/$(am__dirstamp):
+ @$(MKDIR_P) cpp11
+ @: > cpp11/$(am__dirstamp)
+cpp11/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) cpp11/$(DEPDIR)
+ @: > cpp11/$(DEPDIR)/$(am__dirstamp)
+cpp11/can_prefer_free_prefer.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_free_prefer$(EXEEXT): $(cpp11_can_prefer_free_prefer_OBJECTS) $(cpp11_can_prefer_free_prefer_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_free_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_free_prefer_OBJECTS) $(cpp11_can_prefer_free_prefer_LDADD) $(LIBS)
+cpp11/can_prefer_free_require.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_free_require$(EXEEXT): $(cpp11_can_prefer_free_require_OBJECTS) $(cpp11_can_prefer_free_require_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_free_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_free_require_OBJECTS) $(cpp11_can_prefer_free_require_LDADD) $(LIBS)
+cpp11/can_prefer_member_prefer.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_member_prefer$(EXEEXT): $(cpp11_can_prefer_member_prefer_OBJECTS) $(cpp11_can_prefer_member_prefer_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_member_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_member_prefer_OBJECTS) $(cpp11_can_prefer_member_prefer_LDADD) $(LIBS)
+cpp11/can_prefer_member_require.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_member_require$(EXEEXT): $(cpp11_can_prefer_member_require_OBJECTS) $(cpp11_can_prefer_member_require_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_member_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_member_require_OBJECTS) $(cpp11_can_prefer_member_require_LDADD) $(LIBS)
+cpp11/can_prefer_not_applicable_free_prefer.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_applicable_free_prefer$(EXEEXT): $(cpp11_can_prefer_not_applicable_free_prefer_OBJECTS) $(cpp11_can_prefer_not_applicable_free_prefer_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_applicable_free_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_applicable_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_applicable_free_prefer_OBJECTS) $(cpp11_can_prefer_not_applicable_free_prefer_LDADD) $(LIBS)
+cpp11/can_prefer_not_applicable_free_require.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_applicable_free_require$(EXEEXT): $(cpp11_can_prefer_not_applicable_free_require_OBJECTS) $(cpp11_can_prefer_not_applicable_free_require_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_applicable_free_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_applicable_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_applicable_free_require_OBJECTS) $(cpp11_can_prefer_not_applicable_free_require_LDADD) $(LIBS)
+cpp11/can_prefer_not_applicable_member_prefer.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_applicable_member_prefer$(EXEEXT): $(cpp11_can_prefer_not_applicable_member_prefer_OBJECTS) $(cpp11_can_prefer_not_applicable_member_prefer_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_applicable_member_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_applicable_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_applicable_member_prefer_OBJECTS) $(cpp11_can_prefer_not_applicable_member_prefer_LDADD) $(LIBS)
+cpp11/can_prefer_not_applicable_member_require.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_applicable_member_require$(EXEEXT): $(cpp11_can_prefer_not_applicable_member_require_OBJECTS) $(cpp11_can_prefer_not_applicable_member_require_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_applicable_member_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_applicable_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_applicable_member_require_OBJECTS) $(cpp11_can_prefer_not_applicable_member_require_LDADD) $(LIBS)
+cpp11/can_prefer_not_applicable_static.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_applicable_static$(EXEEXT): $(cpp11_can_prefer_not_applicable_static_OBJECTS) $(cpp11_can_prefer_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_applicable_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_applicable_static_OBJECTS) $(cpp11_can_prefer_not_applicable_static_LDADD) $(LIBS)
+cpp11/can_prefer_not_applicable_unsupported.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_applicable_unsupported$(EXEEXT): $(cpp11_can_prefer_not_applicable_unsupported_OBJECTS) $(cpp11_can_prefer_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_applicable_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_applicable_unsupported_OBJECTS) $(cpp11_can_prefer_not_applicable_unsupported_LDADD) $(LIBS)
+cpp11/can_prefer_not_preferable_free_prefer.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_preferable_free_prefer$(EXEEXT): $(cpp11_can_prefer_not_preferable_free_prefer_OBJECTS) $(cpp11_can_prefer_not_preferable_free_prefer_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_preferable_free_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_preferable_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_preferable_free_prefer_OBJECTS) $(cpp11_can_prefer_not_preferable_free_prefer_LDADD) $(LIBS)
+cpp11/can_prefer_not_preferable_free_require.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_preferable_free_require$(EXEEXT): $(cpp11_can_prefer_not_preferable_free_require_OBJECTS) $(cpp11_can_prefer_not_preferable_free_require_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_preferable_free_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_preferable_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_preferable_free_require_OBJECTS) $(cpp11_can_prefer_not_preferable_free_require_LDADD) $(LIBS)
+cpp11/can_prefer_not_preferable_member_prefer.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_preferable_member_prefer$(EXEEXT): $(cpp11_can_prefer_not_preferable_member_prefer_OBJECTS) $(cpp11_can_prefer_not_preferable_member_prefer_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_preferable_member_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_preferable_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_preferable_member_prefer_OBJECTS) $(cpp11_can_prefer_not_preferable_member_prefer_LDADD) $(LIBS)
+cpp11/can_prefer_not_preferable_member_require.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_preferable_member_require$(EXEEXT): $(cpp11_can_prefer_not_preferable_member_require_OBJECTS) $(cpp11_can_prefer_not_preferable_member_require_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_preferable_member_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_preferable_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_preferable_member_require_OBJECTS) $(cpp11_can_prefer_not_preferable_member_require_LDADD) $(LIBS)
+cpp11/can_prefer_not_preferable_static.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_preferable_static$(EXEEXT): $(cpp11_can_prefer_not_preferable_static_OBJECTS) $(cpp11_can_prefer_not_preferable_static_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_preferable_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_preferable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_preferable_static_OBJECTS) $(cpp11_can_prefer_not_preferable_static_LDADD) $(LIBS)
+cpp11/can_prefer_not_preferable_unsupported.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_not_preferable_unsupported$(EXEEXT): $(cpp11_can_prefer_not_preferable_unsupported_OBJECTS) $(cpp11_can_prefer_not_preferable_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_not_preferable_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_not_preferable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_not_preferable_unsupported_OBJECTS) $(cpp11_can_prefer_not_preferable_unsupported_LDADD) $(LIBS)
+cpp11/can_prefer_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_static$(EXEEXT): $(cpp11_can_prefer_static_OBJECTS) $(cpp11_can_prefer_static_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_static_OBJECTS) $(cpp11_can_prefer_static_LDADD) $(LIBS)
+cpp11/can_prefer_unsupported.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_prefer_unsupported$(EXEEXT): $(cpp11_can_prefer_unsupported_OBJECTS) $(cpp11_can_prefer_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_prefer_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_prefer_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_prefer_unsupported_OBJECTS) $(cpp11_can_prefer_unsupported_LDADD) $(LIBS)
+cpp11/can_query_free.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_free$(EXEEXT): $(cpp11_can_query_free_OBJECTS) $(cpp11_can_query_free_DEPENDENCIES) $(EXTRA_cpp11_can_query_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_free_OBJECTS) $(cpp11_can_query_free_LDADD) $(LIBS)
+cpp11/can_query_member.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_member$(EXEEXT): $(cpp11_can_query_member_OBJECTS) $(cpp11_can_query_member_DEPENDENCIES) $(EXTRA_cpp11_can_query_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_member_OBJECTS) $(cpp11_can_query_member_LDADD) $(LIBS)
+cpp11/can_query_not_applicable_free.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_not_applicable_free$(EXEEXT): $(cpp11_can_query_not_applicable_free_OBJECTS) $(cpp11_can_query_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp11_can_query_not_applicable_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_not_applicable_free_OBJECTS) $(cpp11_can_query_not_applicable_free_LDADD) $(LIBS)
+cpp11/can_query_not_applicable_member.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_not_applicable_member$(EXEEXT): $(cpp11_can_query_not_applicable_member_OBJECTS) $(cpp11_can_query_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp11_can_query_not_applicable_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_not_applicable_member_OBJECTS) $(cpp11_can_query_not_applicable_member_LDADD) $(LIBS)
+cpp11/can_query_not_applicable_static.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_not_applicable_static$(EXEEXT): $(cpp11_can_query_not_applicable_static_OBJECTS) $(cpp11_can_query_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp11_can_query_not_applicable_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_not_applicable_static_OBJECTS) $(cpp11_can_query_not_applicable_static_LDADD) $(LIBS)
+cpp11/can_query_not_applicable_unsupported.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_not_applicable_unsupported$(EXEEXT): $(cpp11_can_query_not_applicable_unsupported_OBJECTS) $(cpp11_can_query_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_query_not_applicable_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_not_applicable_unsupported_OBJECTS) $(cpp11_can_query_not_applicable_unsupported_LDADD) $(LIBS)
+cpp11/can_query_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_static$(EXEEXT): $(cpp11_can_query_static_OBJECTS) $(cpp11_can_query_static_DEPENDENCIES) $(EXTRA_cpp11_can_query_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_static_OBJECTS) $(cpp11_can_query_static_LDADD) $(LIBS)
+cpp11/can_query_unsupported.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_query_unsupported$(EXEEXT): $(cpp11_can_query_unsupported_OBJECTS) $(cpp11_can_query_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_query_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_query_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_query_unsupported_OBJECTS) $(cpp11_can_query_unsupported_LDADD) $(LIBS)
+cpp11/can_require_concept_free.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_free$(EXEEXT): $(cpp11_can_require_concept_free_OBJECTS) $(cpp11_can_require_concept_free_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_free_OBJECTS) $(cpp11_can_require_concept_free_LDADD) $(LIBS)
+cpp11/can_require_concept_member.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_member$(EXEEXT): $(cpp11_can_require_concept_member_OBJECTS) $(cpp11_can_require_concept_member_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_member_OBJECTS) $(cpp11_can_require_concept_member_LDADD) $(LIBS)
+cpp11/can_require_concept_not_applicable_free.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_not_applicable_free$(EXEEXT): $(cpp11_can_require_concept_not_applicable_free_OBJECTS) $(cpp11_can_require_concept_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_not_applicable_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_not_applicable_free_OBJECTS) $(cpp11_can_require_concept_not_applicable_free_LDADD) $(LIBS)
+cpp11/can_require_concept_not_applicable_member.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_not_applicable_member$(EXEEXT): $(cpp11_can_require_concept_not_applicable_member_OBJECTS) $(cpp11_can_require_concept_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_not_applicable_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_not_applicable_member_OBJECTS) $(cpp11_can_require_concept_not_applicable_member_LDADD) $(LIBS)
+cpp11/can_require_concept_not_applicable_static.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_not_applicable_static$(EXEEXT): $(cpp11_can_require_concept_not_applicable_static_OBJECTS) $(cpp11_can_require_concept_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_not_applicable_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_not_applicable_static_OBJECTS) $(cpp11_can_require_concept_not_applicable_static_LDADD) $(LIBS)
+cpp11/can_require_concept_not_applicable_unsupported.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_not_applicable_unsupported$(EXEEXT): $(cpp11_can_require_concept_not_applicable_unsupported_OBJECTS) $(cpp11_can_require_concept_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_not_applicable_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_not_applicable_unsupported_OBJECTS) $(cpp11_can_require_concept_not_applicable_unsupported_LDADD) $(LIBS)
+cpp11/can_require_concept_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_static$(EXEEXT): $(cpp11_can_require_concept_static_OBJECTS) $(cpp11_can_require_concept_static_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_static_OBJECTS) $(cpp11_can_require_concept_static_LDADD) $(LIBS)
+cpp11/can_require_concept_unsupported.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_concept_unsupported$(EXEEXT): $(cpp11_can_require_concept_unsupported_OBJECTS) $(cpp11_can_require_concept_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_require_concept_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_concept_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_concept_unsupported_OBJECTS) $(cpp11_can_require_concept_unsupported_LDADD) $(LIBS)
+cpp11/can_require_free.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_free$(EXEEXT): $(cpp11_can_require_free_OBJECTS) $(cpp11_can_require_free_DEPENDENCIES) $(EXTRA_cpp11_can_require_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_free_OBJECTS) $(cpp11_can_require_free_LDADD) $(LIBS)
+cpp11/can_require_member.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_member$(EXEEXT): $(cpp11_can_require_member_OBJECTS) $(cpp11_can_require_member_DEPENDENCIES) $(EXTRA_cpp11_can_require_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_member_OBJECTS) $(cpp11_can_require_member_LDADD) $(LIBS)
+cpp11/can_require_not_applicable_free.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_not_applicable_free$(EXEEXT): $(cpp11_can_require_not_applicable_free_OBJECTS) $(cpp11_can_require_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp11_can_require_not_applicable_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_not_applicable_free_OBJECTS) $(cpp11_can_require_not_applicable_free_LDADD) $(LIBS)
+cpp11/can_require_not_applicable_member.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_not_applicable_member$(EXEEXT): $(cpp11_can_require_not_applicable_member_OBJECTS) $(cpp11_can_require_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp11_can_require_not_applicable_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_not_applicable_member_OBJECTS) $(cpp11_can_require_not_applicable_member_LDADD) $(LIBS)
+cpp11/can_require_not_applicable_static.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_not_applicable_static$(EXEEXT): $(cpp11_can_require_not_applicable_static_OBJECTS) $(cpp11_can_require_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp11_can_require_not_applicable_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_not_applicable_static_OBJECTS) $(cpp11_can_require_not_applicable_static_LDADD) $(LIBS)
+cpp11/can_require_not_applicable_unsupported.$(OBJEXT): \
+ cpp11/$(am__dirstamp) cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_not_applicable_unsupported$(EXEEXT): $(cpp11_can_require_not_applicable_unsupported_OBJECTS) $(cpp11_can_require_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_require_not_applicable_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_not_applicable_unsupported_OBJECTS) $(cpp11_can_require_not_applicable_unsupported_LDADD) $(LIBS)
+cpp11/can_require_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_static$(EXEEXT): $(cpp11_can_require_static_OBJECTS) $(cpp11_can_require_static_DEPENDENCIES) $(EXTRA_cpp11_can_require_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_static_OBJECTS) $(cpp11_can_require_static_LDADD) $(LIBS)
+cpp11/can_require_unsupported.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/can_require_unsupported$(EXEEXT): $(cpp11_can_require_unsupported_OBJECTS) $(cpp11_can_require_unsupported_DEPENDENCIES) $(EXTRA_cpp11_can_require_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/can_require_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_can_require_unsupported_OBJECTS) $(cpp11_can_require_unsupported_LDADD) $(LIBS)
+cpp11/prefer_free_prefer.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/prefer_free_prefer$(EXEEXT): $(cpp11_prefer_free_prefer_OBJECTS) $(cpp11_prefer_free_prefer_DEPENDENCIES) $(EXTRA_cpp11_prefer_free_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/prefer_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_prefer_free_prefer_OBJECTS) $(cpp11_prefer_free_prefer_LDADD) $(LIBS)
+cpp11/prefer_free_require.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/prefer_free_require$(EXEEXT): $(cpp11_prefer_free_require_OBJECTS) $(cpp11_prefer_free_require_DEPENDENCIES) $(EXTRA_cpp11_prefer_free_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/prefer_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_prefer_free_require_OBJECTS) $(cpp11_prefer_free_require_LDADD) $(LIBS)
+cpp11/prefer_member_prefer.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/prefer_member_prefer$(EXEEXT): $(cpp11_prefer_member_prefer_OBJECTS) $(cpp11_prefer_member_prefer_DEPENDENCIES) $(EXTRA_cpp11_prefer_member_prefer_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/prefer_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_prefer_member_prefer_OBJECTS) $(cpp11_prefer_member_prefer_LDADD) $(LIBS)
+cpp11/prefer_member_require.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/prefer_member_require$(EXEEXT): $(cpp11_prefer_member_require_OBJECTS) $(cpp11_prefer_member_require_DEPENDENCIES) $(EXTRA_cpp11_prefer_member_require_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/prefer_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_prefer_member_require_OBJECTS) $(cpp11_prefer_member_require_LDADD) $(LIBS)
+cpp11/prefer_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/prefer_static$(EXEEXT): $(cpp11_prefer_static_OBJECTS) $(cpp11_prefer_static_DEPENDENCIES) $(EXTRA_cpp11_prefer_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/prefer_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_prefer_static_OBJECTS) $(cpp11_prefer_static_LDADD) $(LIBS)
+cpp11/prefer_unsupported.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/prefer_unsupported$(EXEEXT): $(cpp11_prefer_unsupported_OBJECTS) $(cpp11_prefer_unsupported_DEPENDENCIES) $(EXTRA_cpp11_prefer_unsupported_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/prefer_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_prefer_unsupported_OBJECTS) $(cpp11_prefer_unsupported_LDADD) $(LIBS)
+cpp11/query_free.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/query_free$(EXEEXT): $(cpp11_query_free_OBJECTS) $(cpp11_query_free_DEPENDENCIES) $(EXTRA_cpp11_query_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/query_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_query_free_OBJECTS) $(cpp11_query_free_LDADD) $(LIBS)
+cpp11/query_member.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/query_member$(EXEEXT): $(cpp11_query_member_OBJECTS) $(cpp11_query_member_DEPENDENCIES) $(EXTRA_cpp11_query_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/query_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_query_member_OBJECTS) $(cpp11_query_member_LDADD) $(LIBS)
+cpp11/query_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/query_static$(EXEEXT): $(cpp11_query_static_OBJECTS) $(cpp11_query_static_DEPENDENCIES) $(EXTRA_cpp11_query_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/query_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_query_static_OBJECTS) $(cpp11_query_static_LDADD) $(LIBS)
+cpp11/require_concept_free.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/require_concept_free$(EXEEXT): $(cpp11_require_concept_free_OBJECTS) $(cpp11_require_concept_free_DEPENDENCIES) $(EXTRA_cpp11_require_concept_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/require_concept_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_require_concept_free_OBJECTS) $(cpp11_require_concept_free_LDADD) $(LIBS)
+cpp11/require_concept_member.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/require_concept_member$(EXEEXT): $(cpp11_require_concept_member_OBJECTS) $(cpp11_require_concept_member_DEPENDENCIES) $(EXTRA_cpp11_require_concept_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/require_concept_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_require_concept_member_OBJECTS) $(cpp11_require_concept_member_LDADD) $(LIBS)
+cpp11/require_concept_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/require_concept_static$(EXEEXT): $(cpp11_require_concept_static_OBJECTS) $(cpp11_require_concept_static_DEPENDENCIES) $(EXTRA_cpp11_require_concept_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/require_concept_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_require_concept_static_OBJECTS) $(cpp11_require_concept_static_LDADD) $(LIBS)
+cpp11/require_free.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/require_free$(EXEEXT): $(cpp11_require_free_OBJECTS) $(cpp11_require_free_DEPENDENCIES) $(EXTRA_cpp11_require_free_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/require_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_require_free_OBJECTS) $(cpp11_require_free_LDADD) $(LIBS)
+cpp11/require_member.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/require_member$(EXEEXT): $(cpp11_require_member_OBJECTS) $(cpp11_require_member_DEPENDENCIES) $(EXTRA_cpp11_require_member_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/require_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_require_member_OBJECTS) $(cpp11_require_member_LDADD) $(LIBS)
+cpp11/require_static.$(OBJEXT): cpp11/$(am__dirstamp) \
+ cpp11/$(DEPDIR)/$(am__dirstamp)
+
+cpp11/require_static$(EXEEXT): $(cpp11_require_static_OBJECTS) $(cpp11_require_static_DEPENDENCIES) $(EXTRA_cpp11_require_static_DEPENDENCIES) cpp11/$(am__dirstamp)
+ @rm -f cpp11/require_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp11_require_static_OBJECTS) $(cpp11_require_static_LDADD) $(LIBS)
+cpp14/$(am__dirstamp):
+ @$(MKDIR_P) cpp14
+ @: > cpp14/$(am__dirstamp)
+cpp14/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) cpp14/$(DEPDIR)
+ @: > cpp14/$(DEPDIR)/$(am__dirstamp)
+cpp14/can_prefer_free_prefer.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_free_prefer$(EXEEXT): $(cpp14_can_prefer_free_prefer_OBJECTS) $(cpp14_can_prefer_free_prefer_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_free_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_free_prefer_OBJECTS) $(cpp14_can_prefer_free_prefer_LDADD) $(LIBS)
+cpp14/can_prefer_free_require.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_free_require$(EXEEXT): $(cpp14_can_prefer_free_require_OBJECTS) $(cpp14_can_prefer_free_require_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_free_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_free_require_OBJECTS) $(cpp14_can_prefer_free_require_LDADD) $(LIBS)
+cpp14/can_prefer_member_prefer.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_member_prefer$(EXEEXT): $(cpp14_can_prefer_member_prefer_OBJECTS) $(cpp14_can_prefer_member_prefer_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_member_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_member_prefer_OBJECTS) $(cpp14_can_prefer_member_prefer_LDADD) $(LIBS)
+cpp14/can_prefer_member_require.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_member_require$(EXEEXT): $(cpp14_can_prefer_member_require_OBJECTS) $(cpp14_can_prefer_member_require_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_member_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_member_require_OBJECTS) $(cpp14_can_prefer_member_require_LDADD) $(LIBS)
+cpp14/can_prefer_not_applicable_free_prefer.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_applicable_free_prefer$(EXEEXT): $(cpp14_can_prefer_not_applicable_free_prefer_OBJECTS) $(cpp14_can_prefer_not_applicable_free_prefer_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_applicable_free_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_applicable_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_applicable_free_prefer_OBJECTS) $(cpp14_can_prefer_not_applicable_free_prefer_LDADD) $(LIBS)
+cpp14/can_prefer_not_applicable_free_require.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_applicable_free_require$(EXEEXT): $(cpp14_can_prefer_not_applicable_free_require_OBJECTS) $(cpp14_can_prefer_not_applicable_free_require_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_applicable_free_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_applicable_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_applicable_free_require_OBJECTS) $(cpp14_can_prefer_not_applicable_free_require_LDADD) $(LIBS)
+cpp14/can_prefer_not_applicable_member_prefer.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_applicable_member_prefer$(EXEEXT): $(cpp14_can_prefer_not_applicable_member_prefer_OBJECTS) $(cpp14_can_prefer_not_applicable_member_prefer_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_applicable_member_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_applicable_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_applicable_member_prefer_OBJECTS) $(cpp14_can_prefer_not_applicable_member_prefer_LDADD) $(LIBS)
+cpp14/can_prefer_not_applicable_member_require.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_applicable_member_require$(EXEEXT): $(cpp14_can_prefer_not_applicable_member_require_OBJECTS) $(cpp14_can_prefer_not_applicable_member_require_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_applicable_member_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_applicable_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_applicable_member_require_OBJECTS) $(cpp14_can_prefer_not_applicable_member_require_LDADD) $(LIBS)
+cpp14/can_prefer_not_applicable_static.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_applicable_static$(EXEEXT): $(cpp14_can_prefer_not_applicable_static_OBJECTS) $(cpp14_can_prefer_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_applicable_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_applicable_static_OBJECTS) $(cpp14_can_prefer_not_applicable_static_LDADD) $(LIBS)
+cpp14/can_prefer_not_applicable_unsupported.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_applicable_unsupported$(EXEEXT): $(cpp14_can_prefer_not_applicable_unsupported_OBJECTS) $(cpp14_can_prefer_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_applicable_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_applicable_unsupported_OBJECTS) $(cpp14_can_prefer_not_applicable_unsupported_LDADD) $(LIBS)
+cpp14/can_prefer_not_preferable_free_prefer.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_preferable_free_prefer$(EXEEXT): $(cpp14_can_prefer_not_preferable_free_prefer_OBJECTS) $(cpp14_can_prefer_not_preferable_free_prefer_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_preferable_free_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_preferable_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_preferable_free_prefer_OBJECTS) $(cpp14_can_prefer_not_preferable_free_prefer_LDADD) $(LIBS)
+cpp14/can_prefer_not_preferable_free_require.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_preferable_free_require$(EXEEXT): $(cpp14_can_prefer_not_preferable_free_require_OBJECTS) $(cpp14_can_prefer_not_preferable_free_require_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_preferable_free_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_preferable_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_preferable_free_require_OBJECTS) $(cpp14_can_prefer_not_preferable_free_require_LDADD) $(LIBS)
+cpp14/can_prefer_not_preferable_member_prefer.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_preferable_member_prefer$(EXEEXT): $(cpp14_can_prefer_not_preferable_member_prefer_OBJECTS) $(cpp14_can_prefer_not_preferable_member_prefer_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_preferable_member_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_preferable_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_preferable_member_prefer_OBJECTS) $(cpp14_can_prefer_not_preferable_member_prefer_LDADD) $(LIBS)
+cpp14/can_prefer_not_preferable_member_require.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_preferable_member_require$(EXEEXT): $(cpp14_can_prefer_not_preferable_member_require_OBJECTS) $(cpp14_can_prefer_not_preferable_member_require_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_preferable_member_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_preferable_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_preferable_member_require_OBJECTS) $(cpp14_can_prefer_not_preferable_member_require_LDADD) $(LIBS)
+cpp14/can_prefer_not_preferable_static.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_preferable_static$(EXEEXT): $(cpp14_can_prefer_not_preferable_static_OBJECTS) $(cpp14_can_prefer_not_preferable_static_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_preferable_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_preferable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_preferable_static_OBJECTS) $(cpp14_can_prefer_not_preferable_static_LDADD) $(LIBS)
+cpp14/can_prefer_not_preferable_unsupported.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_not_preferable_unsupported$(EXEEXT): $(cpp14_can_prefer_not_preferable_unsupported_OBJECTS) $(cpp14_can_prefer_not_preferable_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_not_preferable_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_not_preferable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_not_preferable_unsupported_OBJECTS) $(cpp14_can_prefer_not_preferable_unsupported_LDADD) $(LIBS)
+cpp14/can_prefer_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_static$(EXEEXT): $(cpp14_can_prefer_static_OBJECTS) $(cpp14_can_prefer_static_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_static_OBJECTS) $(cpp14_can_prefer_static_LDADD) $(LIBS)
+cpp14/can_prefer_unsupported.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_prefer_unsupported$(EXEEXT): $(cpp14_can_prefer_unsupported_OBJECTS) $(cpp14_can_prefer_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_prefer_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_prefer_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_prefer_unsupported_OBJECTS) $(cpp14_can_prefer_unsupported_LDADD) $(LIBS)
+cpp14/can_query_free.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_free$(EXEEXT): $(cpp14_can_query_free_OBJECTS) $(cpp14_can_query_free_DEPENDENCIES) $(EXTRA_cpp14_can_query_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_free_OBJECTS) $(cpp14_can_query_free_LDADD) $(LIBS)
+cpp14/can_query_member.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_member$(EXEEXT): $(cpp14_can_query_member_OBJECTS) $(cpp14_can_query_member_DEPENDENCIES) $(EXTRA_cpp14_can_query_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_member_OBJECTS) $(cpp14_can_query_member_LDADD) $(LIBS)
+cpp14/can_query_not_applicable_free.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_not_applicable_free$(EXEEXT): $(cpp14_can_query_not_applicable_free_OBJECTS) $(cpp14_can_query_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp14_can_query_not_applicable_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_not_applicable_free_OBJECTS) $(cpp14_can_query_not_applicable_free_LDADD) $(LIBS)
+cpp14/can_query_not_applicable_member.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_not_applicable_member$(EXEEXT): $(cpp14_can_query_not_applicable_member_OBJECTS) $(cpp14_can_query_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp14_can_query_not_applicable_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_not_applicable_member_OBJECTS) $(cpp14_can_query_not_applicable_member_LDADD) $(LIBS)
+cpp14/can_query_not_applicable_static.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_not_applicable_static$(EXEEXT): $(cpp14_can_query_not_applicable_static_OBJECTS) $(cpp14_can_query_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp14_can_query_not_applicable_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_not_applicable_static_OBJECTS) $(cpp14_can_query_not_applicable_static_LDADD) $(LIBS)
+cpp14/can_query_not_applicable_unsupported.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_not_applicable_unsupported$(EXEEXT): $(cpp14_can_query_not_applicable_unsupported_OBJECTS) $(cpp14_can_query_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_query_not_applicable_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_not_applicable_unsupported_OBJECTS) $(cpp14_can_query_not_applicable_unsupported_LDADD) $(LIBS)
+cpp14/can_query_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_static$(EXEEXT): $(cpp14_can_query_static_OBJECTS) $(cpp14_can_query_static_DEPENDENCIES) $(EXTRA_cpp14_can_query_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_static_OBJECTS) $(cpp14_can_query_static_LDADD) $(LIBS)
+cpp14/can_query_unsupported.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_query_unsupported$(EXEEXT): $(cpp14_can_query_unsupported_OBJECTS) $(cpp14_can_query_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_query_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_query_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_query_unsupported_OBJECTS) $(cpp14_can_query_unsupported_LDADD) $(LIBS)
+cpp14/can_require_concept_free.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_free$(EXEEXT): $(cpp14_can_require_concept_free_OBJECTS) $(cpp14_can_require_concept_free_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_free_OBJECTS) $(cpp14_can_require_concept_free_LDADD) $(LIBS)
+cpp14/can_require_concept_member.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_member$(EXEEXT): $(cpp14_can_require_concept_member_OBJECTS) $(cpp14_can_require_concept_member_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_member_OBJECTS) $(cpp14_can_require_concept_member_LDADD) $(LIBS)
+cpp14/can_require_concept_not_applicable_free.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_not_applicable_free$(EXEEXT): $(cpp14_can_require_concept_not_applicable_free_OBJECTS) $(cpp14_can_require_concept_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_not_applicable_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_not_applicable_free_OBJECTS) $(cpp14_can_require_concept_not_applicable_free_LDADD) $(LIBS)
+cpp14/can_require_concept_not_applicable_member.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_not_applicable_member$(EXEEXT): $(cpp14_can_require_concept_not_applicable_member_OBJECTS) $(cpp14_can_require_concept_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_not_applicable_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_not_applicable_member_OBJECTS) $(cpp14_can_require_concept_not_applicable_member_LDADD) $(LIBS)
+cpp14/can_require_concept_not_applicable_static.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_not_applicable_static$(EXEEXT): $(cpp14_can_require_concept_not_applicable_static_OBJECTS) $(cpp14_can_require_concept_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_not_applicable_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_not_applicable_static_OBJECTS) $(cpp14_can_require_concept_not_applicable_static_LDADD) $(LIBS)
+cpp14/can_require_concept_not_applicable_unsupported.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_not_applicable_unsupported$(EXEEXT): $(cpp14_can_require_concept_not_applicable_unsupported_OBJECTS) $(cpp14_can_require_concept_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_not_applicable_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_not_applicable_unsupported_OBJECTS) $(cpp14_can_require_concept_not_applicable_unsupported_LDADD) $(LIBS)
+cpp14/can_require_concept_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_static$(EXEEXT): $(cpp14_can_require_concept_static_OBJECTS) $(cpp14_can_require_concept_static_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_static_OBJECTS) $(cpp14_can_require_concept_static_LDADD) $(LIBS)
+cpp14/can_require_concept_unsupported.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_concept_unsupported$(EXEEXT): $(cpp14_can_require_concept_unsupported_OBJECTS) $(cpp14_can_require_concept_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_require_concept_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_concept_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_concept_unsupported_OBJECTS) $(cpp14_can_require_concept_unsupported_LDADD) $(LIBS)
+cpp14/can_require_free.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_free$(EXEEXT): $(cpp14_can_require_free_OBJECTS) $(cpp14_can_require_free_DEPENDENCIES) $(EXTRA_cpp14_can_require_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_free_OBJECTS) $(cpp14_can_require_free_LDADD) $(LIBS)
+cpp14/can_require_member.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_member$(EXEEXT): $(cpp14_can_require_member_OBJECTS) $(cpp14_can_require_member_DEPENDENCIES) $(EXTRA_cpp14_can_require_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_member_OBJECTS) $(cpp14_can_require_member_LDADD) $(LIBS)
+cpp14/can_require_not_applicable_free.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_not_applicable_free$(EXEEXT): $(cpp14_can_require_not_applicable_free_OBJECTS) $(cpp14_can_require_not_applicable_free_DEPENDENCIES) $(EXTRA_cpp14_can_require_not_applicable_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_not_applicable_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_not_applicable_free_OBJECTS) $(cpp14_can_require_not_applicable_free_LDADD) $(LIBS)
+cpp14/can_require_not_applicable_member.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_not_applicable_member$(EXEEXT): $(cpp14_can_require_not_applicable_member_OBJECTS) $(cpp14_can_require_not_applicable_member_DEPENDENCIES) $(EXTRA_cpp14_can_require_not_applicable_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_not_applicable_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_not_applicable_member_OBJECTS) $(cpp14_can_require_not_applicable_member_LDADD) $(LIBS)
+cpp14/can_require_not_applicable_static.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_not_applicable_static$(EXEEXT): $(cpp14_can_require_not_applicable_static_OBJECTS) $(cpp14_can_require_not_applicable_static_DEPENDENCIES) $(EXTRA_cpp14_can_require_not_applicable_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_not_applicable_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_not_applicable_static_OBJECTS) $(cpp14_can_require_not_applicable_static_LDADD) $(LIBS)
+cpp14/can_require_not_applicable_unsupported.$(OBJEXT): \
+ cpp14/$(am__dirstamp) cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_not_applicable_unsupported$(EXEEXT): $(cpp14_can_require_not_applicable_unsupported_OBJECTS) $(cpp14_can_require_not_applicable_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_require_not_applicable_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_not_applicable_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_not_applicable_unsupported_OBJECTS) $(cpp14_can_require_not_applicable_unsupported_LDADD) $(LIBS)
+cpp14/can_require_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_static$(EXEEXT): $(cpp14_can_require_static_OBJECTS) $(cpp14_can_require_static_DEPENDENCIES) $(EXTRA_cpp14_can_require_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_static_OBJECTS) $(cpp14_can_require_static_LDADD) $(LIBS)
+cpp14/can_require_unsupported.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/can_require_unsupported$(EXEEXT): $(cpp14_can_require_unsupported_OBJECTS) $(cpp14_can_require_unsupported_DEPENDENCIES) $(EXTRA_cpp14_can_require_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/can_require_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_can_require_unsupported_OBJECTS) $(cpp14_can_require_unsupported_LDADD) $(LIBS)
+cpp14/prefer_free_prefer.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/prefer_free_prefer$(EXEEXT): $(cpp14_prefer_free_prefer_OBJECTS) $(cpp14_prefer_free_prefer_DEPENDENCIES) $(EXTRA_cpp14_prefer_free_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/prefer_free_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_prefer_free_prefer_OBJECTS) $(cpp14_prefer_free_prefer_LDADD) $(LIBS)
+cpp14/prefer_free_require.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/prefer_free_require$(EXEEXT): $(cpp14_prefer_free_require_OBJECTS) $(cpp14_prefer_free_require_DEPENDENCIES) $(EXTRA_cpp14_prefer_free_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/prefer_free_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_prefer_free_require_OBJECTS) $(cpp14_prefer_free_require_LDADD) $(LIBS)
+cpp14/prefer_member_prefer.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/prefer_member_prefer$(EXEEXT): $(cpp14_prefer_member_prefer_OBJECTS) $(cpp14_prefer_member_prefer_DEPENDENCIES) $(EXTRA_cpp14_prefer_member_prefer_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/prefer_member_prefer$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_prefer_member_prefer_OBJECTS) $(cpp14_prefer_member_prefer_LDADD) $(LIBS)
+cpp14/prefer_member_require.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/prefer_member_require$(EXEEXT): $(cpp14_prefer_member_require_OBJECTS) $(cpp14_prefer_member_require_DEPENDENCIES) $(EXTRA_cpp14_prefer_member_require_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/prefer_member_require$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_prefer_member_require_OBJECTS) $(cpp14_prefer_member_require_LDADD) $(LIBS)
+cpp14/prefer_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/prefer_static$(EXEEXT): $(cpp14_prefer_static_OBJECTS) $(cpp14_prefer_static_DEPENDENCIES) $(EXTRA_cpp14_prefer_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/prefer_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_prefer_static_OBJECTS) $(cpp14_prefer_static_LDADD) $(LIBS)
+cpp14/prefer_unsupported.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/prefer_unsupported$(EXEEXT): $(cpp14_prefer_unsupported_OBJECTS) $(cpp14_prefer_unsupported_DEPENDENCIES) $(EXTRA_cpp14_prefer_unsupported_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/prefer_unsupported$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_prefer_unsupported_OBJECTS) $(cpp14_prefer_unsupported_LDADD) $(LIBS)
+cpp14/query_free.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/query_free$(EXEEXT): $(cpp14_query_free_OBJECTS) $(cpp14_query_free_DEPENDENCIES) $(EXTRA_cpp14_query_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/query_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_query_free_OBJECTS) $(cpp14_query_free_LDADD) $(LIBS)
+cpp14/query_member.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/query_member$(EXEEXT): $(cpp14_query_member_OBJECTS) $(cpp14_query_member_DEPENDENCIES) $(EXTRA_cpp14_query_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/query_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_query_member_OBJECTS) $(cpp14_query_member_LDADD) $(LIBS)
+cpp14/query_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/query_static$(EXEEXT): $(cpp14_query_static_OBJECTS) $(cpp14_query_static_DEPENDENCIES) $(EXTRA_cpp14_query_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/query_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_query_static_OBJECTS) $(cpp14_query_static_LDADD) $(LIBS)
+cpp14/require_concept_free.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/require_concept_free$(EXEEXT): $(cpp14_require_concept_free_OBJECTS) $(cpp14_require_concept_free_DEPENDENCIES) $(EXTRA_cpp14_require_concept_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/require_concept_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_require_concept_free_OBJECTS) $(cpp14_require_concept_free_LDADD) $(LIBS)
+cpp14/require_concept_member.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/require_concept_member$(EXEEXT): $(cpp14_require_concept_member_OBJECTS) $(cpp14_require_concept_member_DEPENDENCIES) $(EXTRA_cpp14_require_concept_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/require_concept_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_require_concept_member_OBJECTS) $(cpp14_require_concept_member_LDADD) $(LIBS)
+cpp14/require_concept_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/require_concept_static$(EXEEXT): $(cpp14_require_concept_static_OBJECTS) $(cpp14_require_concept_static_DEPENDENCIES) $(EXTRA_cpp14_require_concept_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/require_concept_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_require_concept_static_OBJECTS) $(cpp14_require_concept_static_LDADD) $(LIBS)
+cpp14/require_free.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/require_free$(EXEEXT): $(cpp14_require_free_OBJECTS) $(cpp14_require_free_DEPENDENCIES) $(EXTRA_cpp14_require_free_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/require_free$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_require_free_OBJECTS) $(cpp14_require_free_LDADD) $(LIBS)
+cpp14/require_member.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/require_member$(EXEEXT): $(cpp14_require_member_OBJECTS) $(cpp14_require_member_DEPENDENCIES) $(EXTRA_cpp14_require_member_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/require_member$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_require_member_OBJECTS) $(cpp14_require_member_LDADD) $(LIBS)
+cpp14/require_static.$(OBJEXT): cpp14/$(am__dirstamp) \
+ cpp14/$(DEPDIR)/$(am__dirstamp)
+
+cpp14/require_static$(EXEEXT): $(cpp14_require_static_OBJECTS) $(cpp14_require_static_DEPENDENCIES) $(EXTRA_cpp14_require_static_DEPENDENCIES) cpp14/$(am__dirstamp)
+ @rm -f cpp14/require_static$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(cpp14_require_static_OBJECTS) $(cpp14_require_static_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f cpp03/*.$(OBJEXT)
+ -rm -f cpp11/*.$(OBJEXT)
+ -rm -f cpp14/*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_applicable_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_applicable_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_preferable_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_preferable_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_preferable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_prefer_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_query_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_concept_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/can_require_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/prefer_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/prefer_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/prefer_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/prefer_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/prefer_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/prefer_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/query_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/query_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/query_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/require_concept_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/require_concept_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/require_concept_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/require_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/require_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp03/$(DEPDIR)/require_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_applicable_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_applicable_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_preferable_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_preferable_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_preferable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_prefer_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_query_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_concept_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/can_require_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/prefer_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/prefer_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/prefer_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/prefer_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/prefer_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/prefer_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/query_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/query_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/query_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/require_concept_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/require_concept_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/require_concept_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/require_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/require_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp11/$(DEPDIR)/require_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_applicable_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_applicable_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_preferable_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_preferable_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_preferable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_prefer_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_query_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_concept_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_not_applicable_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_not_applicable_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_not_applicable_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_not_applicable_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/can_require_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/prefer_free_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/prefer_free_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/prefer_member_prefer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/prefer_member_require.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/prefer_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/prefer_unsupported.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/query_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/query_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/query_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/require_concept_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/require_concept_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/require_concept_static.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/require_free.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/require_member.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cpp14/$(DEPDIR)/require_static.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS: $(check_PROGRAMS)
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all $(check_PROGRAMS)
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+cpp03/query_free.log: cpp03/query_free$(EXEEXT)
+ @p='cpp03/query_free$(EXEEXT)'; \
+ b='cpp03/query_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/query_member.log: cpp03/query_member$(EXEEXT)
+ @p='cpp03/query_member$(EXEEXT)'; \
+ b='cpp03/query_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/query_static.log: cpp03/query_static$(EXEEXT)
+ @p='cpp03/query_static$(EXEEXT)'; \
+ b='cpp03/query_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_free.log: cpp03/can_query_free$(EXEEXT)
+ @p='cpp03/can_query_free$(EXEEXT)'; \
+ b='cpp03/can_query_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_member.log: cpp03/can_query_member$(EXEEXT)
+ @p='cpp03/can_query_member$(EXEEXT)'; \
+ b='cpp03/can_query_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_static.log: cpp03/can_query_static$(EXEEXT)
+ @p='cpp03/can_query_static$(EXEEXT)'; \
+ b='cpp03/can_query_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_unsupported.log: cpp03/can_query_unsupported$(EXEEXT)
+ @p='cpp03/can_query_unsupported$(EXEEXT)'; \
+ b='cpp03/can_query_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_not_applicable_free.log: cpp03/can_query_not_applicable_free$(EXEEXT)
+ @p='cpp03/can_query_not_applicable_free$(EXEEXT)'; \
+ b='cpp03/can_query_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_not_applicable_member.log: cpp03/can_query_not_applicable_member$(EXEEXT)
+ @p='cpp03/can_query_not_applicable_member$(EXEEXT)'; \
+ b='cpp03/can_query_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_not_applicable_static.log: cpp03/can_query_not_applicable_static$(EXEEXT)
+ @p='cpp03/can_query_not_applicable_static$(EXEEXT)'; \
+ b='cpp03/can_query_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_query_not_applicable_unsupported.log: cpp03/can_query_not_applicable_unsupported$(EXEEXT)
+ @p='cpp03/can_query_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp03/can_query_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/require_concept_free.log: cpp03/require_concept_free$(EXEEXT)
+ @p='cpp03/require_concept_free$(EXEEXT)'; \
+ b='cpp03/require_concept_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/require_concept_member.log: cpp03/require_concept_member$(EXEEXT)
+ @p='cpp03/require_concept_member$(EXEEXT)'; \
+ b='cpp03/require_concept_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/require_concept_static.log: cpp03/require_concept_static$(EXEEXT)
+ @p='cpp03/require_concept_static$(EXEEXT)'; \
+ b='cpp03/require_concept_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_free.log: cpp03/can_require_concept_free$(EXEEXT)
+ @p='cpp03/can_require_concept_free$(EXEEXT)'; \
+ b='cpp03/can_require_concept_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_member.log: cpp03/can_require_concept_member$(EXEEXT)
+ @p='cpp03/can_require_concept_member$(EXEEXT)'; \
+ b='cpp03/can_require_concept_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_static.log: cpp03/can_require_concept_static$(EXEEXT)
+ @p='cpp03/can_require_concept_static$(EXEEXT)'; \
+ b='cpp03/can_require_concept_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_unsupported.log: cpp03/can_require_concept_unsupported$(EXEEXT)
+ @p='cpp03/can_require_concept_unsupported$(EXEEXT)'; \
+ b='cpp03/can_require_concept_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_not_applicable_free.log: cpp03/can_require_concept_not_applicable_free$(EXEEXT)
+ @p='cpp03/can_require_concept_not_applicable_free$(EXEEXT)'; \
+ b='cpp03/can_require_concept_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_not_applicable_member.log: cpp03/can_require_concept_not_applicable_member$(EXEEXT)
+ @p='cpp03/can_require_concept_not_applicable_member$(EXEEXT)'; \
+ b='cpp03/can_require_concept_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_not_applicable_static.log: cpp03/can_require_concept_not_applicable_static$(EXEEXT)
+ @p='cpp03/can_require_concept_not_applicable_static$(EXEEXT)'; \
+ b='cpp03/can_require_concept_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_concept_not_applicable_unsupported.log: cpp03/can_require_concept_not_applicable_unsupported$(EXEEXT)
+ @p='cpp03/can_require_concept_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp03/can_require_concept_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/require_free.log: cpp03/require_free$(EXEEXT)
+ @p='cpp03/require_free$(EXEEXT)'; \
+ b='cpp03/require_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/require_member.log: cpp03/require_member$(EXEEXT)
+ @p='cpp03/require_member$(EXEEXT)'; \
+ b='cpp03/require_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/require_static.log: cpp03/require_static$(EXEEXT)
+ @p='cpp03/require_static$(EXEEXT)'; \
+ b='cpp03/require_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_free.log: cpp03/can_require_free$(EXEEXT)
+ @p='cpp03/can_require_free$(EXEEXT)'; \
+ b='cpp03/can_require_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_member.log: cpp03/can_require_member$(EXEEXT)
+ @p='cpp03/can_require_member$(EXEEXT)'; \
+ b='cpp03/can_require_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_static.log: cpp03/can_require_static$(EXEEXT)
+ @p='cpp03/can_require_static$(EXEEXT)'; \
+ b='cpp03/can_require_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_unsupported.log: cpp03/can_require_unsupported$(EXEEXT)
+ @p='cpp03/can_require_unsupported$(EXEEXT)'; \
+ b='cpp03/can_require_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_not_applicable_free.log: cpp03/can_require_not_applicable_free$(EXEEXT)
+ @p='cpp03/can_require_not_applicable_free$(EXEEXT)'; \
+ b='cpp03/can_require_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_not_applicable_member.log: cpp03/can_require_not_applicable_member$(EXEEXT)
+ @p='cpp03/can_require_not_applicable_member$(EXEEXT)'; \
+ b='cpp03/can_require_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_not_applicable_static.log: cpp03/can_require_not_applicable_static$(EXEEXT)
+ @p='cpp03/can_require_not_applicable_static$(EXEEXT)'; \
+ b='cpp03/can_require_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_require_not_applicable_unsupported.log: cpp03/can_require_not_applicable_unsupported$(EXEEXT)
+ @p='cpp03/can_require_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp03/can_require_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/prefer_free_prefer.log: cpp03/prefer_free_prefer$(EXEEXT)
+ @p='cpp03/prefer_free_prefer$(EXEEXT)'; \
+ b='cpp03/prefer_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/prefer_member_prefer.log: cpp03/prefer_member_prefer$(EXEEXT)
+ @p='cpp03/prefer_member_prefer$(EXEEXT)'; \
+ b='cpp03/prefer_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/prefer_free_require.log: cpp03/prefer_free_require$(EXEEXT)
+ @p='cpp03/prefer_free_require$(EXEEXT)'; \
+ b='cpp03/prefer_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/prefer_member_require.log: cpp03/prefer_member_require$(EXEEXT)
+ @p='cpp03/prefer_member_require$(EXEEXT)'; \
+ b='cpp03/prefer_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/prefer_static.log: cpp03/prefer_static$(EXEEXT)
+ @p='cpp03/prefer_static$(EXEEXT)'; \
+ b='cpp03/prefer_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/prefer_unsupported.log: cpp03/prefer_unsupported$(EXEEXT)
+ @p='cpp03/prefer_unsupported$(EXEEXT)'; \
+ b='cpp03/prefer_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_free_prefer.log: cpp03/can_prefer_free_prefer$(EXEEXT)
+ @p='cpp03/can_prefer_free_prefer$(EXEEXT)'; \
+ b='cpp03/can_prefer_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_free_require.log: cpp03/can_prefer_free_require$(EXEEXT)
+ @p='cpp03/can_prefer_free_require$(EXEEXT)'; \
+ b='cpp03/can_prefer_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_member_prefer.log: cpp03/can_prefer_member_prefer$(EXEEXT)
+ @p='cpp03/can_prefer_member_prefer$(EXEEXT)'; \
+ b='cpp03/can_prefer_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_member_require.log: cpp03/can_prefer_member_require$(EXEEXT)
+ @p='cpp03/can_prefer_member_require$(EXEEXT)'; \
+ b='cpp03/can_prefer_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_static.log: cpp03/can_prefer_static$(EXEEXT)
+ @p='cpp03/can_prefer_static$(EXEEXT)'; \
+ b='cpp03/can_prefer_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_unsupported.log: cpp03/can_prefer_unsupported$(EXEEXT)
+ @p='cpp03/can_prefer_unsupported$(EXEEXT)'; \
+ b='cpp03/can_prefer_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_applicable_free_prefer.log: cpp03/can_prefer_not_applicable_free_prefer$(EXEEXT)
+ @p='cpp03/can_prefer_not_applicable_free_prefer$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_applicable_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_applicable_free_require.log: cpp03/can_prefer_not_applicable_free_require$(EXEEXT)
+ @p='cpp03/can_prefer_not_applicable_free_require$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_applicable_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_applicable_member_prefer.log: cpp03/can_prefer_not_applicable_member_prefer$(EXEEXT)
+ @p='cpp03/can_prefer_not_applicable_member_prefer$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_applicable_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_applicable_member_require.log: cpp03/can_prefer_not_applicable_member_require$(EXEEXT)
+ @p='cpp03/can_prefer_not_applicable_member_require$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_applicable_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_applicable_static.log: cpp03/can_prefer_not_applicable_static$(EXEEXT)
+ @p='cpp03/can_prefer_not_applicable_static$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_applicable_unsupported.log: cpp03/can_prefer_not_applicable_unsupported$(EXEEXT)
+ @p='cpp03/can_prefer_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_preferable_free_prefer.log: cpp03/can_prefer_not_preferable_free_prefer$(EXEEXT)
+ @p='cpp03/can_prefer_not_preferable_free_prefer$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_preferable_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_preferable_free_require.log: cpp03/can_prefer_not_preferable_free_require$(EXEEXT)
+ @p='cpp03/can_prefer_not_preferable_free_require$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_preferable_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_preferable_member_prefer.log: cpp03/can_prefer_not_preferable_member_prefer$(EXEEXT)
+ @p='cpp03/can_prefer_not_preferable_member_prefer$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_preferable_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_preferable_member_require.log: cpp03/can_prefer_not_preferable_member_require$(EXEEXT)
+ @p='cpp03/can_prefer_not_preferable_member_require$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_preferable_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_preferable_static.log: cpp03/can_prefer_not_preferable_static$(EXEEXT)
+ @p='cpp03/can_prefer_not_preferable_static$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_preferable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp03/can_prefer_not_preferable_unsupported.log: cpp03/can_prefer_not_preferable_unsupported$(EXEEXT)
+ @p='cpp03/can_prefer_not_preferable_unsupported$(EXEEXT)'; \
+ b='cpp03/can_prefer_not_preferable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/query_free.log: cpp11/query_free$(EXEEXT)
+ @p='cpp11/query_free$(EXEEXT)'; \
+ b='cpp11/query_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/query_member.log: cpp11/query_member$(EXEEXT)
+ @p='cpp11/query_member$(EXEEXT)'; \
+ b='cpp11/query_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/query_static.log: cpp11/query_static$(EXEEXT)
+ @p='cpp11/query_static$(EXEEXT)'; \
+ b='cpp11/query_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_free.log: cpp11/can_query_free$(EXEEXT)
+ @p='cpp11/can_query_free$(EXEEXT)'; \
+ b='cpp11/can_query_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_member.log: cpp11/can_query_member$(EXEEXT)
+ @p='cpp11/can_query_member$(EXEEXT)'; \
+ b='cpp11/can_query_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_static.log: cpp11/can_query_static$(EXEEXT)
+ @p='cpp11/can_query_static$(EXEEXT)'; \
+ b='cpp11/can_query_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_unsupported.log: cpp11/can_query_unsupported$(EXEEXT)
+ @p='cpp11/can_query_unsupported$(EXEEXT)'; \
+ b='cpp11/can_query_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_not_applicable_free.log: cpp11/can_query_not_applicable_free$(EXEEXT)
+ @p='cpp11/can_query_not_applicable_free$(EXEEXT)'; \
+ b='cpp11/can_query_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_not_applicable_member.log: cpp11/can_query_not_applicable_member$(EXEEXT)
+ @p='cpp11/can_query_not_applicable_member$(EXEEXT)'; \
+ b='cpp11/can_query_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_not_applicable_static.log: cpp11/can_query_not_applicable_static$(EXEEXT)
+ @p='cpp11/can_query_not_applicable_static$(EXEEXT)'; \
+ b='cpp11/can_query_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_query_not_applicable_unsupported.log: cpp11/can_query_not_applicable_unsupported$(EXEEXT)
+ @p='cpp11/can_query_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp11/can_query_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/require_concept_free.log: cpp11/require_concept_free$(EXEEXT)
+ @p='cpp11/require_concept_free$(EXEEXT)'; \
+ b='cpp11/require_concept_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/require_concept_member.log: cpp11/require_concept_member$(EXEEXT)
+ @p='cpp11/require_concept_member$(EXEEXT)'; \
+ b='cpp11/require_concept_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/require_concept_static.log: cpp11/require_concept_static$(EXEEXT)
+ @p='cpp11/require_concept_static$(EXEEXT)'; \
+ b='cpp11/require_concept_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_free.log: cpp11/can_require_concept_free$(EXEEXT)
+ @p='cpp11/can_require_concept_free$(EXEEXT)'; \
+ b='cpp11/can_require_concept_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_member.log: cpp11/can_require_concept_member$(EXEEXT)
+ @p='cpp11/can_require_concept_member$(EXEEXT)'; \
+ b='cpp11/can_require_concept_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_static.log: cpp11/can_require_concept_static$(EXEEXT)
+ @p='cpp11/can_require_concept_static$(EXEEXT)'; \
+ b='cpp11/can_require_concept_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_unsupported.log: cpp11/can_require_concept_unsupported$(EXEEXT)
+ @p='cpp11/can_require_concept_unsupported$(EXEEXT)'; \
+ b='cpp11/can_require_concept_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_not_applicable_free.log: cpp11/can_require_concept_not_applicable_free$(EXEEXT)
+ @p='cpp11/can_require_concept_not_applicable_free$(EXEEXT)'; \
+ b='cpp11/can_require_concept_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_not_applicable_member.log: cpp11/can_require_concept_not_applicable_member$(EXEEXT)
+ @p='cpp11/can_require_concept_not_applicable_member$(EXEEXT)'; \
+ b='cpp11/can_require_concept_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_not_applicable_static.log: cpp11/can_require_concept_not_applicable_static$(EXEEXT)
+ @p='cpp11/can_require_concept_not_applicable_static$(EXEEXT)'; \
+ b='cpp11/can_require_concept_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_concept_not_applicable_unsupported.log: cpp11/can_require_concept_not_applicable_unsupported$(EXEEXT)
+ @p='cpp11/can_require_concept_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp11/can_require_concept_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/require_free.log: cpp11/require_free$(EXEEXT)
+ @p='cpp11/require_free$(EXEEXT)'; \
+ b='cpp11/require_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/require_member.log: cpp11/require_member$(EXEEXT)
+ @p='cpp11/require_member$(EXEEXT)'; \
+ b='cpp11/require_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/require_static.log: cpp11/require_static$(EXEEXT)
+ @p='cpp11/require_static$(EXEEXT)'; \
+ b='cpp11/require_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_free.log: cpp11/can_require_free$(EXEEXT)
+ @p='cpp11/can_require_free$(EXEEXT)'; \
+ b='cpp11/can_require_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_member.log: cpp11/can_require_member$(EXEEXT)
+ @p='cpp11/can_require_member$(EXEEXT)'; \
+ b='cpp11/can_require_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_static.log: cpp11/can_require_static$(EXEEXT)
+ @p='cpp11/can_require_static$(EXEEXT)'; \
+ b='cpp11/can_require_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_unsupported.log: cpp11/can_require_unsupported$(EXEEXT)
+ @p='cpp11/can_require_unsupported$(EXEEXT)'; \
+ b='cpp11/can_require_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_not_applicable_free.log: cpp11/can_require_not_applicable_free$(EXEEXT)
+ @p='cpp11/can_require_not_applicable_free$(EXEEXT)'; \
+ b='cpp11/can_require_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_not_applicable_member.log: cpp11/can_require_not_applicable_member$(EXEEXT)
+ @p='cpp11/can_require_not_applicable_member$(EXEEXT)'; \
+ b='cpp11/can_require_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_not_applicable_static.log: cpp11/can_require_not_applicable_static$(EXEEXT)
+ @p='cpp11/can_require_not_applicable_static$(EXEEXT)'; \
+ b='cpp11/can_require_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_require_not_applicable_unsupported.log: cpp11/can_require_not_applicable_unsupported$(EXEEXT)
+ @p='cpp11/can_require_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp11/can_require_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/prefer_free_prefer.log: cpp11/prefer_free_prefer$(EXEEXT)
+ @p='cpp11/prefer_free_prefer$(EXEEXT)'; \
+ b='cpp11/prefer_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/prefer_member_prefer.log: cpp11/prefer_member_prefer$(EXEEXT)
+ @p='cpp11/prefer_member_prefer$(EXEEXT)'; \
+ b='cpp11/prefer_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/prefer_free_require.log: cpp11/prefer_free_require$(EXEEXT)
+ @p='cpp11/prefer_free_require$(EXEEXT)'; \
+ b='cpp11/prefer_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/prefer_member_require.log: cpp11/prefer_member_require$(EXEEXT)
+ @p='cpp11/prefer_member_require$(EXEEXT)'; \
+ b='cpp11/prefer_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/prefer_static.log: cpp11/prefer_static$(EXEEXT)
+ @p='cpp11/prefer_static$(EXEEXT)'; \
+ b='cpp11/prefer_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/prefer_unsupported.log: cpp11/prefer_unsupported$(EXEEXT)
+ @p='cpp11/prefer_unsupported$(EXEEXT)'; \
+ b='cpp11/prefer_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_free_prefer.log: cpp11/can_prefer_free_prefer$(EXEEXT)
+ @p='cpp11/can_prefer_free_prefer$(EXEEXT)'; \
+ b='cpp11/can_prefer_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_free_require.log: cpp11/can_prefer_free_require$(EXEEXT)
+ @p='cpp11/can_prefer_free_require$(EXEEXT)'; \
+ b='cpp11/can_prefer_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_member_prefer.log: cpp11/can_prefer_member_prefer$(EXEEXT)
+ @p='cpp11/can_prefer_member_prefer$(EXEEXT)'; \
+ b='cpp11/can_prefer_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_member_require.log: cpp11/can_prefer_member_require$(EXEEXT)
+ @p='cpp11/can_prefer_member_require$(EXEEXT)'; \
+ b='cpp11/can_prefer_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_static.log: cpp11/can_prefer_static$(EXEEXT)
+ @p='cpp11/can_prefer_static$(EXEEXT)'; \
+ b='cpp11/can_prefer_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_unsupported.log: cpp11/can_prefer_unsupported$(EXEEXT)
+ @p='cpp11/can_prefer_unsupported$(EXEEXT)'; \
+ b='cpp11/can_prefer_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_applicable_free_prefer.log: cpp11/can_prefer_not_applicable_free_prefer$(EXEEXT)
+ @p='cpp11/can_prefer_not_applicable_free_prefer$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_applicable_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_applicable_free_require.log: cpp11/can_prefer_not_applicable_free_require$(EXEEXT)
+ @p='cpp11/can_prefer_not_applicable_free_require$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_applicable_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_applicable_member_prefer.log: cpp11/can_prefer_not_applicable_member_prefer$(EXEEXT)
+ @p='cpp11/can_prefer_not_applicable_member_prefer$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_applicable_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_applicable_member_require.log: cpp11/can_prefer_not_applicable_member_require$(EXEEXT)
+ @p='cpp11/can_prefer_not_applicable_member_require$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_applicable_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_applicable_static.log: cpp11/can_prefer_not_applicable_static$(EXEEXT)
+ @p='cpp11/can_prefer_not_applicable_static$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_applicable_unsupported.log: cpp11/can_prefer_not_applicable_unsupported$(EXEEXT)
+ @p='cpp11/can_prefer_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_preferable_free_prefer.log: cpp11/can_prefer_not_preferable_free_prefer$(EXEEXT)
+ @p='cpp11/can_prefer_not_preferable_free_prefer$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_preferable_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_preferable_free_require.log: cpp11/can_prefer_not_preferable_free_require$(EXEEXT)
+ @p='cpp11/can_prefer_not_preferable_free_require$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_preferable_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_preferable_member_prefer.log: cpp11/can_prefer_not_preferable_member_prefer$(EXEEXT)
+ @p='cpp11/can_prefer_not_preferable_member_prefer$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_preferable_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_preferable_member_require.log: cpp11/can_prefer_not_preferable_member_require$(EXEEXT)
+ @p='cpp11/can_prefer_not_preferable_member_require$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_preferable_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_preferable_static.log: cpp11/can_prefer_not_preferable_static$(EXEEXT)
+ @p='cpp11/can_prefer_not_preferable_static$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_preferable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp11/can_prefer_not_preferable_unsupported.log: cpp11/can_prefer_not_preferable_unsupported$(EXEEXT)
+ @p='cpp11/can_prefer_not_preferable_unsupported$(EXEEXT)'; \
+ b='cpp11/can_prefer_not_preferable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/query_free.log: cpp14/query_free$(EXEEXT)
+ @p='cpp14/query_free$(EXEEXT)'; \
+ b='cpp14/query_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/query_member.log: cpp14/query_member$(EXEEXT)
+ @p='cpp14/query_member$(EXEEXT)'; \
+ b='cpp14/query_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/query_static.log: cpp14/query_static$(EXEEXT)
+ @p='cpp14/query_static$(EXEEXT)'; \
+ b='cpp14/query_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_free.log: cpp14/can_query_free$(EXEEXT)
+ @p='cpp14/can_query_free$(EXEEXT)'; \
+ b='cpp14/can_query_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_member.log: cpp14/can_query_member$(EXEEXT)
+ @p='cpp14/can_query_member$(EXEEXT)'; \
+ b='cpp14/can_query_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_static.log: cpp14/can_query_static$(EXEEXT)
+ @p='cpp14/can_query_static$(EXEEXT)'; \
+ b='cpp14/can_query_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_unsupported.log: cpp14/can_query_unsupported$(EXEEXT)
+ @p='cpp14/can_query_unsupported$(EXEEXT)'; \
+ b='cpp14/can_query_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_not_applicable_free.log: cpp14/can_query_not_applicable_free$(EXEEXT)
+ @p='cpp14/can_query_not_applicable_free$(EXEEXT)'; \
+ b='cpp14/can_query_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_not_applicable_member.log: cpp14/can_query_not_applicable_member$(EXEEXT)
+ @p='cpp14/can_query_not_applicable_member$(EXEEXT)'; \
+ b='cpp14/can_query_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_not_applicable_static.log: cpp14/can_query_not_applicable_static$(EXEEXT)
+ @p='cpp14/can_query_not_applicable_static$(EXEEXT)'; \
+ b='cpp14/can_query_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_query_not_applicable_unsupported.log: cpp14/can_query_not_applicable_unsupported$(EXEEXT)
+ @p='cpp14/can_query_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp14/can_query_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/require_concept_free.log: cpp14/require_concept_free$(EXEEXT)
+ @p='cpp14/require_concept_free$(EXEEXT)'; \
+ b='cpp14/require_concept_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/require_concept_member.log: cpp14/require_concept_member$(EXEEXT)
+ @p='cpp14/require_concept_member$(EXEEXT)'; \
+ b='cpp14/require_concept_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/require_concept_static.log: cpp14/require_concept_static$(EXEEXT)
+ @p='cpp14/require_concept_static$(EXEEXT)'; \
+ b='cpp14/require_concept_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_free.log: cpp14/can_require_concept_free$(EXEEXT)
+ @p='cpp14/can_require_concept_free$(EXEEXT)'; \
+ b='cpp14/can_require_concept_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_member.log: cpp14/can_require_concept_member$(EXEEXT)
+ @p='cpp14/can_require_concept_member$(EXEEXT)'; \
+ b='cpp14/can_require_concept_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_static.log: cpp14/can_require_concept_static$(EXEEXT)
+ @p='cpp14/can_require_concept_static$(EXEEXT)'; \
+ b='cpp14/can_require_concept_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_unsupported.log: cpp14/can_require_concept_unsupported$(EXEEXT)
+ @p='cpp14/can_require_concept_unsupported$(EXEEXT)'; \
+ b='cpp14/can_require_concept_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_not_applicable_free.log: cpp14/can_require_concept_not_applicable_free$(EXEEXT)
+ @p='cpp14/can_require_concept_not_applicable_free$(EXEEXT)'; \
+ b='cpp14/can_require_concept_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_not_applicable_member.log: cpp14/can_require_concept_not_applicable_member$(EXEEXT)
+ @p='cpp14/can_require_concept_not_applicable_member$(EXEEXT)'; \
+ b='cpp14/can_require_concept_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_not_applicable_static.log: cpp14/can_require_concept_not_applicable_static$(EXEEXT)
+ @p='cpp14/can_require_concept_not_applicable_static$(EXEEXT)'; \
+ b='cpp14/can_require_concept_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_concept_not_applicable_unsupported.log: cpp14/can_require_concept_not_applicable_unsupported$(EXEEXT)
+ @p='cpp14/can_require_concept_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp14/can_require_concept_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/require_free.log: cpp14/require_free$(EXEEXT)
+ @p='cpp14/require_free$(EXEEXT)'; \
+ b='cpp14/require_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/require_member.log: cpp14/require_member$(EXEEXT)
+ @p='cpp14/require_member$(EXEEXT)'; \
+ b='cpp14/require_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/require_static.log: cpp14/require_static$(EXEEXT)
+ @p='cpp14/require_static$(EXEEXT)'; \
+ b='cpp14/require_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_free.log: cpp14/can_require_free$(EXEEXT)
+ @p='cpp14/can_require_free$(EXEEXT)'; \
+ b='cpp14/can_require_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_member.log: cpp14/can_require_member$(EXEEXT)
+ @p='cpp14/can_require_member$(EXEEXT)'; \
+ b='cpp14/can_require_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_static.log: cpp14/can_require_static$(EXEEXT)
+ @p='cpp14/can_require_static$(EXEEXT)'; \
+ b='cpp14/can_require_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_unsupported.log: cpp14/can_require_unsupported$(EXEEXT)
+ @p='cpp14/can_require_unsupported$(EXEEXT)'; \
+ b='cpp14/can_require_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_not_applicable_free.log: cpp14/can_require_not_applicable_free$(EXEEXT)
+ @p='cpp14/can_require_not_applicable_free$(EXEEXT)'; \
+ b='cpp14/can_require_not_applicable_free'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_not_applicable_member.log: cpp14/can_require_not_applicable_member$(EXEEXT)
+ @p='cpp14/can_require_not_applicable_member$(EXEEXT)'; \
+ b='cpp14/can_require_not_applicable_member'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_not_applicable_static.log: cpp14/can_require_not_applicable_static$(EXEEXT)
+ @p='cpp14/can_require_not_applicable_static$(EXEEXT)'; \
+ b='cpp14/can_require_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_require_not_applicable_unsupported.log: cpp14/can_require_not_applicable_unsupported$(EXEEXT)
+ @p='cpp14/can_require_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp14/can_require_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/prefer_free_prefer.log: cpp14/prefer_free_prefer$(EXEEXT)
+ @p='cpp14/prefer_free_prefer$(EXEEXT)'; \
+ b='cpp14/prefer_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/prefer_member_prefer.log: cpp14/prefer_member_prefer$(EXEEXT)
+ @p='cpp14/prefer_member_prefer$(EXEEXT)'; \
+ b='cpp14/prefer_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/prefer_free_require.log: cpp14/prefer_free_require$(EXEEXT)
+ @p='cpp14/prefer_free_require$(EXEEXT)'; \
+ b='cpp14/prefer_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/prefer_member_require.log: cpp14/prefer_member_require$(EXEEXT)
+ @p='cpp14/prefer_member_require$(EXEEXT)'; \
+ b='cpp14/prefer_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/prefer_static.log: cpp14/prefer_static$(EXEEXT)
+ @p='cpp14/prefer_static$(EXEEXT)'; \
+ b='cpp14/prefer_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/prefer_unsupported.log: cpp14/prefer_unsupported$(EXEEXT)
+ @p='cpp14/prefer_unsupported$(EXEEXT)'; \
+ b='cpp14/prefer_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_free_prefer.log: cpp14/can_prefer_free_prefer$(EXEEXT)
+ @p='cpp14/can_prefer_free_prefer$(EXEEXT)'; \
+ b='cpp14/can_prefer_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_free_require.log: cpp14/can_prefer_free_require$(EXEEXT)
+ @p='cpp14/can_prefer_free_require$(EXEEXT)'; \
+ b='cpp14/can_prefer_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_member_prefer.log: cpp14/can_prefer_member_prefer$(EXEEXT)
+ @p='cpp14/can_prefer_member_prefer$(EXEEXT)'; \
+ b='cpp14/can_prefer_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_member_require.log: cpp14/can_prefer_member_require$(EXEEXT)
+ @p='cpp14/can_prefer_member_require$(EXEEXT)'; \
+ b='cpp14/can_prefer_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_static.log: cpp14/can_prefer_static$(EXEEXT)
+ @p='cpp14/can_prefer_static$(EXEEXT)'; \
+ b='cpp14/can_prefer_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_unsupported.log: cpp14/can_prefer_unsupported$(EXEEXT)
+ @p='cpp14/can_prefer_unsupported$(EXEEXT)'; \
+ b='cpp14/can_prefer_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_applicable_free_prefer.log: cpp14/can_prefer_not_applicable_free_prefer$(EXEEXT)
+ @p='cpp14/can_prefer_not_applicable_free_prefer$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_applicable_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_applicable_free_require.log: cpp14/can_prefer_not_applicable_free_require$(EXEEXT)
+ @p='cpp14/can_prefer_not_applicable_free_require$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_applicable_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_applicable_member_prefer.log: cpp14/can_prefer_not_applicable_member_prefer$(EXEEXT)
+ @p='cpp14/can_prefer_not_applicable_member_prefer$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_applicable_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_applicable_member_require.log: cpp14/can_prefer_not_applicable_member_require$(EXEEXT)
+ @p='cpp14/can_prefer_not_applicable_member_require$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_applicable_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_applicable_static.log: cpp14/can_prefer_not_applicable_static$(EXEEXT)
+ @p='cpp14/can_prefer_not_applicable_static$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_applicable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_applicable_unsupported.log: cpp14/can_prefer_not_applicable_unsupported$(EXEEXT)
+ @p='cpp14/can_prefer_not_applicable_unsupported$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_applicable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_preferable_free_prefer.log: cpp14/can_prefer_not_preferable_free_prefer$(EXEEXT)
+ @p='cpp14/can_prefer_not_preferable_free_prefer$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_preferable_free_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_preferable_free_require.log: cpp14/can_prefer_not_preferable_free_require$(EXEEXT)
+ @p='cpp14/can_prefer_not_preferable_free_require$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_preferable_free_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_preferable_member_prefer.log: cpp14/can_prefer_not_preferable_member_prefer$(EXEEXT)
+ @p='cpp14/can_prefer_not_preferable_member_prefer$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_preferable_member_prefer'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_preferable_member_require.log: cpp14/can_prefer_not_preferable_member_require$(EXEEXT)
+ @p='cpp14/can_prefer_not_preferable_member_require$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_preferable_member_require'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_preferable_static.log: cpp14/can_prefer_not_preferable_static$(EXEEXT)
+ @p='cpp14/can_prefer_not_preferable_static$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_preferable_static'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+cpp14/can_prefer_not_preferable_unsupported.log: cpp14/can_prefer_not_preferable_unsupported$(EXEEXT)
+ @p='cpp14/can_prefer_not_preferable_unsupported$(EXEEXT)'; \
+ b='cpp14/can_prefer_not_preferable_unsupported'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f cpp03/$(DEPDIR)/$(am__dirstamp)
+ -rm -f cpp03/$(am__dirstamp)
+ -rm -f cpp11/$(DEPDIR)/$(am__dirstamp)
+ -rm -f cpp11/$(am__dirstamp)
+ -rm -f cpp14/$(DEPDIR)/$(am__dirstamp)
+ -rm -f cpp14/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f cpp03/$(DEPDIR)/can_prefer_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_static.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/query_free.Po
+ -rm -f cpp03/$(DEPDIR)/query_member.Po
+ -rm -f cpp03/$(DEPDIR)/query_static.Po
+ -rm -f cpp03/$(DEPDIR)/require_concept_free.Po
+ -rm -f cpp03/$(DEPDIR)/require_concept_member.Po
+ -rm -f cpp03/$(DEPDIR)/require_concept_static.Po
+ -rm -f cpp03/$(DEPDIR)/require_free.Po
+ -rm -f cpp03/$(DEPDIR)/require_member.Po
+ -rm -f cpp03/$(DEPDIR)/require_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_static.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/query_free.Po
+ -rm -f cpp11/$(DEPDIR)/query_member.Po
+ -rm -f cpp11/$(DEPDIR)/query_static.Po
+ -rm -f cpp11/$(DEPDIR)/require_concept_free.Po
+ -rm -f cpp11/$(DEPDIR)/require_concept_member.Po
+ -rm -f cpp11/$(DEPDIR)/require_concept_static.Po
+ -rm -f cpp11/$(DEPDIR)/require_free.Po
+ -rm -f cpp11/$(DEPDIR)/require_member.Po
+ -rm -f cpp11/$(DEPDIR)/require_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_static.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/query_free.Po
+ -rm -f cpp14/$(DEPDIR)/query_member.Po
+ -rm -f cpp14/$(DEPDIR)/query_static.Po
+ -rm -f cpp14/$(DEPDIR)/require_concept_free.Po
+ -rm -f cpp14/$(DEPDIR)/require_concept_member.Po
+ -rm -f cpp14/$(DEPDIR)/require_concept_static.Po
+ -rm -f cpp14/$(DEPDIR)/require_free.Po
+ -rm -f cpp14/$(DEPDIR)/require_member.Po
+ -rm -f cpp14/$(DEPDIR)/require_static.Po
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f cpp03/$(DEPDIR)/can_prefer_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_prefer_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_query_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_concept_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_free.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_member.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_not_applicable_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_static.Po
+ -rm -f cpp03/$(DEPDIR)/can_require_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_free_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_free_require.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_member_prefer.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_member_require.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_static.Po
+ -rm -f cpp03/$(DEPDIR)/prefer_unsupported.Po
+ -rm -f cpp03/$(DEPDIR)/query_free.Po
+ -rm -f cpp03/$(DEPDIR)/query_member.Po
+ -rm -f cpp03/$(DEPDIR)/query_static.Po
+ -rm -f cpp03/$(DEPDIR)/require_concept_free.Po
+ -rm -f cpp03/$(DEPDIR)/require_concept_member.Po
+ -rm -f cpp03/$(DEPDIR)/require_concept_static.Po
+ -rm -f cpp03/$(DEPDIR)/require_free.Po
+ -rm -f cpp03/$(DEPDIR)/require_member.Po
+ -rm -f cpp03/$(DEPDIR)/require_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_prefer_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_query_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_concept_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_free.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_member.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_not_applicable_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_static.Po
+ -rm -f cpp11/$(DEPDIR)/can_require_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_free_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_free_require.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_member_prefer.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_member_require.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_static.Po
+ -rm -f cpp11/$(DEPDIR)/prefer_unsupported.Po
+ -rm -f cpp11/$(DEPDIR)/query_free.Po
+ -rm -f cpp11/$(DEPDIR)/query_member.Po
+ -rm -f cpp11/$(DEPDIR)/query_static.Po
+ -rm -f cpp11/$(DEPDIR)/require_concept_free.Po
+ -rm -f cpp11/$(DEPDIR)/require_concept_member.Po
+ -rm -f cpp11/$(DEPDIR)/require_concept_static.Po
+ -rm -f cpp11/$(DEPDIR)/require_free.Po
+ -rm -f cpp11/$(DEPDIR)/require_member.Po
+ -rm -f cpp11/$(DEPDIR)/require_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_not_preferable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_prefer_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_query_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_concept_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_free.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_member.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_not_applicable_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_static.Po
+ -rm -f cpp14/$(DEPDIR)/can_require_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_free_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_free_require.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_member_prefer.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_member_require.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_static.Po
+ -rm -f cpp14/$(DEPDIR)/prefer_unsupported.Po
+ -rm -f cpp14/$(DEPDIR)/query_free.Po
+ -rm -f cpp14/$(DEPDIR)/query_member.Po
+ -rm -f cpp14/$(DEPDIR)/query_static.Po
+ -rm -f cpp14/$(DEPDIR)/require_concept_free.Po
+ -rm -f cpp14/$(DEPDIR)/require_concept_member.Po
+ -rm -f cpp14/$(DEPDIR)/require_concept_static.Po
+ -rm -f cpp14/$(DEPDIR)/require_free.Po
+ -rm -f cpp14/$(DEPDIR)/require_member.Po
+ -rm -f cpp14/$(DEPDIR)/require_static.Po
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
+ check-am clean clean-checkPROGRAMS clean-generic cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ recheck tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_prefer.cpp
new file mode 100644
index 00000000000..e9784f60661
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_prefer.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct prefer_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_prefer<object<1>, prop<2> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_require.cpp
new file mode 100644
index 00000000000..693a46150d1
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_free_require.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_prefer<object<1>, prop<2> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_prefer.cpp
new file mode 100644
index 00000000000..011a34764dc
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_prefer.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct prefer_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_prefer<object<1>, prop<2> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_require.cpp
new file mode 100644
index 00000000000..9364391c935
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_member_require.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_prefer<object<1>, prop<2> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp
new file mode 100644
index 00000000000..8fd11c6f659
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_prefer.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_prefer_not_applicable_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct prefer_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_require.cpp
new file mode 100644
index 00000000000..5c205ada2e7
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_free_require.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_prefer_not_applicable_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct require_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp
new file mode 100644
index 00000000000..15e93fd3a51
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_prefer.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_prefer_not_applicable_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct prefer_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_require.cpp
new file mode 100644
index 00000000000..0a0f1f6ecf0
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_member_require.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_prefer_not_applicable_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct require_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_static.cpp
new file mode 100644
index 00000000000..f564d2fae01
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_static.cpp
@@ -0,0 +1,45 @@
+//
+// cpp03/can_prefer_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<1> >::value));
+ assert((!asio::can_prefer<object<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_prefer<object<1>, prop<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<1> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<1>, prop<1>, prop<1> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..0711d7c4a4d
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_applicable_unsupported.cpp
@@ -0,0 +1,33 @@
+//
+// cpp03/can_prefer_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp
new file mode 100644
index 00000000000..3a522e5bed4
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_prefer.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_not_preferable_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct prefer_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_require.cpp
new file mode 100644
index 00000000000..39ea91fefcb
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_free_require.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_not_preferable_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp
new file mode 100644
index 00000000000..e61f89872d0
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_prefer.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_not_preferable_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct prefer_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_require.cpp
new file mode 100644
index 00000000000..0052cc3ee50
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_member_require.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_prefer_not_preferable_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_static.cpp
new file mode 100644
index 00000000000..f3428066587
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_static.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_prefer_not_preferable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<1> >::value));
+ assert((!asio::can_prefer<object<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_prefer<object<1>, prop<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<1> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<1>, prop<1>, prop<1> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_unsupported.cpp
new file mode 100644
index 00000000000..14695938c99
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_not_preferable_unsupported.cpp
@@ -0,0 +1,43 @@
+//
+// cpp03/can_prefer_not_preferable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_prefer<object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_static.cpp
new file mode 100644
index 00000000000..ac1f5c186aa
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_static.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_prefer_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_prefer<object<1>, prop<1> >::value));
+ assert((asio::can_prefer<object<1>, prop<1>, prop<1> >::value));
+ assert((asio::can_prefer<object<1>, prop<1>, prop<1>, prop<1> >::value));
+ assert((asio::can_prefer<const object<1>, prop<1> >::value));
+ assert((asio::can_prefer<const object<1>, prop<1>, prop<1> >::value));
+ assert((asio::can_prefer<const object<1>, prop<1>, prop<1>, prop<1> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_prefer_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_unsupported.cpp
new file mode 100644
index 00000000000..e59e5d098f8
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_prefer_unsupported.cpp
@@ -0,0 +1,43 @@
+//
+// cpp03/can_prefer_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_prefer<object<1>, prop<2> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_free.cpp
new file mode 100644
index 00000000000..d0d42fe7bdd
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_free.cpp
@@ -0,0 +1,48 @@
+//
+// cpp03/can_query_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ friend int query(const object&, prop) { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct query_free<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_query<object, prop>::value));
+ assert((asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_member.cpp
new file mode 100644
index 00000000000..9ead9be9751
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_member.cpp
@@ -0,0 +1,48 @@
+//
+// cpp03/can_query_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ int query(prop) const { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct query_member<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_query<object, prop>::value));
+ assert((asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_free.cpp
new file mode 100644
index 00000000000..b360327c132
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_free.cpp
@@ -0,0 +1,41 @@
+//
+// cpp03/can_query_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ friend int query(const object&, prop) { return 123; }
+};
+
+namespace asio {
+namespace traits {
+
+template<>
+struct query_free<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_query<object, prop>::value));
+ assert((!asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_member.cpp
new file mode 100644
index 00000000000..be339d05522
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_member.cpp
@@ -0,0 +1,41 @@
+//
+// cpp03/can_query_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ int query(prop) const { return 123; }
+};
+
+namespace asio {
+namespace traits {
+
+template<>
+struct query_member<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_query<object, prop>::value));
+ assert((!asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_static.cpp
new file mode 100644
index 00000000000..127e2ace42e
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_static.cpp
@@ -0,0 +1,41 @@
+//
+// cpp03/can_query_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<>
+struct static_query<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+ static int value() { return 123; }
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_query<object, prop>::value));
+ assert((!asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..ec1c07affc1
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_not_applicable_unsupported.cpp
@@ -0,0 +1,26 @@
+//
+// cpp03/can_query_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+int main()
+{
+ assert((!asio::can_query<object, prop>::value));
+ assert((!asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_static.cpp
new file mode 100644
index 00000000000..9a305712f1d
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_static.cpp
@@ -0,0 +1,48 @@
+//
+// cpp03/can_query_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct static_query<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+ static int value() { return 123; }
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_query<object, prop>::value));
+ assert((asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_query_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_query_unsupported.cpp
new file mode 100644
index 00000000000..8eefbe9bd14
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_query_unsupported.cpp
@@ -0,0 +1,36 @@
+//
+// cpp03/can_query_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+
+template <>
+struct is_applicable_property<object, prop>
+{
+ static const bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_query<object, prop>::value));
+ assert((!asio::can_query<const object, prop>::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_free.cpp
new file mode 100644
index 00000000000..810dfc240a2
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_free.cpp
@@ -0,0 +1,55 @@
+//
+// cpp03/can_require_concept_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_concept_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_require_concept<object<1>, prop<2> >::value));
+ assert((asio::can_require_concept<const object<1>, prop<2> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_member.cpp
new file mode 100644
index 00000000000..615e8a09cd7
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_member.cpp
@@ -0,0 +1,55 @@
+//
+// cpp03/can_require_concept_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_concept_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_require_concept<object<1>, prop<2> >::value));
+ assert((asio::can_require_concept<const object<1>, prop<2> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_free.cpp
new file mode 100644
index 00000000000..c076dd416cd
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_free.cpp
@@ -0,0 +1,48 @@
+//
+// cpp03/can_require_concept_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct require_concept_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require_concept<object<1>, prop<2> >::value));
+ assert((!asio::can_require_concept<const object<1>, prop<2> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_member.cpp
new file mode 100644
index 00000000000..e6e258e8424
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_member.cpp
@@ -0,0 +1,48 @@
+//
+// cpp03/can_require_concept_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct require_concept_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require_concept<object<1>, prop<2> >::value));
+ assert((!asio::can_require_concept<const object<1>, prop<2> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_static.cpp
new file mode 100644
index 00000000000..c42a1b3fca4
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_static.cpp
@@ -0,0 +1,41 @@
+//
+// cpp03/can_require_concept_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<int N>
+struct static_require_concept<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require_concept<object<1>, prop<2> >::value));
+ assert((!asio::can_require_concept<const object<1>, prop<2> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..261c4be3728
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_not_applicable_unsupported.cpp
@@ -0,0 +1,28 @@
+//
+// cpp03/can_require_concept_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ assert((!asio::can_require_concept<object<1>, prop<2> >::value));
+ assert((!asio::can_require_concept<const object<1>, prop<2> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_static.cpp
new file mode 100644
index 00000000000..3c7d7bf4508
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_static.cpp
@@ -0,0 +1,48 @@
+//
+// cpp03/can_require_concept_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require_concept<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_require_concept<object<1>, prop<1> >::value));
+ assert((asio::can_require_concept<const object<1>, prop<1> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_unsupported.cpp
new file mode 100644
index 00000000000..0fbcbd36525
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_concept_unsupported.cpp
@@ -0,0 +1,38 @@
+//
+// cpp03/can_require_concept_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require_concept<object<1>, prop<2> >::value));
+ assert((!asio::can_require_concept<const object<1>, prop<2> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_free.cpp
new file mode 100644
index 00000000000..fdd9241efa0
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_free.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_require_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_require<object<1>, prop<2> >::value));
+ assert((asio::can_require<object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_require<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((asio::can_require<const object<1>, prop<2> >::value));
+ assert((asio::can_require<const object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_require<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_member.cpp
new file mode 100644
index 00000000000..3f9a427333a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_member.cpp
@@ -0,0 +1,59 @@
+//
+// cpp03/can_require_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_require<object<1>, prop<2> >::value));
+ assert((asio::can_require<object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_require<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((asio::can_require<const object<1>, prop<2> >::value));
+ assert((asio::can_require<const object<1>, prop<2>, prop<3> >::value));
+ assert((asio::can_require<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_free.cpp
new file mode 100644
index 00000000000..4bf8ca32a2c
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_free.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_require_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct require_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require<object<1>, prop<2> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_require<const object<1>, prop<2> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_member.cpp
new file mode 100644
index 00000000000..842c8d4bee9
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_member.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_require_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+namespace traits {
+
+template<int N, int M>
+struct require_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require<object<1>, prop<2> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_require<const object<1>, prop<2> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_static.cpp
new file mode 100644
index 00000000000..e8d9ac63aa2
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_static.cpp
@@ -0,0 +1,45 @@
+//
+// cpp03/can_require_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require<object<1>, prop<1> >::value));
+ assert((!asio::can_require<object<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_require<object<1>, prop<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_require<const object<1>, prop<1> >::value));
+ assert((!asio::can_require<const object<1>, prop<1>, prop<1> >::value));
+ assert((!asio::can_require<const object<1>, prop<1>, prop<1>, prop<1> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..6fe234731dc
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_not_applicable_unsupported.cpp
@@ -0,0 +1,32 @@
+//
+// cpp03/can_require_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ assert((!asio::can_require<object<1>, prop<2> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_require<const object<1>, prop<2> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_static.cpp
new file mode 100644
index 00000000000..5d4a65749b2
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_static.cpp
@@ -0,0 +1,52 @@
+//
+// cpp03/can_require_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ assert((asio::can_require<object<1>, prop<1> >::value));
+ assert((asio::can_require<object<1>, prop<1>, prop<1> >::value));
+ assert((asio::can_require<object<1>, prop<1>, prop<1>, prop<1> >::value));
+ assert((asio::can_require<const object<1>, prop<1> >::value));
+ assert((asio::can_require<const object<1>, prop<1>, prop<1> >::value));
+ assert((asio::can_require<const object<1>, prop<1>, prop<1>, prop<1> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/can_require_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/can_require_unsupported.cpp
new file mode 100644
index 00000000000..f3bf74b0499
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/can_require_unsupported.cpp
@@ -0,0 +1,42 @@
+//
+// cpp03/can_require_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ assert((!asio::can_require<object<1>, prop<2> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<object<1>, prop<2>, prop<3>, prop<4> >::value));
+ assert((!asio::can_require<const object<1>, prop<2> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3> >::value));
+ assert((!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4> >::value));
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/prefer_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/prefer_free_prefer.cpp
new file mode 100644
index 00000000000..dcf89c7f4af
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/prefer_free_prefer.cpp
@@ -0,0 +1,68 @@
+//
+// cpp03/prefer_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct prefer_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/prefer_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/prefer_free_require.cpp
new file mode 100644
index 00000000000..223d3a60921
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/prefer_free_require.cpp
@@ -0,0 +1,68 @@
+//
+// cpp03/prefer_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/prefer_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp03/prefer_member_prefer.cpp
new file mode 100644
index 00000000000..538f7b2662a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/prefer_member_prefer.cpp
@@ -0,0 +1,68 @@
+//
+// cpp03/prefer_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct prefer_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/prefer_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp03/prefer_member_require.cpp
new file mode 100644
index 00000000000..f659b6fc2bd
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/prefer_member_require.cpp
@@ -0,0 +1,68 @@
+//
+// cpp03/prefer_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/prefer_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/prefer_static.cpp
new file mode 100644
index 00000000000..f5fcb7f89a0
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/prefer_static.cpp
@@ -0,0 +1,61 @@
+//
+// cpp03/prefer_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::prefer(o1, prop<1>());
+ object<1> o3 = asio::prefer(o1, prop<1>(), prop<1>());
+ object<1> o4 = asio::prefer(o1, prop<1>(), prop<1>(), prop<1>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::prefer(o5, prop<1>());
+ object<1> o7 = asio::prefer(o5, prop<1>(), prop<1>());
+ object<1> o8 = asio::prefer(o5, prop<1>(), prop<1>(), prop<1>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/prefer_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp03/prefer_unsupported.cpp
new file mode 100644
index 00000000000..25e0f308a4a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/prefer_unsupported.cpp
@@ -0,0 +1,46 @@
+//
+// cpp03/prefer_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ const object<1>& o2 = asio::prefer(o1, prop<1>());
+ assert(&o1 == &o2);
+ (void)o2;
+
+ const object<1> o3 = {};
+ const object<1>& o4 = asio::prefer(o3, prop<1>());
+ assert(&o3 == &o4);
+ (void)o4;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/query_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/query_free.cpp
new file mode 100644
index 00000000000..a9aae563293
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/query_free.cpp
@@ -0,0 +1,55 @@
+//
+// cpp03/query_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ friend int query(const object&, prop) { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct query_free<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/query_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/query_member.cpp
new file mode 100644
index 00000000000..a1ab83e0200
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/query_member.cpp
@@ -0,0 +1,55 @@
+//
+// cpp03/query_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ int query(prop) const { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct query_member<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/query_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/query_static.cpp
new file mode 100644
index 00000000000..b0e0b4040e4
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/query_static.cpp
@@ -0,0 +1,55 @@
+//
+// cpp03/query_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct static_query<object, prop>
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef int result_type;
+ static int value() { return 123; }
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/require_concept_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/require_concept_free.cpp
new file mode 100644
index 00000000000..6cccdd2774e
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/require_concept_free.cpp
@@ -0,0 +1,60 @@
+//
+// cpp03/require_concept_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_concept_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require_concept(o1, prop<2>());
+ (void)o2;
+
+ const object<1> o3 = {};
+ object<2> o4 = asio::require_concept(o3, prop<2>());
+ (void)o4;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/require_concept_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/require_concept_member.cpp
new file mode 100644
index 00000000000..673493292be
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/require_concept_member.cpp
@@ -0,0 +1,60 @@
+//
+// cpp03/require_concept_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_concept_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require_concept(o1, prop<2>());
+ (void)o2;
+
+ const object<1> o3 = {};
+ object<2> o4 = asio::require_concept(o3, prop<2>());
+ (void)o4;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/require_concept_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/require_concept_static.cpp
new file mode 100644
index 00000000000..e92ffa1ef61
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/require_concept_static.cpp
@@ -0,0 +1,55 @@
+//
+// cpp03/require_concept_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require_concept<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ const object<1>& o2 = asio::require_concept(o1, prop<1>());
+ assert(&o1 == &o2);
+ (void)o2;
+
+ const object<1> o3 = {};
+ const object<1>& o4 = asio::require_concept(o3, prop<1>());
+ assert(&o3 == &o4);
+ (void)o4;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/require_free.cpp b/3rdparty/asio/src/tests/properties/cpp03/require_free.cpp
new file mode 100644
index 00000000000..04734ac3192
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/require_free.cpp
@@ -0,0 +1,68 @@
+//
+// cpp03/require_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_free<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require(o1, prop<2>());
+ object<3> o3 = asio::require(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::require(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::require(o5, prop<2>());
+ object<3> o7 = asio::require(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::require(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/require_member.cpp b/3rdparty/asio/src/tests/properties/cpp03/require_member.cpp
new file mode 100644
index 00000000000..fc6bdc2c9c9
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/require_member.cpp
@@ -0,0 +1,68 @@
+//
+// cpp03/require_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N, int M>
+struct require_member<object<N>, prop<M> >
+{
+ static const bool is_valid = true;
+ static const bool is_noexcept = true;
+ typedef object<M> result_type;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require(o1, prop<2>());
+ object<3> o3 = asio::require(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::require(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::require(o5, prop<2>());
+ object<3> o7 = asio::require(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::require(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp03/require_static.cpp b/3rdparty/asio/src/tests/properties/cpp03/require_static.cpp
new file mode 100644
index 00000000000..33512b32924
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp03/require_static.cpp
@@ -0,0 +1,61 @@
+//
+// cpp03/require_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static const bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static const bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static const bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::require(o1, prop<1>());
+ object<1> o3 = asio::require(o1, prop<1>(), prop<1>());
+ object<1> o4 = asio::require(o1, prop<1>(), prop<1>(), prop<1>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::require(o5, prop<1>());
+ object<1> o7 = asio::require(o5, prop<1>(), prop<1>());
+ object<1> o8 = asio::require(o5, prop<1>(), prop<1>(), prop<1>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_prefer.cpp
new file mode 100644
index 00000000000..860fa6fad5b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_prefer.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_require.cpp
new file mode 100644
index 00000000000..b842e9aa4e9
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_free_require.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_prefer.cpp
new file mode 100644
index 00000000000..9f00cbcaf38
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_prefer.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_require.cpp
new file mode 100644
index 00000000000..a81bae1ae1c
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_member_require.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp
new file mode 100644
index 00000000000..9079c1fc832
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_prefer.cpp
@@ -0,0 +1,38 @@
+//
+// cpp11/can_prefer_not_applicable_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_require.cpp
new file mode 100644
index 00000000000..52fc618ac97
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_free_require.cpp
@@ -0,0 +1,38 @@
+//
+// cpp11/can_prefer_not_applicable_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp
new file mode 100644
index 00000000000..93f0c85c934
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_prefer.cpp
@@ -0,0 +1,38 @@
+//
+// cpp11/can_prefer_not_applicable_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_require.cpp
new file mode 100644
index 00000000000..e17ec93f80a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_member_require.cpp
@@ -0,0 +1,38 @@
+//
+// cpp11/can_prefer_not_applicable_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_static.cpp
new file mode 100644
index 00000000000..9087ed42332
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_static.cpp
@@ -0,0 +1,45 @@
+//
+// cpp11/can_prefer_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..b09d15708a1
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_applicable_unsupported.cpp
@@ -0,0 +1,33 @@
+//
+// cpp11/can_prefer_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp
new file mode 100644
index 00000000000..28a1d151b2d
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_prefer.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_not_preferable_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_require.cpp
new file mode 100644
index 00000000000..cbb105416a4
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_free_require.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_not_preferable_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp
new file mode 100644
index 00000000000..2d460503b79
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_prefer.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_not_preferable_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_require.cpp
new file mode 100644
index 00000000000..4e03c02d895
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_member_require.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_prefer_not_preferable_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_static.cpp
new file mode 100644
index 00000000000..0791d8a02f5
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_static.cpp
@@ -0,0 +1,43 @@
+//
+// cpp11/can_prefer_not_preferable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_unsupported.cpp
new file mode 100644
index 00000000000..059944ece37
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_not_preferable_unsupported.cpp
@@ -0,0 +1,43 @@
+//
+// cpp11/can_prefer_not_preferable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_static.cpp
new file mode 100644
index 00000000000..c928f7ffd63
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_static.cpp
@@ -0,0 +1,52 @@
+//
+// cpp11/can_prefer_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_prefer<object<1>, prop<1>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<1>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_prefer_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_unsupported.cpp
new file mode 100644
index 00000000000..32d6ac5c0d3
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_prefer_unsupported.cpp
@@ -0,0 +1,43 @@
+//
+// cpp11/can_prefer_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_prefer<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_prefer<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_free.cpp
new file mode 100644
index 00000000000..330493ba328
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_free.cpp
@@ -0,0 +1,37 @@
+//
+// cpp11/can_query_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ friend constexpr int query(const object&, prop) { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_query<object, prop>::value, "");
+ static_assert(asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_member.cpp
new file mode 100644
index 00000000000..e1442d9f296
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_member.cpp
@@ -0,0 +1,37 @@
+//
+// cpp11/can_query_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ constexpr int query(prop) const { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_query<object, prop>::value, "");
+ static_assert(asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_free.cpp
new file mode 100644
index 00000000000..2be49af0c64
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_free.cpp
@@ -0,0 +1,27 @@
+//
+// cpp11/can_query_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ friend constexpr int query(const object&, prop) { return 123; }
+};
+
+int main()
+{
+ static_assert(!asio::can_query<object, prop>::value, "");
+ static_assert(!asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_member.cpp
new file mode 100644
index 00000000000..788148df4a9
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_member.cpp
@@ -0,0 +1,27 @@
+//
+// cpp11/can_query_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ constexpr int query(prop) const { return 123; }
+};
+
+int main()
+{
+ static_assert(!asio::can_query<object, prop>::value, "");
+ static_assert(!asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_static.cpp
new file mode 100644
index 00000000000..c57848c7a9f
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_static.cpp
@@ -0,0 +1,41 @@
+//
+// cpp11/can_query_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<>
+struct static_query<object, prop>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef int result_type;
+ static constexpr int value() { return 123; }
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_query<object, prop>::value, "");
+ static_assert(!asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..79bff6231ab
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_not_applicable_unsupported.cpp
@@ -0,0 +1,26 @@
+//
+// cpp11/can_query_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_query<object, prop>::value, "");
+ static_assert(!asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_static.cpp
new file mode 100644
index 00000000000..6dc25819a43
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_static.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_query_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct static_query<object, prop>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef int result_type;
+ static constexpr int value() { return 123; }
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_query<object, prop>::value, "");
+ static_assert(asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_query_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_query_unsupported.cpp
new file mode 100644
index 00000000000..369955e474a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_query_unsupported.cpp
@@ -0,0 +1,36 @@
+//
+// cpp11/can_query_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_query<object, prop>::value, "");
+ static_assert(!asio::can_query<const object, prop>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_free.cpp
new file mode 100644
index 00000000000..3dd617097a2
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_free.cpp
@@ -0,0 +1,44 @@
+//
+// cpp11/can_require_concept_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_member.cpp
new file mode 100644
index 00000000000..55ac468247b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_member.cpp
@@ -0,0 +1,44 @@
+//
+// cpp11/can_require_concept_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_free.cpp
new file mode 100644
index 00000000000..af40b48bdec
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_free.cpp
@@ -0,0 +1,34 @@
+//
+// cpp11/can_require_concept_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_member.cpp
new file mode 100644
index 00000000000..baf6b9f482f
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_member.cpp
@@ -0,0 +1,34 @@
+//
+// cpp11/can_require_concept_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_static.cpp
new file mode 100644
index 00000000000..7d7f13876d8
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_static.cpp
@@ -0,0 +1,41 @@
+//
+// cpp11/can_require_concept_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<int N>
+struct static_require_concept<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..13e05b231b5
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_not_applicable_unsupported.cpp
@@ -0,0 +1,28 @@
+//
+// cpp11/can_require_concept_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_static.cpp
new file mode 100644
index 00000000000..07973a5bd14
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_static.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_require_concept_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require_concept<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_require_concept<object<1>, prop<1>>::value, "");
+ static_assert(asio::can_require_concept<const object<1>, prop<1>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_unsupported.cpp
new file mode 100644
index 00000000000..4a4fee1f705
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_concept_unsupported.cpp
@@ -0,0 +1,38 @@
+//
+// cpp11/can_require_concept_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_free.cpp
new file mode 100644
index 00000000000..b66965e60e1
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_free.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_require_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_require<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_require<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_require<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<2>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_member.cpp
new file mode 100644
index 00000000000..cac464174f1
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_member.cpp
@@ -0,0 +1,48 @@
+//
+// cpp11/can_require_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_require<object<1>, prop<2>>::value, "");
+ static_assert(asio::can_require<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_require<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<2>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_free.cpp
new file mode 100644
index 00000000000..9705b87b244
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_free.cpp
@@ -0,0 +1,38 @@
+//
+// cpp11/can_require_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_member.cpp
new file mode 100644
index 00000000000..cd7f75fef34
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_member.cpp
@@ -0,0 +1,38 @@
+//
+// cpp11/can_require_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_static.cpp
new file mode 100644
index 00000000000..f852e451513
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_static.cpp
@@ -0,0 +1,45 @@
+//
+// cpp11/can_require_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_require<object<1>, prop<1>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<1>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..e6286aba02c
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_not_applicable_unsupported.cpp
@@ -0,0 +1,32 @@
+//
+// cpp11/can_require_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_require<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_static.cpp
new file mode 100644
index 00000000000..4c1b38fc2c0
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_static.cpp
@@ -0,0 +1,52 @@
+//
+// cpp11/can_require_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ static_assert(asio::can_require<object<1>, prop<1>>::value, "");
+ static_assert(asio::can_require<object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(asio::can_require<object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<1>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<1>, prop<1>>::value, "");
+ static_assert(asio::can_require<const object<1>, prop<1>, prop<1>, prop<1>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/can_require_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/can_require_unsupported.cpp
new file mode 100644
index 00000000000..bc9c4ed2072
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/can_require_unsupported.cpp
@@ -0,0 +1,42 @@
+//
+// cpp11/can_require_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_require<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>>::value, "");
+ static_assert(!asio::can_require<const object<1>, prop<2>, prop<3>, prop<4>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/prefer_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/prefer_free_prefer.cpp
new file mode 100644
index 00000000000..3faf0019399
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/prefer_free_prefer.cpp
@@ -0,0 +1,64 @@
+//
+// cpp11/prefer_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/prefer_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/prefer_free_require.cpp
new file mode 100644
index 00000000000..f30d0fbb06f
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/prefer_free_require.cpp
@@ -0,0 +1,64 @@
+//
+// cpp11/prefer_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/prefer_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp11/prefer_member_prefer.cpp
new file mode 100644
index 00000000000..9803d5e5e95
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/prefer_member_prefer.cpp
@@ -0,0 +1,64 @@
+//
+// cpp11/prefer_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/prefer_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp11/prefer_member_require.cpp
new file mode 100644
index 00000000000..701fb2dec81
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/prefer_member_require.cpp
@@ -0,0 +1,64 @@
+//
+// cpp11/prefer_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/prefer_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/prefer_static.cpp
new file mode 100644
index 00000000000..18cd713d9d0
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/prefer_static.cpp
@@ -0,0 +1,68 @@
+//
+// cpp11/prefer_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::prefer(o1, prop<1>());
+ object<1> o3 = asio::prefer(o1, prop<1>(), prop<1>());
+ object<1> o4 = asio::prefer(o1, prop<1>(), prop<1>(), prop<1>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::prefer(o5, prop<1>());
+ object<1> o7 = asio::prefer(o5, prop<1>(), prop<1>());
+ object<1> o8 = asio::prefer(o5, prop<1>(), prop<1>(), prop<1>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<1> o9 = asio::prefer(object<1>(), prop<1>());
+ constexpr object<1> o10 = asio::prefer(object<1>(), prop<1>(), prop<1>());
+ constexpr object<1> o11 = asio::prefer(object<1>(), prop<1>(), prop<1>(), prop<1>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/prefer_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp11/prefer_unsupported.cpp
new file mode 100644
index 00000000000..8eb542301ec
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/prefer_unsupported.cpp
@@ -0,0 +1,59 @@
+//
+// cpp11/prefer_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::prefer(o1, prop<2>());
+ object<1> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<1> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::prefer(o5, prop<2>());
+ object<1> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<1> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<1> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<1> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<1> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/query_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/query_free.cpp
new file mode 100644
index 00000000000..17a14dc3f5a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/query_free.cpp
@@ -0,0 +1,49 @@
+//
+// cpp11/query_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ friend constexpr int query(const object&, prop) { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+
+ constexpr object o3 = {};
+ constexpr int result3 = asio::query(o3, prop());
+ assert(result3 == 123);
+ (void)result3;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/query_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/query_member.cpp
new file mode 100644
index 00000000000..18ea24171ab
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/query_member.cpp
@@ -0,0 +1,49 @@
+//
+// cpp11/query_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ constexpr int query(prop) const { return 123; }
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+
+ constexpr object o3 = {};
+ constexpr int result3 = asio::query(o3, prop());
+ assert(result3 == 123);
+ (void)result3;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/query_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/query_static.cpp
new file mode 100644
index 00000000000..3290ab0971f
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/query_static.cpp
@@ -0,0 +1,60 @@
+//
+// cpp11/query_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+namespace asio {
+
+template<>
+struct is_applicable_property<object, prop>
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<>
+struct static_query<object, prop>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef int result_type;
+ static constexpr int value() { return 123; }
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+
+ constexpr object o3 = {};
+ constexpr int result3 = asio::query(o3, prop());
+ assert(result3 == 123);
+ (void)result3;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/require_concept_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/require_concept_free.cpp
new file mode 100644
index 00000000000..3f422988d2a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/require_concept_free.cpp
@@ -0,0 +1,52 @@
+//
+// cpp11/require_concept_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require_concept(o1, prop<2>());
+ (void)o2;
+
+ const object<1> o3 = {};
+ object<2> o4 = asio::require_concept(o3, prop<2>());
+ (void)o4;
+
+ constexpr object<2> o5 = asio::require_concept(object<1>(), prop<2>());
+ (void)o5;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/require_concept_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/require_concept_member.cpp
new file mode 100644
index 00000000000..1f8bbf65b42
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/require_concept_member.cpp
@@ -0,0 +1,52 @@
+//
+// cpp11/require_concept_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require_concept(o1, prop<2>());
+ (void)o2;
+
+ const object<1> o3 = {};
+ object<2> o4 = asio::require_concept(o3, prop<2>());
+ (void)o4;
+
+ constexpr object<2> o5 = asio::require_concept(object<1>(), prop<2>());
+ (void)o5;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/require_concept_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/require_concept_static.cpp
new file mode 100644
index 00000000000..b2a6f9dde39
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/require_concept_static.cpp
@@ -0,0 +1,58 @@
+//
+// cpp11/require_concept_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require_concept<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ const object<1>& o2 = asio::require_concept(o1, prop<1>());
+ assert(&o1 == &o2);
+ (void)o2;
+
+ const object<1> o3 = {};
+ const object<1>& o4 = asio::require_concept(o3, prop<1>());
+ assert(&o3 == &o4);
+ (void)o4;
+
+ constexpr object<1> o5 = asio::require_concept(object<1>(), prop<1>());
+ (void)o5;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/require_free.cpp b/3rdparty/asio/src/tests/properties/cpp11/require_free.cpp
new file mode 100644
index 00000000000..1acd5bc78ce
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/require_free.cpp
@@ -0,0 +1,64 @@
+//
+// cpp11/require_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require(o1, prop<2>());
+ object<3> o3 = asio::require(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::require(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::require(o5, prop<2>());
+ object<3> o7 = asio::require(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::require(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::require(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::require(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::require(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/require_member.cpp b/3rdparty/asio/src/tests/properties/cpp11/require_member.cpp
new file mode 100644
index 00000000000..e9192830811
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/require_member.cpp
@@ -0,0 +1,64 @@
+//
+// cpp11/require_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require(o1, prop<2>());
+ object<3> o3 = asio::require(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::require(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::require(o5, prop<2>());
+ object<3> o7 = asio::require(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::require(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::require(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::require(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::require(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp11/require_static.cpp b/3rdparty/asio/src/tests/properties/cpp11/require_static.cpp
new file mode 100644
index 00000000000..e752dac10a4
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp11/require_static.cpp
@@ -0,0 +1,68 @@
+//
+// cpp11/require_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+namespace traits {
+
+template<int N>
+struct static_require<object<N>, prop<N> >
+{
+ static constexpr bool is_valid = true;
+};
+
+} // namespace traits
+} // namespace asio
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::require(o1, prop<1>());
+ object<1> o3 = asio::require(o1, prop<1>(), prop<1>());
+ object<1> o4 = asio::require(o1, prop<1>(), prop<1>(), prop<1>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::require(o5, prop<1>());
+ object<1> o7 = asio::require(o5, prop<1>(), prop<1>());
+ object<1> o8 = asio::require(o5, prop<1>(), prop<1>(), prop<1>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<1> o9 = asio::require(object<1>(), prop<1>());
+ constexpr object<1> o10 = asio::require(object<1>(), prop<1>(), prop<1>());
+ constexpr object<1> o11 = asio::require(object<1>(), prop<1>(), prop<1>(), prop<1>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_prefer.cpp
new file mode 100644
index 00000000000..f7f2854233c
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_prefer.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_require.cpp
new file mode 100644
index 00000000000..a2a01e4d739
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_free_require.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_prefer.cpp
new file mode 100644
index 00000000000..b0d9622bd5b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_prefer.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_require.cpp
new file mode 100644
index 00000000000..9d1146ad323
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_member_require.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp
new file mode 100644
index 00000000000..1a305fc3ae6
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_prefer.cpp
@@ -0,0 +1,38 @@
+//
+// cpp14/can_prefer_not_applicable_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_require.cpp
new file mode 100644
index 00000000000..c5d732441d7
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_free_require.cpp
@@ -0,0 +1,38 @@
+//
+// cpp14/can_prefer_not_applicable_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp
new file mode 100644
index 00000000000..66af105ead3
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_prefer.cpp
@@ -0,0 +1,38 @@
+//
+// cpp14/can_prefer_not_applicable_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_require.cpp
new file mode 100644
index 00000000000..a2bf20b6e89
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_member_require.cpp
@@ -0,0 +1,38 @@
+//
+// cpp14/can_prefer_not_applicable_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_static.cpp
new file mode 100644
index 00000000000..123fd863f48
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_static.cpp
@@ -0,0 +1,35 @@
+//
+// cpp14/can_prefer_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_preferable = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<1>, prop<1>, prop<1>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..ed67b39d6a2
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_applicable_unsupported.cpp
@@ -0,0 +1,32 @@
+//
+// cpp14/can_prefer_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp
new file mode 100644
index 00000000000..99cb8074746
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_prefer.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_not_preferable_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_require.cpp
new file mode 100644
index 00000000000..0e3329de423
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_free_require.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_not_preferable_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp
new file mode 100644
index 00000000000..12213cd57e9
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_prefer.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_not_preferable_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_require.cpp
new file mode 100644
index 00000000000..d801a808b4d
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_member_require.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_prefer_not_preferable_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_static.cpp
new file mode 100644
index 00000000000..cbaf4eecc46
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_static.cpp
@@ -0,0 +1,34 @@
+//
+// cpp14/can_prefer_not_preferable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<1>, prop<1>, prop<1>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_unsupported.cpp
new file mode 100644
index 00000000000..aa37aedd3c6
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_not_preferable_unsupported.cpp
@@ -0,0 +1,34 @@
+//
+// cpp14/can_prefer_not_preferable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = false;
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_static.cpp
new file mode 100644
index 00000000000..3933a78839b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_static.cpp
@@ -0,0 +1,36 @@
+//
+// cpp14/can_prefer_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(asio::can_prefer_v<object<1>, prop<1>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<1>, prop<1>>, "");
+ static_assert(asio::can_prefer_v<object<1>, prop<1>, prop<1>, prop<1>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<1>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<1>, prop<1>>, "");
+ static_assert(asio::can_prefer_v<const object<1>, prop<1>, prop<1>, prop<1>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_prefer_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_unsupported.cpp
new file mode 100644
index 00000000000..09ce8e02f18
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_prefer_unsupported.cpp
@@ -0,0 +1,42 @@
+//
+// cpp14/can_prefer_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_prefer_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_free.cpp
new file mode 100644
index 00000000000..7654a78a06a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_free.cpp
@@ -0,0 +1,28 @@
+//
+// cpp14/can_query_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+};
+
+struct object
+{
+ friend constexpr int query(const object&, prop) { return 123; }
+};
+
+int main()
+{
+ static_assert(asio::can_query_v<object, prop>, "");
+ static_assert(asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_member.cpp
new file mode 100644
index 00000000000..6bd6c02c98b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_member.cpp
@@ -0,0 +1,28 @@
+//
+// cpp14/can_query_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+};
+
+struct object
+{
+ constexpr int query(prop) const { return 123; }
+};
+
+int main()
+{
+ static_assert(asio::can_query_v<object, prop>, "");
+ static_assert(asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_free.cpp
new file mode 100644
index 00000000000..bda1770699b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_free.cpp
@@ -0,0 +1,27 @@
+//
+// cpp14/can_query_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ friend constexpr int query(const object&, prop) { return 123; }
+};
+
+int main()
+{
+ static_assert(!asio::can_query_v<object, prop>, "");
+ static_assert(!asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_member.cpp
new file mode 100644
index 00000000000..25b6ab9c793
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_member.cpp
@@ -0,0 +1,27 @@
+//
+// cpp14/can_query_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+ constexpr int query(prop) const { return 123; }
+};
+
+int main()
+{
+ static_assert(!asio::can_query_v<object, prop>, "");
+ static_assert(!asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_static.cpp
new file mode 100644
index 00000000000..299a5e1f2a5
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_static.cpp
@@ -0,0 +1,27 @@
+//
+// cpp14/can_query_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr int static_query_v = 123;
+};
+
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_query_v<object, prop>, "");
+ static_assert(!asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..cec0aea9167
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_not_applicable_unsupported.cpp
@@ -0,0 +1,26 @@
+//
+// cpp14/can_query_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+};
+
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_query_v<object, prop>, "");
+ static_assert(!asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_static.cpp
new file mode 100644
index 00000000000..67b19ac74ed
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_static.cpp
@@ -0,0 +1,28 @@
+//
+// cpp14/can_query_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ template <typename> static constexpr int static_query_v = 123;
+};
+
+struct object
+{
+};
+
+int main()
+{
+ static_assert(asio::can_query_v<object, prop>, "");
+ static_assert(asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_query_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_query_unsupported.cpp
new file mode 100644
index 00000000000..7e8f63f1405
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_query_unsupported.cpp
@@ -0,0 +1,27 @@
+//
+// cpp14/can_query_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+};
+
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_query_v<object, prop>, "");
+ static_assert(!asio::can_query_v<const object, prop>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_free.cpp
new file mode 100644
index 00000000000..e0dea96edf0
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_free.cpp
@@ -0,0 +1,35 @@
+//
+// cpp14/can_require_concept_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_require_concept_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_require_concept_v<const object<1>, prop<2>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_member.cpp
new file mode 100644
index 00000000000..7da0a580a6f
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_member.cpp
@@ -0,0 +1,35 @@
+//
+// cpp14/can_require_concept_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_require_concept_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_require_concept_v<const object<1>, prop<2>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_free.cpp
new file mode 100644
index 00000000000..f6d48165356
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_free.cpp
@@ -0,0 +1,34 @@
+//
+// cpp14/can_require_concept_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require_concept_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_concept_v<const object<1>, prop<2>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_member.cpp
new file mode 100644
index 00000000000..5252cb77447
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_member.cpp
@@ -0,0 +1,34 @@
+//
+// cpp14/can_require_concept_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require_concept_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_concept_v<const object<1>, prop<2>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_static.cpp
new file mode 100644
index 00000000000..7da83a988fb
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_static.cpp
@@ -0,0 +1,31 @@
+//
+// cpp14/can_require_concept_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable_concept = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_require_concept_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_concept_v<const object<1>, prop<2>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..939b450be73
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_not_applicable_unsupported.cpp
@@ -0,0 +1,28 @@
+//
+// cpp14/can_require_concept_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_require_concept_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_concept_v<const object<1>, prop<2>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_static.cpp
new file mode 100644
index 00000000000..577363a0eea
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_static.cpp
@@ -0,0 +1,32 @@
+//
+// cpp14/can_require_concept_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable_concept = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(asio::can_require_concept_v<object<1>, prop<1>>, "");
+ static_assert(asio::can_require_concept_v<const object<1>, prop<1>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_unsupported.cpp
new file mode 100644
index 00000000000..2bcdc6c7606
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_concept_unsupported.cpp
@@ -0,0 +1,38 @@
+//
+// cpp14/can_require_concept_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_require_concept<object<1>, prop<2>>::value, "");
+ static_assert(!asio::can_require_concept<const object<1>, prop<2>>::value, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_free.cpp
new file mode 100644
index 00000000000..f0bda074d5a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_free.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_require_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_require_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_require_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_require_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<2>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_member.cpp
new file mode 100644
index 00000000000..0eeb0aa45c5
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_member.cpp
@@ -0,0 +1,39 @@
+//
+// cpp14/can_require_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(asio::can_require_v<object<1>, prop<2>>, "");
+ static_assert(asio::can_require_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_require_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<2>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_free.cpp
new file mode 100644
index 00000000000..f68576e2f1c
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_free.cpp
@@ -0,0 +1,38 @@
+//
+// cpp14/can_require_not_applicable_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_member.cpp
new file mode 100644
index 00000000000..1c7aa953aeb
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_member.cpp
@@ -0,0 +1,38 @@
+//
+// cpp14/can_require_not_applicable_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ static_assert(!asio::can_require_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_static.cpp
new file mode 100644
index 00000000000..ba7b5a80ccc
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_static.cpp
@@ -0,0 +1,35 @@
+//
+// cpp14/can_require_not_applicable_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ static constexpr bool is_requirable = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_require_v<object<1>, prop<1>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<1>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<1>, prop<1>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<1>, prop<1>, prop<1>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_unsupported.cpp
new file mode 100644
index 00000000000..25d71e35d48
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_not_applicable_unsupported.cpp
@@ -0,0 +1,32 @@
+//
+// cpp14/can_require_not_applicable_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(!asio::can_require_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_static.cpp
new file mode 100644
index 00000000000..f92c0b56c8a
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_static.cpp
@@ -0,0 +1,36 @@
+//
+// cpp14/can_require_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ static_assert(asio::can_require_v<object<1>, prop<1>>, "");
+ static_assert(asio::can_require_v<object<1>, prop<1>, prop<1>>, "");
+ static_assert(asio::can_require_v<object<1>, prop<1>, prop<1>, prop<1>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<1>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<1>, prop<1>>, "");
+ static_assert(asio::can_require_v<const object<1>, prop<1>, prop<1>, prop<1>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/can_require_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/can_require_unsupported.cpp
new file mode 100644
index 00000000000..4cf2756d40b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/can_require_unsupported.cpp
@@ -0,0 +1,42 @@
+//
+// cpp14/can_require_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+};
+
+template <int>
+struct object
+{
+};
+
+namespace asio {
+
+template<int N, int M>
+struct is_applicable_property<object<N>, prop<M> >
+{
+ static constexpr bool value = true;
+};
+
+} // namespace asio
+
+int main()
+{
+ static_assert(!asio::can_require_v<object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<object<1>, prop<2>, prop<3>, prop<4>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>>, "");
+ static_assert(!asio::can_require_v<const object<1>, prop<2>, prop<3>, prop<4>>, "");
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/prefer_free_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/prefer_free_prefer.cpp
new file mode 100644
index 00000000000..fce83ed6b9f
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/prefer_free_prefer.cpp
@@ -0,0 +1,55 @@
+//
+// cpp14/prefer_free_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> prefer(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/prefer_free_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/prefer_free_require.cpp
new file mode 100644
index 00000000000..349aebeb515
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/prefer_free_require.cpp
@@ -0,0 +1,55 @@
+//
+// cpp14/prefer_free_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/prefer_member_prefer.cpp b/3rdparty/asio/src/tests/properties/cpp14/prefer_member_prefer.cpp
new file mode 100644
index 00000000000..56d29efd34c
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/prefer_member_prefer.cpp
@@ -0,0 +1,55 @@
+//
+// cpp14/prefer_member_prefer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> prefer(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/prefer_member_require.cpp b/3rdparty/asio/src/tests/properties/cpp14/prefer_member_require.cpp
new file mode 100644
index 00000000000..7b88df406e8
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/prefer_member_require.cpp
@@ -0,0 +1,55 @@
+//
+// cpp14/prefer_member_require.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::prefer(o1, prop<2>());
+ object<3> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::prefer(o5, prop<2>());
+ object<3> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/prefer_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/prefer_static.cpp
new file mode 100644
index 00000000000..8fd537ae74b
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/prefer_static.cpp
@@ -0,0 +1,52 @@
+//
+// cpp14/prefer_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::prefer(o1, prop<1>());
+ object<1> o3 = asio::prefer(o1, prop<1>(), prop<1>());
+ object<1> o4 = asio::prefer(o1, prop<1>(), prop<1>(), prop<1>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::prefer(o5, prop<1>());
+ object<1> o7 = asio::prefer(o5, prop<1>(), prop<1>());
+ object<1> o8 = asio::prefer(o5, prop<1>(), prop<1>(), prop<1>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<1> o9 = asio::prefer(object<1>(), prop<1>());
+ constexpr object<1> o10 = asio::prefer(object<1>(), prop<1>(), prop<1>());
+ constexpr object<1> o11 = asio::prefer(object<1>(), prop<1>(), prop<1>(), prop<1>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/prefer_unsupported.cpp b/3rdparty/asio/src/tests/properties/cpp14/prefer_unsupported.cpp
new file mode 100644
index 00000000000..50b8da0f9d3
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/prefer_unsupported.cpp
@@ -0,0 +1,50 @@
+//
+// cpp14/prefer_unsupported.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/prefer.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_preferable = true;
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::prefer(o1, prop<2>());
+ object<1> o3 = asio::prefer(o1, prop<2>(), prop<3>());
+ object<1> o4 = asio::prefer(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::prefer(o5, prop<2>());
+ object<1> o7 = asio::prefer(o5, prop<2>(), prop<3>());
+ object<1> o8 = asio::prefer(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<1> o9 = asio::prefer(object<1>(), prop<2>());
+ constexpr object<1> o10 = asio::prefer(object<1>(), prop<2>(), prop<3>());
+ constexpr object<1> o11 = asio::prefer(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/query_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/query_free.cpp
new file mode 100644
index 00000000000..24be8dbe945
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/query_free.cpp
@@ -0,0 +1,40 @@
+//
+// cpp14/query_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+};
+
+struct object
+{
+ friend constexpr int query(const object&, prop) { return 123; }
+};
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+
+ constexpr object o3 = {};
+ constexpr int result3 = asio::query(o3, prop());
+ assert(result3 == 123);
+ (void)result3;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/query_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/query_member.cpp
new file mode 100644
index 00000000000..fab0bed9d03
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/query_member.cpp
@@ -0,0 +1,40 @@
+//
+// cpp14/query_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+};
+
+struct object
+{
+ constexpr int query(prop) const { return 123; }
+};
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+
+ constexpr object o3 = {};
+ constexpr int result3 = asio::query(o3, prop());
+ assert(result3 == 123);
+ (void)result3;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/query_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/query_static.cpp
new file mode 100644
index 00000000000..d13ad85c3c6
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/query_static.cpp
@@ -0,0 +1,40 @@
+//
+// cpp14/query_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/query.hpp"
+#include <cassert>
+
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ template <typename> static constexpr int static_query_v = 123;
+};
+
+struct object
+{
+};
+
+int main()
+{
+ object o1 = {};
+ int result1 = asio::query(o1, prop());
+ assert(result1 == 123);
+ (void)result1;
+
+ const object o2 = {};
+ int result2 = asio::query(o2, prop());
+ assert(result2 == 123);
+ (void)result2;
+
+ constexpr object o3 = {};
+ constexpr int result3 = asio::query(o3, prop());
+ assert(result3 == 123);
+ (void)result3;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/require_concept_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/require_concept_free.cpp
new file mode 100644
index 00000000000..d7323db95ba
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/require_concept_free.cpp
@@ -0,0 +1,43 @@
+//
+// cpp14/require_concept_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require_concept(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require_concept(o1, prop<2>());
+ (void)o2;
+
+ const object<1> o3 = {};
+ object<2> o4 = asio::require_concept(o3, prop<2>());
+ (void)o4;
+
+ constexpr object<2> o5 = asio::require_concept(object<1>(), prop<2>());
+ (void)o5;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/require_concept_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/require_concept_member.cpp
new file mode 100644
index 00000000000..e21dda3f6e4
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/require_concept_member.cpp
@@ -0,0 +1,43 @@
+//
+// cpp14/require_concept_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable_concept = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require_concept(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require_concept(o1, prop<2>());
+ (void)o2;
+
+ const object<1> o3 = {};
+ object<2> o4 = asio::require_concept(o3, prop<2>());
+ (void)o4;
+
+ constexpr object<2> o5 = asio::require_concept(object<1>(), prop<2>());
+ (void)o5;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/require_concept_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/require_concept_static.cpp
new file mode 100644
index 00000000000..523ed758061
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/require_concept_static.cpp
@@ -0,0 +1,42 @@
+//
+// cpp14/require_concept_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require_concept.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable_concept = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ object<1> o1 = {};
+ const object<1>& o2 = asio::require_concept(o1, prop<1>());
+ assert(&o1 == &o2);
+ (void)o2;
+
+ const object<1> o3 = {};
+ const object<1>& o4 = asio::require_concept(o3, prop<1>());
+ assert(&o3 == &o4);
+ (void)o4;
+
+ constexpr object<1> o5 = asio::require_concept(object<1>(), prop<1>());
+ (void)o5;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/require_free.cpp b/3rdparty/asio/src/tests/properties/cpp14/require_free.cpp
new file mode 100644
index 00000000000..32893ff26ee
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/require_free.cpp
@@ -0,0 +1,55 @@
+//
+// cpp14/require_free.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ friend constexpr object<N> require(const object&, prop<N>)
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require(o1, prop<2>());
+ object<3> o3 = asio::require(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::require(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::require(o5, prop<2>());
+ object<3> o7 = asio::require(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::require(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::require(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::require(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::require(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/require_member.cpp b/3rdparty/asio/src/tests/properties/cpp14/require_member.cpp
new file mode 100644
index 00000000000..f2e58aa2f76
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/require_member.cpp
@@ -0,0 +1,55 @@
+//
+// cpp14/require_member.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable = true;
+};
+
+template <int>
+struct object
+{
+ template <int N>
+ constexpr object<N> require(prop<N>) const
+ {
+ return object<N>();
+ }
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<2> o2 = asio::require(o1, prop<2>());
+ object<3> o3 = asio::require(o1, prop<2>(), prop<3>());
+ object<4> o4 = asio::require(o1, prop<2>(), prop<3>(), prop<4>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<2> o6 = asio::require(o5, prop<2>());
+ object<3> o7 = asio::require(o5, prop<2>(), prop<3>());
+ object<4> o8 = asio::require(o5, prop<2>(), prop<3>(), prop<4>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<2> o9 = asio::require(object<1>(), prop<2>());
+ constexpr object<3> o10 = asio::require(object<1>(), prop<2>(), prop<3>());
+ constexpr object<4> o11 = asio::require(object<1>(), prop<2>(), prop<3>(), prop<4>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/properties/cpp14/require_static.cpp b/3rdparty/asio/src/tests/properties/cpp14/require_static.cpp
new file mode 100644
index 00000000000..acdd7fbf499
--- /dev/null
+++ b/3rdparty/asio/src/tests/properties/cpp14/require_static.cpp
@@ -0,0 +1,52 @@
+//
+// cpp14/require_static.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+#include "asio/require.hpp"
+#include <cassert>
+
+template <int>
+struct prop
+{
+ template <typename> static constexpr bool is_applicable_property_v = true;
+ static constexpr bool is_requirable = true;
+ template <typename> static constexpr bool static_query_v = true;
+ static constexpr bool value() { return true; }
+};
+
+template <int>
+struct object
+{
+};
+
+int main()
+{
+ object<1> o1 = {};
+ object<1> o2 = asio::require(o1, prop<1>());
+ object<1> o3 = asio::require(o1, prop<1>(), prop<1>());
+ object<1> o4 = asio::require(o1, prop<1>(), prop<1>(), prop<1>());
+ (void)o2;
+ (void)o3;
+ (void)o4;
+
+ const object<1> o5 = {};
+ object<1> o6 = asio::require(o5, prop<1>());
+ object<1> o7 = asio::require(o5, prop<1>(), prop<1>());
+ object<1> o8 = asio::require(o5, prop<1>(), prop<1>(), prop<1>());
+ (void)o6;
+ (void)o7;
+ (void)o8;
+
+ constexpr object<1> o9 = asio::require(object<1>(), prop<1>());
+ constexpr object<1> o10 = asio::require(object<1>(), prop<1>(), prop<1>());
+ constexpr object<1> o11 = asio::require(object<1>(), prop<1>(), prop<1>(), prop<1>());
+ (void)o9;
+ (void)o10;
+ (void)o11;
+}
diff --git a/3rdparty/asio/src/tests/unit/.gitignore b/3rdparty/asio/src/tests/unit/.gitignore
deleted file mode 100644
index e11b5d56f36..00000000000
--- a/3rdparty/asio/src/tests/unit/.gitignore
+++ /dev/null
@@ -1,74 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*.ilk
-*.manifest
-*.pdb
-*.tds
-associated_allocator
-associated_executor
-async_result
-basic_datagram_socket
-basic_deadline_timer
-basic_raw_socket
-basic_seq_packet_socket
-basic_serial_port
-basic_signal_set
-basic_socket_acceptor
-basic_stream_socket
-basic_streambuf
-basic_waitable_timer
-bind_executor
-buffer
-buffered_read_stream
-buffered_stream
-buffered_write_stream
-buffers_iterator
-completion_condition
-connect
-coroutine
-datagram_socket_service
-deadline_timer
-deadline_timer_service
-defer
-dispatch
-error
-error_handler
-execution_context
-executor
-executor_work_guard
-high_resolution_timer
-io_context
-io_service
-is_read_buffered
-is_write_buffered
-packaged_task
-placeholders
-post
-raw_socket_service
-read
-read_at
-read_until
-seq_packet_socket_service
-serial_port
-serial_port_base
-serial_port_service
-signal_set
-signal_set_service
-socket_acceptor_service
-socket_base
-steady_timer
-strand
-stream_socket_service
-streambuf
-system_timer
-thread
-time_traits
-use_future
-uses_executor
-wait_traits
-waitable_timer_service
-write
-write_at
diff --git a/3rdparty/asio/src/tests/unit/any_completion_executor.cpp b/3rdparty/asio/src/tests/unit/any_completion_executor.cpp
new file mode 100644
index 00000000000..5d1d5b1e271
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/any_completion_executor.cpp
@@ -0,0 +1,463 @@
+//
+// any_completion_executor.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/any_completion_executor.hpp"
+
+#include <cstring>
+#include <functional>
+#include "asio/system_executor.hpp"
+#include "asio/thread_pool.hpp"
+#include "unit_test.hpp"
+
+using namespace asio;
+namespace bindns = std;
+
+static bool next_nothrow_new_fails = false;
+
+void* operator new(std::size_t n,
+ const std::nothrow_t&) noexcept
+{
+ if (next_nothrow_new_fails)
+ {
+ next_nothrow_new_fails = false;
+ return 0;
+ }
+ return ::operator new(n);
+}
+
+struct fat_executor
+{
+ fat_executor(int id)
+ : id_(id)
+ {
+ std::memset(data_, 0, sizeof(data_));
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const fat_executor& a,
+ const fat_executor& b) noexcept
+ {
+ return a.id_ == b.id_;
+ }
+
+ friend bool operator!=(const fat_executor& a,
+ const fat_executor& b) noexcept
+ {
+ return a.id_ != b.id_;
+ }
+
+ int id_;
+ unsigned char data_[1024];
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename F>
+struct execute_member<fat_executor, F>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<fat_executor>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void any_completion_executor_construction_test()
+{
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_completion_executor ex1;
+
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_completion_executor ex2(null_ptr);
+
+ ASIO_CHECK(ex2.target<void>() == 0);
+ ASIO_CHECK(ex2 == null_ptr);
+ ASIO_CHECK(ex2 == ex1);
+
+ asio::any_completion_executor ex3(pool.executor());
+
+ ASIO_CHECK(ex3.target<void>() != 0);
+ ASIO_CHECK(ex3 != null_ptr);
+ ASIO_CHECK(ex3 != ex1);
+
+ asio::any_completion_executor ex4(ex1);
+
+ ASIO_CHECK(ex4.target<void>() == 0);
+ ASIO_CHECK(ex4 == null_ptr);
+ ASIO_CHECK(ex4 == ex1);
+
+ asio::any_completion_executor ex5(ex3);
+
+ ASIO_CHECK(ex5.target<void>() != 0);
+ ASIO_CHECK(ex5 != null_ptr);
+ ASIO_CHECK(ex5 == ex3);
+
+ asio::any_completion_executor ex6 = fat_executor(1);
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+
+ asio::any_completion_executor ex7 = fat_executor(1);
+
+ ASIO_CHECK(ex7.target<void>() != 0);
+ ASIO_CHECK(ex7 != null_ptr);
+ ASIO_CHECK(ex7 != ex1);
+ ASIO_CHECK(ex7 == ex6);
+
+ asio::any_completion_executor ex8 = fat_executor(2);
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex8 != null_ptr);
+ ASIO_CHECK(ex8 != ex1);
+ ASIO_CHECK(ex8 != ex6);
+ ASIO_CHECK(ex8 != ex7);
+
+ asio::any_completion_executor ex9(ex6);
+
+ ASIO_CHECK(ex9.target<void>() != 0);
+ ASIO_CHECK(ex9 != null_ptr);
+ ASIO_CHECK(ex9 != ex1);
+ ASIO_CHECK(ex9 == ex6);
+ ASIO_CHECK(ex9 == ex7);
+ ASIO_CHECK(ex9 != ex8);
+
+ asio::any_completion_executor ex10(std::move(ex1));
+
+ ASIO_CHECK(ex10.target<void>() == 0);
+ ASIO_CHECK(ex10 == null_ptr);
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_completion_executor ex11(std::move(ex3));
+
+ ASIO_CHECK(ex11.target<void>() != 0);
+ ASIO_CHECK(ex11 != null_ptr);
+ ASIO_CHECK(ex3.target<void>() == 0);
+ ASIO_CHECK(ex3 == null_ptr);
+ ASIO_CHECK(ex11 == ex5);
+
+ asio::any_completion_executor ex12(std::move(ex7));
+
+ ASIO_CHECK(ex12.target<void>() != 0);
+ ASIO_CHECK(ex12 != null_ptr);
+ ASIO_CHECK(ex7.target<void>() == 0);
+ ASIO_CHECK(ex7 == null_ptr);
+ ASIO_CHECK(ex12 == ex6);
+ ASIO_CHECK(ex12 != ex8);
+}
+
+void any_completion_executor_nothrow_construction_test()
+{
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_completion_executor ex1;
+
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_completion_executor ex2(null_ptr);
+
+ ASIO_CHECK(ex2.target<void>() == 0);
+ ASIO_CHECK(ex2 == null_ptr);
+ ASIO_CHECK(ex2 == ex1);
+
+ asio::any_completion_executor ex3(std::nothrow, pool.executor());
+
+ ASIO_CHECK(ex3.target<void>() != 0);
+ ASIO_CHECK(ex3 != null_ptr);
+ ASIO_CHECK(ex3 != ex1);
+
+ asio::any_completion_executor ex4(std::nothrow, ex1);
+
+ ASIO_CHECK(ex4.target<void>() == 0);
+ ASIO_CHECK(ex4 == null_ptr);
+ ASIO_CHECK(ex4 == ex1);
+
+ asio::any_completion_executor ex5(std::nothrow, ex3);
+
+ ASIO_CHECK(ex5.target<void>() != 0);
+ ASIO_CHECK(ex5 != null_ptr);
+ ASIO_CHECK(ex5 == ex3);
+
+ asio::any_completion_executor ex6(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+
+ asio::any_completion_executor ex7(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex7.target<void>() != 0);
+ ASIO_CHECK(ex7 != null_ptr);
+ ASIO_CHECK(ex7 != ex1);
+ ASIO_CHECK(ex7 == ex6);
+
+ asio::any_completion_executor ex8(std::nothrow, fat_executor(2));
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex8 != null_ptr);
+ ASIO_CHECK(ex8 != ex1);
+ ASIO_CHECK(ex8 != ex6);
+ ASIO_CHECK(ex8 != ex7);
+
+ asio::any_completion_executor ex9(std::nothrow, ex6);
+
+ ASIO_CHECK(ex9.target<void>() != 0);
+ ASIO_CHECK(ex9 != null_ptr);
+ ASIO_CHECK(ex9 != ex1);
+ ASIO_CHECK(ex9 == ex6);
+ ASIO_CHECK(ex9 == ex7);
+ ASIO_CHECK(ex9 != ex8);
+
+ asio::any_completion_executor ex10(std::nothrow, std::move(ex1));
+
+ ASIO_CHECK(ex10.target<void>() == 0);
+ ASIO_CHECK(ex10 == null_ptr);
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_completion_executor ex11(std::nothrow, std::move(ex3));
+
+ ASIO_CHECK(ex11.target<void>() != 0);
+ ASIO_CHECK(ex11 != null_ptr);
+ ASIO_CHECK(ex3.target<void>() == 0);
+ ASIO_CHECK(ex3 == null_ptr);
+ ASIO_CHECK(ex11 == ex5);
+
+ asio::any_completion_executor ex12(std::nothrow, std::move(ex7));
+
+ ASIO_CHECK(ex12.target<void>() != 0);
+ ASIO_CHECK(ex12 != null_ptr);
+ ASIO_CHECK(ex7.target<void>() == 0);
+ ASIO_CHECK(ex7 == null_ptr);
+ ASIO_CHECK(ex12 == ex6);
+ ASIO_CHECK(ex12 != ex8);
+
+ next_nothrow_new_fails = true;
+ asio::any_completion_executor ex13(std::nothrow, fat_executor(3));
+
+ ASIO_CHECK(ex13.target<void>() == 0);
+ ASIO_CHECK(ex13 == null_ptr);
+ ASIO_CHECK(ex13 == ex1);
+}
+
+void any_completion_executor_assignment_test()
+{
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_completion_executor ex1;
+
+ asio::any_completion_executor ex2;
+ ex2 = null_ptr;
+
+ ASIO_CHECK(ex2.target<void>() == 0);
+
+ asio::any_completion_executor ex3;
+ ex3 = pool.executor();
+
+ ASIO_CHECK(ex3.target<void>() != 0);
+
+ asio::any_completion_executor ex4;
+ ex4 = ex1;
+
+ ASIO_CHECK(ex4.target<void>() == 0);
+ ASIO_CHECK(ex4 == ex1);
+
+ ex4 = ex3;
+
+ ASIO_CHECK(ex4.target<void>() != 0);
+ ASIO_CHECK(ex4 == ex3);
+
+ asio::any_completion_executor ex5;
+ ex5 = fat_executor(1);
+
+ ASIO_CHECK(ex5.target<void>() != 0);
+ ASIO_CHECK(ex5 != null_ptr);
+ ASIO_CHECK(ex5 != ex1);
+
+ asio::any_completion_executor ex6;
+ ex6 = fat_executor(1);
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+ ASIO_CHECK(ex6 == ex5);
+
+ ex6 = fat_executor(2);
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+ ASIO_CHECK(ex6 != ex5);
+
+ asio::any_completion_executor ex7;
+ ex7 = ex5;
+
+ ASIO_CHECK(ex7.target<void>() != 0);
+ ASIO_CHECK(ex7 != null_ptr);
+ ASIO_CHECK(ex7 != ex1);
+ ASIO_CHECK(ex7 == ex5);
+ ASIO_CHECK(ex7 != ex6);
+
+ asio::any_completion_executor ex8;
+ ex8 = std::move(ex1);
+
+ ASIO_CHECK(ex8.target<void>() == 0);
+ ASIO_CHECK(ex1.target<void>() == 0);
+
+ ex8 = std::move(ex3);
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex3.target<void>() == 0);
+ ASIO_CHECK(ex8 == ex4);
+
+ ex8 = std::move(ex5);
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex5.target<void>() == 0);
+ ASIO_CHECK(ex8 == ex7);
+}
+
+void any_completion_executor_swap_test()
+{
+ thread_pool pool1(1);
+ thread_pool pool2(1);
+
+ asio::any_completion_executor ex1(pool1.executor());
+ asio::any_completion_executor ex2(pool2.executor());
+
+ asio::any_completion_executor ex3(ex1);
+ asio::any_completion_executor ex4(ex2);
+
+ ASIO_CHECK(ex3 == ex1);
+ ASIO_CHECK(ex4 == ex2);
+
+ ex3.swap(ex4);
+
+ ASIO_CHECK(ex3 == ex2);
+ ASIO_CHECK(ex4 == ex1);
+
+ execution::swap(ex3, ex4);
+
+ ASIO_CHECK(ex3 == ex1);
+ ASIO_CHECK(ex4 == ex2);
+}
+
+void any_completion_executor_query_test()
+{
+ thread_pool pool(1);
+ asio::any_completion_executor ex(pool.executor());
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::blocking)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::blocking.possibly)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::outstanding_work)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::outstanding_work.untracked)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::relationship)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::relationship.fork)
+ == asio::execution::relationship.fork);
+}
+
+void any_completion_executor_execute_test()
+{
+ int count = 0;
+ thread_pool pool(1);
+ asio::any_completion_executor ex(pool.executor());
+
+ ex.execute(bindns::bind(increment, &count));
+
+ asio::prefer(ex, asio::execution::blocking.possibly).execute(
+ bindns::bind(increment, &count));
+
+ asio::prefer(ex,
+ asio::execution::blocking.possibly,
+ asio::execution::outstanding_work.tracked
+ ).execute(bindns::bind(increment, &count));
+
+ asio::prefer(ex,
+ asio::execution::blocking.possibly,
+ asio::execution::outstanding_work.untracked
+ ).execute(bindns::bind(increment, &count));
+
+ asio::prefer(ex,
+ asio::execution::blocking.possibly,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation
+ ).execute(bindns::bind(increment, &count));
+
+ pool.wait();
+
+ ASIO_CHECK(count == 5);
+}
+
+ASIO_TEST_SUITE
+(
+ "any_completion_executor",
+ ASIO_TEST_CASE(any_completion_executor_construction_test)
+ ASIO_TEST_CASE(any_completion_executor_nothrow_construction_test)
+ ASIO_TEST_CASE(any_completion_executor_assignment_test)
+ ASIO_TEST_CASE(any_completion_executor_swap_test)
+ ASIO_TEST_CASE(any_completion_executor_query_test)
+ ASIO_TEST_CASE(any_completion_executor_execute_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/any_completion_handler.cpp b/3rdparty/asio/src/tests/unit/any_completion_handler.cpp
new file mode 100644
index 00000000000..887402de8d3
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/any_completion_handler.cpp
@@ -0,0 +1,260 @@
+//
+// any_completion_handler.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/any_completion_handler.hpp"
+
+#include "unit_test.hpp"
+
+#include <functional>
+#include "asio/bind_allocator.hpp"
+#include "asio/bind_cancellation_slot.hpp"
+#include "asio/bind_executor.hpp"
+#include "asio/bind_immediate_executor.hpp"
+#include "asio/error.hpp"
+#include "asio/thread_pool.hpp"
+
+namespace bindns = std;
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void any_completion_handler_construction_test()
+{
+ int count = 0;
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_completion_handler<void()> h1;
+
+ ASIO_CHECK(!h1);
+ ASIO_CHECK(h1 == null_ptr);
+
+ asio::any_completion_handler<void()> h2(null_ptr);
+
+ ASIO_CHECK(!h2);
+ ASIO_CHECK(h2 == null_ptr);
+
+ asio::any_completion_handler<void()> h3(
+ bindns::bind(&increment, &count));
+
+ ASIO_CHECK(!!h3);
+ ASIO_CHECK(h3 != null_ptr);
+
+ asio::any_completion_handler<void()> h4(std::move(h1));
+
+ ASIO_CHECK(!h4);
+ ASIO_CHECK(h4 == null_ptr);
+ ASIO_CHECK(!h1);
+ ASIO_CHECK(h1 == null_ptr);
+
+ asio::any_completion_handler<void()> h5(std::move(h3));
+
+ ASIO_CHECK(!!h5);
+ ASIO_CHECK(h5 != null_ptr);
+ ASIO_CHECK(!h3);
+ ASIO_CHECK(h3 == null_ptr);
+
+ asio::any_completion_handler<void()> h6(std::move(h5));
+
+ ASIO_CHECK(!!h6);
+ ASIO_CHECK(h6 != null_ptr);
+ ASIO_CHECK(!h5);
+ ASIO_CHECK(h5 == null_ptr);
+}
+
+void any_completion_handler_assignment_test()
+{
+ int count = 0;
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_completion_handler<void()> h1;
+
+ asio::any_completion_handler<void()> h2;
+ h2 = null_ptr;
+
+ ASIO_CHECK(!h2);
+
+ asio::any_completion_handler<void()> h3;
+ h3 = bindns::bind(&increment, &count);
+
+ ASIO_CHECK(!!h3);
+
+ asio::any_completion_handler<void()> h4;
+ h4 = std::move(h1);
+
+ ASIO_CHECK(!h4);
+ ASIO_CHECK(!h1);
+
+ h4 = std::move(h3);
+
+ ASIO_CHECK(!!h4);
+ ASIO_CHECK(!h3);
+}
+
+template <typename T>
+class handler_allocator
+{
+public:
+ using value_type = T;
+
+ explicit handler_allocator(int* count)
+ : count_(count)
+ {
+ }
+
+ template <typename U>
+ handler_allocator(const handler_allocator<U>& other) noexcept
+ : count_(other.count_)
+ {
+ }
+
+ bool operator==(const handler_allocator& other) const noexcept
+ {
+ return &count_ == &other.count_;
+ }
+
+ bool operator!=(const handler_allocator& other) const noexcept
+ {
+ return &count_ != &other.count_;
+ }
+
+ T* allocate(std::size_t n) const
+ {
+ ++(*count_);
+ return static_cast<T*>(::operator new(sizeof(T) * n));
+ }
+
+ void deallocate(T* p, std::size_t /*n*/) const
+ {
+ ::operator delete(p);
+ }
+
+private:
+ template <typename> friend class handler_allocator;
+
+ int* count_;
+};
+
+class cancel_handler
+{
+public:
+ explicit cancel_handler(int* count)
+ : count_(count)
+ {
+ }
+
+ void operator()(asio::cancellation_type_t)
+ {
+ ++(*count_);
+ }
+
+private:
+ int* count_;
+};
+
+void any_completion_handler_associator_test()
+{
+ typedef asio::any_completion_handler<void()> handler_type;
+
+ int count = 0;
+ int alloc_count = 0;
+ int cancel_count = 0;
+ asio::thread_pool pool(1);
+ asio::cancellation_signal sig;
+
+ asio::any_completion_handler<void()> h1(
+ asio::bind_allocator(handler_allocator<char>(&alloc_count),
+ asio::bind_cancellation_slot(sig.slot(),
+ asio::bind_executor(pool.get_executor(),
+ asio::bind_immediate_executor(asio::system_executor(),
+ bindns::bind(&increment, &count))))));
+
+ ASIO_CHECK(alloc_count == 1);
+
+ ASIO_REBIND_ALLOC(asio::associated_allocator<handler_type>::type,
+ char) alloc1(asio::get_associated_allocator(h1));
+ alloc1.deallocate(alloc1.allocate(1), 1);
+
+ ASIO_CHECK(alloc_count == 2);
+
+ asio::associated_cancellation_slot<handler_type>::type slot1
+ = asio::get_associated_cancellation_slot(h1);
+
+ ASIO_CHECK(slot1.is_connected());
+
+ slot1.emplace<cancel_handler>(&cancel_count);
+
+ ASIO_CHECK(cancel_count == 0);
+
+ sig.emit(asio::cancellation_type::terminal);
+
+ ASIO_CHECK(cancel_count == 1);
+
+ asio::associated_executor<handler_type>::type ex1
+ = asio::get_associated_executor(h1);
+
+ ASIO_CHECK(ex1 == pool.get_executor());
+
+ asio::associated_immediate_executor<
+ handler_type, asio::thread_pool::executor_type>::type ex2
+ = asio::get_associated_immediate_executor(h1, pool.get_executor());
+
+ ASIO_CHECK(ex2 == asio::system_executor());
+}
+
+void increment_with_error(asio::error_code ec,
+ asio::error_code* out_ec, int* count)
+{
+ *out_ec = ec;
+ ++(*count);
+}
+
+void any_completion_handler_invocation_test()
+{
+ int count = 0;
+ asio::error_code ec;
+
+ asio::any_completion_handler<void()> h1(
+ bindns::bind(&increment, &count));
+
+ ASIO_CHECK(count == 0);
+
+ std::move(h1)();
+
+ ASIO_CHECK(count == 1);
+
+ asio::any_completion_handler<void(asio::error_code)> h2(
+ bindns::bind(&increment_with_error,
+ bindns::placeholders::_1, &ec, &count));
+
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(count == 1);
+
+ std::move(h2)(asio::error::eof);
+
+ ASIO_CHECK(ec == asio::error::eof);
+ ASIO_CHECK(count == 2);
+}
+
+ASIO_TEST_SUITE
+(
+ "any_completion_handler",
+ ASIO_TEST_CASE(any_completion_handler_construction_test)
+ ASIO_TEST_CASE(any_completion_handler_assignment_test)
+ ASIO_TEST_CASE(any_completion_handler_associator_test)
+ ASIO_TEST_CASE(any_completion_handler_invocation_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/any_io_executor.cpp b/3rdparty/asio/src/tests/unit/any_io_executor.cpp
new file mode 100644
index 00000000000..e0a32ba3838
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/any_io_executor.cpp
@@ -0,0 +1,515 @@
+//
+// any_io_executor.cpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/any_io_executor.hpp"
+
+#include <cstring>
+#include <functional>
+#include "asio/system_executor.hpp"
+#include "asio/thread_pool.hpp"
+#include "unit_test.hpp"
+
+using namespace asio;
+namespace bindns = std;
+
+static bool next_nothrow_new_fails = false;
+
+void* operator new(std::size_t n,
+ const std::nothrow_t&) noexcept
+{
+ if (next_nothrow_new_fails)
+ {
+ next_nothrow_new_fails = false;
+ return 0;
+ }
+ return ::operator new(n);
+}
+
+struct fat_executor
+{
+ fat_executor(int id)
+ : id_(id)
+ {
+ std::memset(data_, 0, sizeof(data_));
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ execution_context& query(execution::context_t) const noexcept
+ {
+ return asio::query(system_executor(), execution::context);
+ }
+
+ constexpr static execution::blocking_t::never_t query(
+ execution::blocking_t) noexcept
+ {
+ return execution::blocking.never;
+ }
+
+ friend bool operator==(const fat_executor& a,
+ const fat_executor& b) noexcept
+ {
+ return a.id_ == b.id_;
+ }
+
+ friend bool operator!=(const fat_executor& a,
+ const fat_executor& b) noexcept
+ {
+ return a.id_ != b.id_;
+ }
+
+ int id_;
+ unsigned char data_[1024];
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename F>
+struct execute_member<fat_executor, F>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <>
+struct query_member<fat_executor, execution::context_t>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef execution_context& result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+template <typename Property>
+struct query_static_constexpr_member<fat_executor, Property,
+ typename asio::enable_if<
+ asio::is_convertible<
+ Property,
+ asio::execution::blocking_t
+ >::value
+ >::type
+ >
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef execution::blocking_t::never_t result_type;
+
+ static constexpr result_type value() noexcept
+ {
+ return result_type();
+ }
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<fat_executor>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void any_io_executor_construction_test()
+{
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_io_executor ex1;
+
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_io_executor ex2(null_ptr);
+
+ ASIO_CHECK(ex2.target<void>() == 0);
+ ASIO_CHECK(ex2 == null_ptr);
+ ASIO_CHECK(ex2 == ex1);
+
+ asio::any_io_executor ex3(pool.executor());
+
+ ASIO_CHECK(ex3.target<void>() != 0);
+ ASIO_CHECK(ex3 != null_ptr);
+ ASIO_CHECK(ex3 != ex1);
+
+ asio::any_io_executor ex4(ex1);
+
+ ASIO_CHECK(ex4.target<void>() == 0);
+ ASIO_CHECK(ex4 == null_ptr);
+ ASIO_CHECK(ex4 == ex1);
+
+ asio::any_io_executor ex5(ex3);
+
+ ASIO_CHECK(ex5.target<void>() != 0);
+ ASIO_CHECK(ex5 != null_ptr);
+ ASIO_CHECK(ex5 == ex3);
+
+ asio::any_io_executor ex6 = fat_executor(1);
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+
+ asio::any_io_executor ex7 = fat_executor(1);
+
+ ASIO_CHECK(ex7.target<void>() != 0);
+ ASIO_CHECK(ex7 != null_ptr);
+ ASIO_CHECK(ex7 != ex1);
+ ASIO_CHECK(ex7 == ex6);
+
+ asio::any_io_executor ex8 = fat_executor(2);
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex8 != null_ptr);
+ ASIO_CHECK(ex8 != ex1);
+ ASIO_CHECK(ex8 != ex6);
+ ASIO_CHECK(ex8 != ex7);
+
+ asio::any_io_executor ex9(ex6);
+
+ ASIO_CHECK(ex9.target<void>() != 0);
+ ASIO_CHECK(ex9 != null_ptr);
+ ASIO_CHECK(ex9 != ex1);
+ ASIO_CHECK(ex9 == ex6);
+ ASIO_CHECK(ex9 == ex7);
+ ASIO_CHECK(ex9 != ex8);
+
+ asio::any_io_executor ex10(std::move(ex1));
+
+ ASIO_CHECK(ex10.target<void>() == 0);
+ ASIO_CHECK(ex10 == null_ptr);
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_io_executor ex11(std::move(ex3));
+
+ ASIO_CHECK(ex11.target<void>() != 0);
+ ASIO_CHECK(ex11 != null_ptr);
+ ASIO_CHECK(ex3.target<void>() == 0);
+ ASIO_CHECK(ex3 == null_ptr);
+ ASIO_CHECK(ex11 == ex5);
+
+ asio::any_io_executor ex12(std::move(ex7));
+
+ ASIO_CHECK(ex12.target<void>() != 0);
+ ASIO_CHECK(ex12 != null_ptr);
+ ASIO_CHECK(ex7.target<void>() == 0);
+ ASIO_CHECK(ex7 == null_ptr);
+ ASIO_CHECK(ex12 == ex6);
+ ASIO_CHECK(ex12 != ex8);
+}
+
+void any_io_executor_nothrow_construction_test()
+{
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_io_executor ex1;
+
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_io_executor ex2(null_ptr);
+
+ ASIO_CHECK(ex2.target<void>() == 0);
+ ASIO_CHECK(ex2 == null_ptr);
+ ASIO_CHECK(ex2 == ex1);
+
+ asio::any_io_executor ex3(std::nothrow, pool.executor());
+
+ ASIO_CHECK(ex3.target<void>() != 0);
+ ASIO_CHECK(ex3 != null_ptr);
+ ASIO_CHECK(ex3 != ex1);
+
+ asio::any_io_executor ex4(std::nothrow, ex1);
+
+ ASIO_CHECK(ex4.target<void>() == 0);
+ ASIO_CHECK(ex4 == null_ptr);
+ ASIO_CHECK(ex4 == ex1);
+
+ asio::any_io_executor ex5(std::nothrow, ex3);
+
+ ASIO_CHECK(ex5.target<void>() != 0);
+ ASIO_CHECK(ex5 != null_ptr);
+ ASIO_CHECK(ex5 == ex3);
+
+ asio::any_io_executor ex6(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+
+ asio::any_io_executor ex7(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex7.target<void>() != 0);
+ ASIO_CHECK(ex7 != null_ptr);
+ ASIO_CHECK(ex7 != ex1);
+ ASIO_CHECK(ex7 == ex6);
+
+ asio::any_io_executor ex8(std::nothrow, fat_executor(2));
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex8 != null_ptr);
+ ASIO_CHECK(ex8 != ex1);
+ ASIO_CHECK(ex8 != ex6);
+ ASIO_CHECK(ex8 != ex7);
+
+ asio::any_io_executor ex9(std::nothrow, ex6);
+
+ ASIO_CHECK(ex9.target<void>() != 0);
+ ASIO_CHECK(ex9 != null_ptr);
+ ASIO_CHECK(ex9 != ex1);
+ ASIO_CHECK(ex9 == ex6);
+ ASIO_CHECK(ex9 == ex7);
+ ASIO_CHECK(ex9 != ex8);
+
+ asio::any_io_executor ex10(std::nothrow, std::move(ex1));
+
+ ASIO_CHECK(ex10.target<void>() == 0);
+ ASIO_CHECK(ex10 == null_ptr);
+ ASIO_CHECK(ex1.target<void>() == 0);
+ ASIO_CHECK(ex1 == null_ptr);
+
+ asio::any_io_executor ex11(std::nothrow, std::move(ex3));
+
+ ASIO_CHECK(ex11.target<void>() != 0);
+ ASIO_CHECK(ex11 != null_ptr);
+ ASIO_CHECK(ex3.target<void>() == 0);
+ ASIO_CHECK(ex3 == null_ptr);
+ ASIO_CHECK(ex11 == ex5);
+
+ asio::any_io_executor ex12(std::nothrow, std::move(ex7));
+
+ ASIO_CHECK(ex12.target<void>() != 0);
+ ASIO_CHECK(ex12 != null_ptr);
+ ASIO_CHECK(ex7.target<void>() == 0);
+ ASIO_CHECK(ex7 == null_ptr);
+ ASIO_CHECK(ex12 == ex6);
+ ASIO_CHECK(ex12 != ex8);
+
+ next_nothrow_new_fails = true;
+ asio::any_io_executor ex13(std::nothrow, fat_executor(3));
+
+ ASIO_CHECK(ex13.target<void>() == 0);
+ ASIO_CHECK(ex13 == null_ptr);
+ ASIO_CHECK(ex13 == ex1);
+}
+
+void any_io_executor_assignment_test()
+{
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ asio::any_io_executor ex1;
+
+ asio::any_io_executor ex2;
+ ex2 = null_ptr;
+
+ ASIO_CHECK(ex2.target<void>() == 0);
+
+ asio::any_io_executor ex3;
+ ex3 = pool.executor();
+
+ ASIO_CHECK(ex3.target<void>() != 0);
+
+ asio::any_io_executor ex4;
+ ex4 = ex1;
+
+ ASIO_CHECK(ex4.target<void>() == 0);
+ ASIO_CHECK(ex4 == ex1);
+
+ ex4 = ex3;
+
+ ASIO_CHECK(ex4.target<void>() != 0);
+ ASIO_CHECK(ex4 == ex3);
+
+ asio::any_io_executor ex5;
+ ex5 = fat_executor(1);
+
+ ASIO_CHECK(ex5.target<void>() != 0);
+ ASIO_CHECK(ex5 != null_ptr);
+ ASIO_CHECK(ex5 != ex1);
+
+ asio::any_io_executor ex6;
+ ex6 = fat_executor(1);
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+ ASIO_CHECK(ex6 == ex5);
+
+ ex6 = fat_executor(2);
+
+ ASIO_CHECK(ex6.target<void>() != 0);
+ ASIO_CHECK(ex6 != null_ptr);
+ ASIO_CHECK(ex6 != ex1);
+ ASIO_CHECK(ex6 != ex5);
+
+ asio::any_io_executor ex7;
+ ex7 = ex5;
+
+ ASIO_CHECK(ex7.target<void>() != 0);
+ ASIO_CHECK(ex7 != null_ptr);
+ ASIO_CHECK(ex7 != ex1);
+ ASIO_CHECK(ex7 == ex5);
+ ASIO_CHECK(ex7 != ex6);
+
+ asio::any_io_executor ex8;
+ ex8 = std::move(ex1);
+
+ ASIO_CHECK(ex8.target<void>() == 0);
+ ASIO_CHECK(ex1.target<void>() == 0);
+
+ ex8 = std::move(ex3);
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex3.target<void>() == 0);
+ ASIO_CHECK(ex8 == ex4);
+
+ ex8 = std::move(ex5);
+
+ ASIO_CHECK(ex8.target<void>() != 0);
+ ASIO_CHECK(ex5.target<void>() == 0);
+ ASIO_CHECK(ex8 == ex7);
+}
+
+void any_io_executor_swap_test()
+{
+ thread_pool pool1(1);
+ thread_pool pool2(1);
+
+ asio::any_io_executor ex1(pool1.executor());
+ asio::any_io_executor ex2(pool2.executor());
+
+ asio::any_io_executor ex3(ex1);
+ asio::any_io_executor ex4(ex2);
+
+ ASIO_CHECK(ex3 == ex1);
+ ASIO_CHECK(ex4 == ex2);
+
+ ex3.swap(ex4);
+
+ ASIO_CHECK(ex3 == ex2);
+ ASIO_CHECK(ex4 == ex1);
+
+ execution::swap(ex3, ex4);
+
+ ASIO_CHECK(ex3 == ex1);
+ ASIO_CHECK(ex4 == ex2);
+}
+
+void any_io_executor_query_test()
+{
+ thread_pool pool(1);
+ asio::any_io_executor ex(pool.executor());
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::blocking)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::blocking.possibly)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::outstanding_work)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::outstanding_work.untracked)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::relationship)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::relationship.fork)
+ == asio::execution::relationship.fork);
+}
+
+void any_io_executor_execute_test()
+{
+ int count = 0;
+ thread_pool pool(1);
+ asio::any_io_executor ex(pool.executor());
+
+ ex.execute(bindns::bind(increment, &count));
+
+ asio::prefer(ex, asio::execution::blocking.possibly).execute(
+ bindns::bind(increment, &count));
+
+ asio::require(ex, asio::execution::blocking.never).execute(
+ bindns::bind(increment, &count));
+
+ asio::require(
+ asio::prefer(ex, asio::execution::outstanding_work.tracked),
+ asio::execution::blocking.never
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(
+ asio::prefer(ex,
+ asio::execution::outstanding_work.untracked),
+ asio::execution::blocking.never
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(
+ asio::prefer(ex,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::blocking.never
+ ).execute(bindns::bind(increment, &count));
+
+ pool.wait();
+
+ ASIO_CHECK(count == 6);
+}
+
+ASIO_TEST_SUITE
+(
+ "any_io_executor",
+ ASIO_TEST_CASE(any_io_executor_construction_test)
+ ASIO_TEST_CASE(any_io_executor_nothrow_construction_test)
+ ASIO_TEST_CASE(any_io_executor_assignment_test)
+ ASIO_TEST_CASE(any_io_executor_swap_test)
+ ASIO_TEST_CASE(any_io_executor_query_test)
+ ASIO_TEST_CASE(any_io_executor_execute_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/append.cpp b/3rdparty/asio/src/tests/unit/append.cpp
new file mode 100644
index 00000000000..9aa00e3bfa4
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/append.cpp
@@ -0,0 +1,58 @@
+//
+// append.cpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/append.hpp"
+
+#include "asio/bind_executor.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "asio/system_timer.hpp"
+#include "unit_test.hpp"
+
+void append_test()
+{
+ asio::io_context io1;
+ asio::io_context io2;
+ asio::system_timer timer1(io1);
+ int count = 0;
+
+ timer1.expires_after(asio::chrono::seconds(0));
+ timer1.async_wait(
+ asio::append(
+ asio::bind_executor(io2.get_executor(),
+ [&count](asio::error_code, int a, int b)
+ {
+ ++count;
+ ASIO_CHECK(a == 123);
+ ASIO_CHECK(b == 321);
+ }), 123, 321));
+
+ ASIO_CHECK(count == 0);
+
+ io1.run();
+
+ ASIO_CHECK(count == 0);
+
+ io2.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+ASIO_TEST_SUITE
+(
+ "append",
+ ASIO_TEST_CASE(append_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/archetypes/async_ops.hpp b/3rdparty/asio/src/tests/unit/archetypes/async_ops.hpp
index 331d8ac32ef..3c2b1308bd8 100644
--- a/3rdparty/asio/src/tests/unit/archetypes/async_ops.hpp
+++ b/3rdparty/asio/src/tests/unit/archetypes/async_ops.hpp
@@ -1,8 +1,8 @@
//
-// async_ops.hpp
-// ~~~~~~~~~~~~~
+// archetypes/async_ops.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -11,30 +11,22 @@
#ifndef ARCHETYPES_ASYNC_OPS_HPP
#define ARCHETYPES_ASYNC_OPS_HPP
-#include <asio/associated_allocator.hpp>
-#include <asio/associated_executor.hpp>
-#include <asio/async_result.hpp>
-#include <asio/error.hpp>
-
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
+#include <functional>
+#include "asio/associated_allocator.hpp"
+#include "asio/associated_executor.hpp"
+#include "asio/async_result.hpp"
+#include "asio/error.hpp"
namespace archetypes {
-#if defined(ASIO_HAS_BOOST_BIND)
-namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
-#endif // defined(ASIO_HAS_BOOST_BIND)
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken, void())
-async_op_0(ASIO_MOVE_ARG(CompletionToken) token)
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void()>::return_type
+async_op_0(CompletionToken&& token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void()>::completion_handler_type handler_type;
asio::async_completion<CompletionToken,
@@ -46,16 +38,17 @@ async_op_0(ASIO_MOVE_ARG(CompletionToken) token)
typename asio::associated_executor<handler_type>::type ex
= asio::get_associated_executor(completion.completion_handler);
- ex.post(ASIO_MOVE_CAST(handler_type)(completion.completion_handler), a);
+ ex.post(static_cast<handler_type&&>(completion.completion_handler), a);
return completion.result.get();
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken, void(asio::error_code))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(asio::error_code)>::return_type
async_op_ec_0(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(asio::error_code)>::completion_handler_type handler_type;
asio::async_completion<CompletionToken,
@@ -71,14 +64,14 @@ async_op_ec_0(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code()), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code(asio::error::operation_aborted)), a);
}
@@ -86,10 +79,11 @@ async_op_ec_0(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken, void(std::exception_ptr))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(std::exception_ptr)>::return_type
async_op_ex_0(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(std::exception_ptr)>::completion_handler_type handler_type;
asio::async_completion<CompletionToken,
@@ -105,14 +99,14 @@ async_op_ex_0(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::exception_ptr()), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::make_exception_ptr(std::runtime_error("blah"))), a);
}
@@ -120,10 +114,11 @@ async_op_ex_0(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken, void(int))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(int)>::return_type
async_op_1(ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(int)>::completion_handler_type handler_type;
asio::async_completion<CompletionToken,
@@ -137,18 +132,18 @@ async_op_1(ASIO_MOVE_ARG(CompletionToken) token)
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
42), a);
return completion.result.get();
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken,
- void(asio::error_code, int))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(asio::error_code, int)>::return_type
async_op_ec_1(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(asio::error_code, int)>::completion_handler_type
handler_type;
@@ -165,14 +160,14 @@ async_op_ec_1(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code(), 42), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code(asio::error::operation_aborted),
0), a);
}
@@ -181,10 +176,11 @@ async_op_ec_1(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken, void(std::exception_ptr, int))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(std::exception_ptr, int)>::return_type
async_op_ex_1(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(std::exception_ptr, int)>::completion_handler_type
handler_type;
@@ -201,14 +197,14 @@ async_op_ex_1(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::exception_ptr(), 42), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::make_exception_ptr(std::runtime_error("blah")), 0), a);
}
@@ -216,10 +212,11 @@ async_op_ex_1(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken, void(int, double))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(int, double)>::return_type
async_op_2(ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(int, double)>::completion_handler_type handler_type;
asio::async_completion<CompletionToken,
@@ -233,18 +230,18 @@ async_op_2(ASIO_MOVE_ARG(CompletionToken) token)
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
42, 2.0), a);
return completion.result.get();
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken,
- void(asio::error_code, int, double))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(asio::error_code, int, double)>::return_type
async_op_ec_2(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(asio::error_code, int, double)>::completion_handler_type
handler_type;
@@ -261,14 +258,14 @@ async_op_ec_2(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code(), 42, 2.0), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code(asio::error::operation_aborted),
0, 0.0), a);
}
@@ -277,11 +274,11 @@ async_op_ec_2(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken,
- void(std::exception_ptr, int, double))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(std::exception_ptr, int, double)>::return_type
async_op_ex_2(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(std::exception_ptr, int, double)>::completion_handler_type
handler_type;
@@ -298,14 +295,14 @@ async_op_ex_2(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::exception_ptr(), 42, 2.0), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::make_exception_ptr(std::runtime_error("blah")), 0, 0.0), a);
}
@@ -313,10 +310,11 @@ async_op_ex_2(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken, void(int, double, char))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(int, double, char)>::return_type
async_op_3(ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(int, double, char)>::completion_handler_type handler_type;
asio::async_completion<CompletionToken,
@@ -330,18 +328,18 @@ async_op_3(ASIO_MOVE_ARG(CompletionToken) token)
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
42, 2.0, 'a'), a);
return completion.result.get();
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken,
- void(asio::error_code, int, double, char))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(asio::error_code, int, double, char)>::return_type
async_op_ec_3(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(asio::error_code, int, double, char)>::completion_handler_type
handler_type;
@@ -358,14 +356,14 @@ async_op_ec_3(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code(), 42, 2.0, 'a'), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
asio::error_code(asio::error::operation_aborted),
0, 0.0, 'z'), a);
}
@@ -374,11 +372,11 @@ async_op_ec_3(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
}
template <typename CompletionToken>
-ASIO_INITFN_RESULT_TYPE(CompletionToken,
- void(std::exception_ptr, int, double, char))
+typename asio::async_result<asio::decay_t<CompletionToken>,
+ void(std::exception_ptr, int, double, char)>::return_type
async_op_ex_3(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
- typedef typename asio::async_completion<CompletionToken,
+ typedef typename asio::async_result<asio::decay_t<CompletionToken>,
void(std::exception_ptr, int, double, char)>::completion_handler_type
handler_type;
@@ -395,14 +393,14 @@ async_op_ex_3(bool ok, ASIO_MOVE_ARG(CompletionToken) token)
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::exception_ptr(), 42, 2.0, 'a'), a);
}
else
{
ex.post(
bindns::bind(
- ASIO_MOVE_CAST(handler_type)(completion.completion_handler),
+ static_cast<handler_type&&>(completion.completion_handler),
std::make_exception_ptr(std::runtime_error("blah")),
0, 0.0, 'z'), a);
}
diff --git a/3rdparty/asio/src/tests/unit/archetypes/async_result.hpp b/3rdparty/asio/src/tests/unit/archetypes/async_result.hpp
index afd9e56f191..bfd9cf1aac2 100644
--- a/3rdparty/asio/src/tests/unit/archetypes/async_result.hpp
+++ b/3rdparty/asio/src/tests/unit/archetypes/async_result.hpp
@@ -2,7 +2,7 @@
// async_result.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,34 +12,79 @@
#define ARCHETYPES_ASYNC_RESULT_HPP
#include <asio/async_result.hpp>
+#include <asio/system_executor.hpp>
namespace archetypes {
+struct immediate_handler
+{
+};
+
struct lazy_handler
{
};
-struct concrete_handler
+template <typename Signature>
+struct concrete_handler;
+
+template <typename R, typename Arg1>
+struct concrete_handler<R(Arg1)>
{
- concrete_handler(lazy_handler)
+ concrete_handler()
{
}
- template <typename Arg1>
- void operator()(Arg1)
+ void operator()(typename asio::decay<Arg1>::type)
{
}
- template <typename Arg1, typename Arg2>
- void operator()(Arg1, Arg2)
+ concrete_handler(concrete_handler&&) {}
+private:
+ concrete_handler(const concrete_handler&);
+};
+
+template <typename R, typename Arg1, typename Arg2>
+struct concrete_handler<R(Arg1, Arg2)>
+{
+ concrete_handler()
{
}
-#if defined(ASIO_HAS_MOVE)
- concrete_handler(concrete_handler&&) {}
+ void operator()(typename asio::decay<Arg1>::type,
+ typename asio::decay<Arg2>::type)
+ {
+ }
+};
+
+template <typename Signature>
+struct immediate_concrete_handler : concrete_handler<Signature>
+{
+ typedef asio::system_executor immediate_executor_type;
+
+ immediate_concrete_handler(immediate_handler)
+ {
+ }
+
+ immediate_executor_type get_immediate_executor() const noexcept
+ {
+ return immediate_executor_type();
+ }
+
+ immediate_concrete_handler(immediate_concrete_handler&&) {}
private:
- concrete_handler(const concrete_handler&);
-#endif // defined(ASIO_HAS_MOVE)
+ immediate_concrete_handler(const immediate_concrete_handler&);
+};
+
+template <typename Signature>
+struct lazy_concrete_handler : concrete_handler<Signature>
+{
+ lazy_concrete_handler(lazy_handler)
+ {
+ }
+
+ lazy_concrete_handler(lazy_concrete_handler&&) {}
+private:
+ lazy_concrete_handler(const lazy_concrete_handler&);
};
} // namespace archetypes
@@ -47,11 +92,38 @@ private:
namespace asio {
template <typename Signature>
+class async_result<archetypes::immediate_handler, Signature>
+{
+public:
+ // The concrete completion handler type.
+ typedef archetypes::immediate_concrete_handler<Signature>
+ completion_handler_type;
+
+ // The return type of the initiating function.
+ typedef void return_type;
+
+ // Construct an async_result from a given handler.
+ explicit async_result(completion_handler_type&)
+ {
+ }
+
+ // Obtain the value to be returned from the initiating function.
+ void get()
+ {
+ }
+
+private:
+ // Disallow copying and assignment.
+ async_result(const async_result&) = delete;
+ async_result& operator=(const async_result&) = delete;
+};
+
+template <typename Signature>
class async_result<archetypes::lazy_handler, Signature>
{
public:
// The concrete completion handler type.
- typedef archetypes::concrete_handler completion_handler_type;
+ typedef archetypes::lazy_concrete_handler<Signature> completion_handler_type;
// The return type of the initiating function.
typedef int return_type;
@@ -69,8 +141,8 @@ public:
private:
// Disallow copying and assignment.
- async_result(const async_result&) ASIO_DELETED;
- async_result& operator=(const async_result&) ASIO_DELETED;
+ async_result(const async_result&) = delete;
+ async_result& operator=(const async_result&) = delete;
};
} // namespace asio
diff --git a/3rdparty/asio/src/tests/unit/archetypes/deprecated_async_ops.hpp b/3rdparty/asio/src/tests/unit/archetypes/deprecated_async_ops.hpp
deleted file mode 100644
index ee1cab939cd..00000000000
--- a/3rdparty/asio/src/tests/unit/archetypes/deprecated_async_ops.hpp
+++ /dev/null
@@ -1,345 +0,0 @@
-//
-// deprecated_async_ops.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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 ARCHETYPES_DEPRECATED_ASYNC_OPS_HPP
-#define ARCHETYPES_DEPRECATED_ASYNC_OPS_HPP
-
-#include <asio/async_result.hpp>
-
-#if !defined(ASIO_NO_DEPRECATED)
-
-#include <asio/handler_type.hpp>
-#include <asio/error.hpp>
-#include <asio/io_context.hpp>
-
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
-namespace archetypes {
-
-#if defined(ASIO_HAS_BOOST_BIND)
-namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
-namespace bindns = std;
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void()>::type>::type
-deprecated_async_op_0(asio::io_context& ctx,
- ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void()>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler)));
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(asio::error_code)>::type>::type
-deprecated_async_op_ec_0(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(asio::error_code)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code()));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code(asio::error::operation_aborted)));
- }
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(std::exception_ptr)>::type>::type
-deprecated_async_op_ex_0(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(std::exception_ptr)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::exception_ptr()));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::make_exception_ptr(std::runtime_error("blah"))));
- }
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(int)>::type>::type
-deprecated_async_op_1(asio::io_context& ctx,
- ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(int)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler), 42));
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(asio::error_code, int)>::type>::type
-deprecated_async_op_ec_1(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(asio::error_code, int)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code(), 42));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code(asio::error::operation_aborted), 0));
- }
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(std::exception_ptr, int)>::type>::type
-deprecated_async_op_ex_1(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(std::exception_ptr, int)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::exception_ptr(), 42));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::make_exception_ptr(std::runtime_error("blah")), 0));
- }
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(int, double)>::type>::type
-deprecated_async_op_2(asio::io_context& ctx,
- ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(int, double)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- 42, 2.0));
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(asio::error_code, int, double)>::type>::type
-deprecated_async_op_ec_2(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(asio::error_code, int, double)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code(), 42, 2.0));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code(asio::error::operation_aborted),
- 0, 0.0));
- }
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(std::exception_ptr, int, double)>::type>::type
-deprecated_async_op_ex_2(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(std::exception_ptr, int, double)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::exception_ptr(), 42, 2.0));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::make_exception_ptr(std::runtime_error("blah")), 0, 0.0));
- }
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(int, double, char)>::type>::type
-deprecated_async_op_3(asio::io_context& ctx,
- ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(int, double, char)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- 42, 2.0, 'a'));
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(asio::error_code, int, double, char)>::type>::type
-deprecated_async_op_ec_3(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(asio::error_code, int, double, char)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code(), 42, 2.0, 'a'));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- asio::error_code(asio::error::operation_aborted),
- 0, 0.0, 'z'));
- }
-
- return result.get();
-}
-
-template <typename CompletionToken>
-typename asio::async_result<
- typename asio::handler_type<CompletionToken,
- void(std::exception_ptr, int, double, char)>::type>::type
-deprecated_async_op_ex_3(asio::io_context& ctx,
- bool ok, ASIO_MOVE_ARG(CompletionToken) token)
-{
- typedef typename asio::handler_type<CompletionToken,
- void(std::exception_ptr, int, double, char)>::type handler_type;
-
- handler_type handler(ASIO_MOVE_CAST(CompletionToken)(token));
-
- asio::async_result<handler_type> result(handler);
-
- if (ok)
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::exception_ptr(), 42, 2.0, 'a'));
- }
- else
- {
- ctx.post(bindns::bind(ASIO_MOVE_CAST(handler_type)(handler),
- std::make_exception_ptr(std::runtime_error("blah")),
- 0, 0.0, 'z'));
- }
-
- return result.get();
-}
-
-} // namespace archetypes
-
-#endif // !defined(ASIO_NO_DEPRECATED)
-
-#endif // ARCHETYPES_DEPRECATED_ASYNC_OPS_HPP
diff --git a/3rdparty/asio/src/tests/unit/archetypes/deprecated_async_result.hpp b/3rdparty/asio/src/tests/unit/archetypes/deprecated_async_result.hpp
deleted file mode 100644
index c395b37144a..00000000000
--- a/3rdparty/asio/src/tests/unit/archetypes/deprecated_async_result.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// async_result.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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 ARCHETYPES_DEPRECATED_ASYNC_RESULT_HPP
-#define ARCHETYPES_DEPRECATED_ASYNC_RESULT_HPP
-
-#include <asio/async_result.hpp>
-
-#if !defined(ASIO_NO_DEPRECATED)
-
-#include <asio/handler_type.hpp>
-
-namespace archetypes {
-
-struct deprecated_lazy_handler
-{
-};
-
-struct deprecated_concrete_handler
-{
- deprecated_concrete_handler(deprecated_lazy_handler)
- {
- }
-
- template <typename Arg1>
- void operator()(Arg1)
- {
- }
-
- template <typename Arg1, typename Arg2>
- void operator()(Arg1, Arg2)
- {
- }
-
-#if defined(ASIO_HAS_MOVE)
- deprecated_concrete_handler(deprecated_concrete_handler&&) {}
-private:
- deprecated_concrete_handler(const deprecated_concrete_handler&);
-#endif // defined(ASIO_HAS_MOVE)
-};
-
-} // namespace archetypes
-
-namespace asio {
-
-template <typename Signature>
-struct handler_type<archetypes::deprecated_lazy_handler, Signature>
-{
- typedef archetypes::deprecated_concrete_handler type;
-};
-
-template <>
-class async_result<archetypes::deprecated_concrete_handler>
-{
-public:
- // The return type of the initiating function.
- typedef double type;
-
- // Construct an async_result from a given handler.
- explicit async_result(archetypes::deprecated_concrete_handler&)
- {
- }
-
- // Obtain the value to be returned from the initiating function.
- type get()
- {
- return 42;
- }
-};
-
-} // namespace asio
-
-#endif // !defined(ASIO_NO_DEPRECATED)
-
-#endif // ARCHETYPES_DEPRECATED_ASYNC_RESULT_HPP
diff --git a/3rdparty/asio/src/tests/unit/archetypes/gettable_socket_option.hpp b/3rdparty/asio/src/tests/unit/archetypes/gettable_socket_option.hpp
index 24544b0497a..e1c2d3f0d4e 100644
--- a/3rdparty/asio/src/tests/unit/archetypes/gettable_socket_option.hpp
+++ b/3rdparty/asio/src/tests/unit/archetypes/gettable_socket_option.hpp
@@ -2,7 +2,7 @@
// gettable_socket_option.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/archetypes/io_control_command.hpp b/3rdparty/asio/src/tests/unit/archetypes/io_control_command.hpp
index 011eb07d8bd..45ed07cf481 100644
--- a/3rdparty/asio/src/tests/unit/archetypes/io_control_command.hpp
+++ b/3rdparty/asio/src/tests/unit/archetypes/io_control_command.hpp
@@ -2,7 +2,7 @@
// io_control_command.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/archetypes/settable_socket_option.hpp b/3rdparty/asio/src/tests/unit/archetypes/settable_socket_option.hpp
index 99b4dac899e..7a5867ba800 100644
--- a/3rdparty/asio/src/tests/unit/archetypes/settable_socket_option.hpp
+++ b/3rdparty/asio/src/tests/unit/archetypes/settable_socket_option.hpp
@@ -2,7 +2,7 @@
// settable_socket_option.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/as_tuple.cpp b/3rdparty/asio/src/tests/unit/as_tuple.cpp
new file mode 100644
index 00000000000..a176d95bb2e
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/as_tuple.cpp
@@ -0,0 +1,122 @@
+//
+// as_tuple.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/as_tuple.hpp"
+
+#include "asio/bind_executor.hpp"
+#include "asio/deferred.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "asio/system_timer.hpp"
+#include "asio/use_future.hpp"
+#include "unit_test.hpp"
+
+void as_tuple_test()
+{
+ asio::io_context io1;
+ asio::io_context io2;
+ asio::system_timer timer1(io1);
+ int count = 0;
+
+ timer1.expires_after(asio::chrono::seconds(0));
+ timer1.async_wait(
+ asio::as_tuple(
+ asio::bind_executor(io2.get_executor(),
+ [&count](std::tuple<asio::error_code>)
+ {
+ ++count;
+ })));
+
+ ASIO_CHECK(count == 0);
+
+ io1.run();
+
+ ASIO_CHECK(count == 0);
+
+ io2.run();
+
+ ASIO_CHECK(count == 1);
+
+ timer1.async_wait(
+ asio::as_tuple(
+ asio::bind_executor(io2.get_executor(),
+ asio::deferred)))(
+ [&count](std::tuple<asio::error_code>)
+ {
+ ++count;
+ });
+
+ ASIO_CHECK(count == 1);
+
+ io1.restart();
+ io1.run();
+
+ ASIO_CHECK(count == 1);
+
+ io2.restart();
+ io2.run();
+
+ ASIO_CHECK(count == 2);
+
+# if defined(ASIO_HAS_STD_FUTURE_CLASS)
+ std::future<std::tuple<asio::error_code> > f = timer1.async_wait(
+ asio::as_tuple(
+ asio::bind_executor(io2.get_executor(),
+ asio::use_future)));
+
+ ASIO_CHECK(f.wait_for(std::chrono::seconds(0))
+ == std::future_status::timeout);
+
+ io1.restart();
+ io1.run();
+
+ ASIO_CHECK(f.wait_for(std::chrono::seconds(0))
+ == std::future_status::timeout);
+
+ io2.restart();
+ io2.run();
+
+ ASIO_CHECK(f.wait_for(std::chrono::seconds(0))
+ == std::future_status::ready);
+# endif // defined(ASIO_HAS_STD_FUTURE_CLASS)
+}
+
+void as_tuple_constness_test()
+{
+# if defined(ASIO_HAS_STD_FUTURE_CLASS)
+ asio::io_context io1;
+ asio::system_timer timer1(io1);
+
+ auto tok1 = asio::as_tuple(asio::use_future);
+ (void)timer1.async_wait(tok1);
+ (void)timer1.async_wait(std::move(tok1));
+
+ const auto tok2 = asio::as_tuple(asio::use_future);
+ (void)timer1.async_wait(tok2);
+ (void)timer1.async_wait(std::move(tok2));
+
+ constexpr auto tok3 = asio::as_tuple(asio::use_future);
+ (void)timer1.async_wait(tok3);
+ (void)timer1.async_wait(std::move(tok3));
+# endif // defined(ASIO_HAS_STD_FUTURE_CLASS)
+}
+
+ASIO_TEST_SUITE
+(
+ "as_tuple",
+ ASIO_TEST_CASE(as_tuple_test)
+ ASIO_COMPILE_TEST_CASE(as_tuple_constness_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/associated_allocator.cpp b/3rdparty/asio/src/tests/unit/associated_allocator.cpp
index 7fe80ab3276..69a8afb0d41 100644
--- a/3rdparty/asio/src/tests/unit/associated_allocator.cpp
+++ b/3rdparty/asio/src/tests/unit/associated_allocator.cpp
@@ -2,7 +2,7 @@
// associated_allocator.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/seq_packet_socket_service.cpp b/3rdparty/asio/src/tests/unit/associated_cancellation_slot.cpp
index fc2d73c7ae9..96d488458cb 100644
--- a/3rdparty/asio/src/tests/unit/seq_packet_socket_service.cpp
+++ b/3rdparty/asio/src/tests/unit/associated_cancellation_slot.cpp
@@ -1,8 +1,8 @@
//
-// seq_packet_socket_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// associated_cancellation_slot.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/seq_packet_socket_service.hpp"
+#include "asio/associated_cancellation_slot.hpp"
#include "unit_test.hpp"
ASIO_TEST_SUITE
(
- "seq_packet_socket_service",
+ "associated_cancellation_slot",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/associated_executor.cpp b/3rdparty/asio/src/tests/unit/associated_executor.cpp
index a91fbb6336b..60b1f00657f 100644
--- a/3rdparty/asio/src/tests/unit/associated_executor.cpp
+++ b/3rdparty/asio/src/tests/unit/associated_executor.cpp
@@ -2,7 +2,7 @@
// associated_executor.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/associated_immediate_executor.cpp b/3rdparty/asio/src/tests/unit/associated_immediate_executor.cpp
new file mode 100644
index 00000000000..f085a2cfcee
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/associated_immediate_executor.cpp
@@ -0,0 +1,25 @@
+//
+// associated_immediate_executor.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2022 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/associated_immediate_executor.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "associated_immediate_executor",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/signal_set_service.cpp b/3rdparty/asio/src/tests/unit/associator.cpp
index 1dd2a2c651f..a35d95c66e0 100644
--- a/3rdparty/asio/src/tests/unit/signal_set_service.cpp
+++ b/3rdparty/asio/src/tests/unit/associator.cpp
@@ -1,8 +1,8 @@
//
-// signal_set_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~
+// associator.cpp
+// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/signal_set_service.hpp"
+#include "asio/associator.hpp"
#include "unit_test.hpp"
ASIO_TEST_SUITE
(
- "signal_set_service",
+ "associator",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/async_result.cpp b/3rdparty/asio/src/tests/unit/async_result.cpp
index 479aeb56e7d..75a4e91b71e 100644
--- a/3rdparty/asio/src/tests/unit/async_result.cpp
+++ b/3rdparty/asio/src/tests/unit/async_result.cpp
@@ -2,7 +2,7 @@
// async_result.cpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/stream_socket_service.cpp b/3rdparty/asio/src/tests/unit/awaitable.cpp
index 03bbbf2f475..39ca8ddfdbe 100644
--- a/3rdparty/asio/src/tests/unit/stream_socket_service.cpp
+++ b/3rdparty/asio/src/tests/unit/awaitable.cpp
@@ -1,8 +1,8 @@
//
-// stream_socket_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
+// awaitable.cpp
+// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/stream_socket_service.hpp"
+#include "asio/awaitable.hpp"
#include "unit_test.hpp"
ASIO_TEST_SUITE
(
- "stream_socket_service",
+ "awaitable",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/basic_datagram_socket.cpp b/3rdparty/asio/src/tests/unit/basic_datagram_socket.cpp
index 8b17b5e9503..44fa2561646 100644
--- a/3rdparty/asio/src/tests/unit/basic_datagram_socket.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_datagram_socket.cpp
@@ -2,7 +2,7 @@
// basic_datagram_socket.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_deadline_timer.cpp b/3rdparty/asio/src/tests/unit/basic_deadline_timer.cpp
index 65244031a59..ec6a6e37d18 100644
--- a/3rdparty/asio/src/tests/unit/basic_deadline_timer.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_deadline_timer.cpp
@@ -2,7 +2,7 @@
// basic_deadline_timer.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/deadline_timer_service.cpp b/3rdparty/asio/src/tests/unit/basic_file.cpp
index 87c7aa6ad27..5308d1268b0 100644
--- a/3rdparty/asio/src/tests/unit/deadline_timer_service.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_file.cpp
@@ -1,8 +1,8 @@
//
-// deadline_timer_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+// basic_file.cpp
+// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/deadline_timer_service.hpp"
+#include "asio/basic_file.hpp"
#include "unit_test.hpp"
ASIO_TEST_SUITE
(
- "deadline_timer_service",
+ "basic_file",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/basic_random_access_file.cpp b/3rdparty/asio/src/tests/unit/basic_random_access_file.cpp
new file mode 100644
index 00000000000..fffaee3e8a2
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/basic_random_access_file.cpp
@@ -0,0 +1,25 @@
+//
+// basic_random_access_file.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/basic_random_access_file.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "basic_random_access_file",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/basic_raw_socket.cpp b/3rdparty/asio/src/tests/unit/basic_raw_socket.cpp
index 0b983e378f5..127df060b0c 100644
--- a/3rdparty/asio/src/tests/unit/basic_raw_socket.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_raw_socket.cpp
@@ -2,7 +2,7 @@
// basic_raw_socket.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_readable_pipe.cpp b/3rdparty/asio/src/tests/unit/basic_readable_pipe.cpp
new file mode 100644
index 00000000000..f390acf4f98
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/basic_readable_pipe.cpp
@@ -0,0 +1,25 @@
+//
+// basic_readable_pipe.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/basic_readable_pipe.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "basic_readable_pipe",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/basic_seq_packet_socket.cpp b/3rdparty/asio/src/tests/unit/basic_seq_packet_socket.cpp
index c9f325d5908..c8b9bfa67bc 100644
--- a/3rdparty/asio/src/tests/unit/basic_seq_packet_socket.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_seq_packet_socket.cpp
@@ -2,7 +2,7 @@
// basic_seq_packet_socket.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_serial_port.cpp b/3rdparty/asio/src/tests/unit/basic_serial_port.cpp
index a6c4e67d54a..1a64348a989 100644
--- a/3rdparty/asio/src/tests/unit/basic_serial_port.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_serial_port.cpp
@@ -2,7 +2,7 @@
// basic_serial_port.cpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdparty/asio/src/tests/unit/basic_signal_set.cpp b/3rdparty/asio/src/tests/unit/basic_signal_set.cpp
index f3f87c5185a..01340178e69 100644
--- a/3rdparty/asio/src/tests/unit/basic_signal_set.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_signal_set.cpp
@@ -2,7 +2,7 @@
// basic_signal_set.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_socket.cpp b/3rdparty/asio/src/tests/unit/basic_socket.cpp
new file mode 100644
index 00000000000..c2814e6b96d
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/basic_socket.cpp
@@ -0,0 +1,25 @@
+//
+// basic_socket.cpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/basic_socket.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "basic_socket",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/basic_socket_acceptor.cpp b/3rdparty/asio/src/tests/unit/basic_socket_acceptor.cpp
index 4e6629f2b69..021a81628ae 100644
--- a/3rdparty/asio/src/tests/unit/basic_socket_acceptor.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_socket_acceptor.cpp
@@ -2,7 +2,7 @@
// basic_socket_acceptor.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_stream_file.cpp b/3rdparty/asio/src/tests/unit/basic_stream_file.cpp
new file mode 100644
index 00000000000..9902122c9cb
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/basic_stream_file.cpp
@@ -0,0 +1,25 @@
+//
+// basic_stream_file.cpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/basic_stream_file.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "basic_stream_file",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/basic_stream_socket.cpp b/3rdparty/asio/src/tests/unit/basic_stream_socket.cpp
index b04a4dc82bd..1edbe5a530c 100644
--- a/3rdparty/asio/src/tests/unit/basic_stream_socket.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_stream_socket.cpp
@@ -2,7 +2,7 @@
// basic_stream_socket.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_streambuf.cpp b/3rdparty/asio/src/tests/unit/basic_streambuf.cpp
index ff9166205c9..9529dd801fe 100644
--- a/3rdparty/asio/src/tests/unit/basic_streambuf.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_streambuf.cpp
@@ -2,7 +2,7 @@
// basic_streambuf.cpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_waitable_timer.cpp b/3rdparty/asio/src/tests/unit/basic_waitable_timer.cpp
index 6aa90cb2387..9d6be41b754 100644
--- a/3rdparty/asio/src/tests/unit/basic_waitable_timer.cpp
+++ b/3rdparty/asio/src/tests/unit/basic_waitable_timer.cpp
@@ -2,7 +2,7 @@
// basic_waitable_timer.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/basic_writable_pipe.cpp b/3rdparty/asio/src/tests/unit/basic_writable_pipe.cpp
new file mode 100644
index 00000000000..fc0d0fdd955
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/basic_writable_pipe.cpp
@@ -0,0 +1,25 @@
+//
+// basic_writable_pipe.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/basic_writable_pipe.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "basic_writable_pipe",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/bind_allocator.cpp b/3rdparty/asio/src/tests/unit/bind_allocator.cpp
new file mode 100644
index 00000000000..b7c11ffb53c
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/bind_allocator.cpp
@@ -0,0 +1,237 @@
+//
+// bind_allocator.cpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/bind_allocator.hpp"
+
+#include <functional>
+#include "asio/io_context.hpp"
+#include "asio/steady_timer.hpp"
+#include "unit_test.hpp"
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/deadline_timer.hpp"
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/steady_timer.hpp"
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+using namespace asio;
+namespace bindns = std;
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef deadline_timer timer;
+namespace chronons = boost::posix_time;
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef steady_timer timer;
+namespace chronons = asio::chrono;
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+template <typename T>
+class test_allocator
+{
+public:
+ typedef T value_type;
+
+ explicit test_allocator(int* allocations)
+ : allocations_(allocations)
+ {
+ }
+
+ template <typename U>
+ test_allocator(const test_allocator<U>& other)
+ : allocations_(other.allocations_)
+ {
+ }
+
+ template <typename U>
+ struct rebind
+ {
+ typedef test_allocator<U> other;
+ };
+
+ bool operator==(const test_allocator&) const
+ {
+ return true;
+ }
+
+ bool operator!=(const test_allocator&) const
+ {
+ return false;
+ }
+
+ T* allocate(std::size_t n) const
+ {
+ ++(*allocations_);
+ return static_cast<T*>(::operator new(sizeof(T) * n));
+ }
+
+ void deallocate(T* p, std::size_t /*n*/) const
+ {
+ --(*allocations_);
+ ::operator delete(p);
+ }
+
+//private:
+ int* allocations_;
+};
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void bind_allocator_to_function_object_test()
+{
+ io_context ioc;
+
+ int count = 0;
+ int allocations = 0;
+
+ timer t(ioc, chronons::seconds(1));
+ t.async_wait(
+ bind_allocator(
+ test_allocator<int>(&allocations),
+ bindns::bind(&increment, &count)));
+
+ ASIO_CHECK(count == 0);
+ ASIO_CHECK(allocations == 1);
+
+ ioc.run();
+
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(allocations == 0);
+
+ t.async_wait(
+ bind_allocator(
+ test_allocator<int>(&allocations),
+ bind_allocator(
+ std::allocator<void>(),
+ bindns::bind(&increment, &count))));
+
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(allocations == 1);
+
+ ioc.restart();
+ ioc.run();
+
+ ASIO_CHECK(count == 2);
+ ASIO_CHECK(allocations == 0);
+}
+
+struct incrementer_token_v1
+{
+ explicit incrementer_token_v1(int* c) : count(c) {}
+ int* count;
+};
+
+struct incrementer_handler_v1
+{
+ explicit incrementer_handler_v1(incrementer_token_v1 t) : count(t.count) {}
+ void operator()(asio::error_code){ increment(count); }
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v1, void(asio::error_code)>
+{
+public:
+ typedef incrementer_handler_v1 completion_handler_type;
+ typedef void return_type;
+ explicit async_result(completion_handler_type&) {}
+ return_type get() {}
+};
+
+} // namespace asio
+
+void bind_allocator_to_completion_token_v1_test()
+{
+ io_context ioc;
+
+ int count = 0;
+ int allocations = 0;
+
+ timer t(ioc, chronons::seconds(1));
+ t.async_wait(
+ bind_allocator(
+ test_allocator<int>(&allocations),
+ incrementer_token_v1(&count)));
+
+ ASIO_CHECK(count == 0);
+ ASIO_CHECK(allocations == 1);
+
+ ioc.run();
+
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(allocations == 0);
+}
+
+struct incrementer_token_v2
+{
+ explicit incrementer_token_v2(int* c) : count(c) {}
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v2, void(asio::error_code)>
+{
+public:
+#if !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+ typedef void return_type;
+#endif // !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+
+ template <typename Initiation, typename... Args>
+ static void initiate(Initiation initiation,
+ incrementer_token_v2 token, Args&&... args)
+ {
+ initiation(bindns::bind(&increment, token.count),
+ static_cast<Args&&>(args)...);
+ }
+};
+
+} // namespace asio
+
+void bind_allocator_to_completion_token_v2_test()
+{
+ io_context ioc;
+
+ int count = 0;
+ int allocations = 0;
+
+ timer t(ioc, chronons::seconds(1));
+ t.async_wait(
+ bind_allocator(
+ test_allocator<int>(&allocations),
+ incrementer_token_v2(&count)));
+
+ ASIO_CHECK(count == 0);
+ ASIO_CHECK(allocations == 1);
+
+ ioc.run();
+
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(allocations == 0);
+}
+
+ASIO_TEST_SUITE
+(
+ "bind_allocator",
+ ASIO_TEST_CASE(bind_allocator_to_function_object_test)
+ ASIO_TEST_CASE(bind_allocator_to_completion_token_v1_test)
+ ASIO_TEST_CASE(bind_allocator_to_completion_token_v2_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/bind_cancellation_slot.cpp b/3rdparty/asio/src/tests/unit/bind_cancellation_slot.cpp
new file mode 100644
index 00000000000..25b0ff1c995
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/bind_cancellation_slot.cpp
@@ -0,0 +1,202 @@
+//
+// bind_cancellation_slot.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/bind_cancellation_slot.hpp"
+
+#include <functional>
+#include "asio/cancellation_signal.hpp"
+#include "asio/io_context.hpp"
+#include "asio/steady_timer.hpp"
+#include "unit_test.hpp"
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/deadline_timer.hpp"
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/steady_timer.hpp"
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+using namespace asio;
+namespace bindns = std;
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef deadline_timer timer;
+namespace chronons = boost::posix_time;
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef steady_timer timer;
+namespace chronons = asio::chrono;
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+void increment_on_cancel(int* count, const asio::error_code& error)
+{
+ if (error == asio::error::operation_aborted)
+ ++(*count);
+}
+
+void bind_cancellation_slot_to_function_object_test()
+{
+ io_context ioc;
+ cancellation_signal sig;
+
+ int count = 0;
+
+ timer t(ioc, chronons::seconds(5));
+ t.async_wait(
+ bind_cancellation_slot(sig.slot(),
+ bindns::bind(&increment_on_cancel,
+ &count, bindns::placeholders::_1)));
+
+ ioc.poll();
+
+ ASIO_CHECK(count == 0);
+
+ sig.emit(asio::cancellation_type::all);
+
+ ioc.run();
+
+ ASIO_CHECK(count == 1);
+
+ t.async_wait(
+ bind_cancellation_slot(sig.slot(),
+ bind_cancellation_slot(sig.slot(),
+ bindns::bind(&increment_on_cancel,
+ &count, bindns::placeholders::_1))));
+
+ ioc.restart();
+ ioc.poll();
+
+ ASIO_CHECK(count == 1);
+
+ sig.emit(asio::cancellation_type::all);
+
+ ioc.run();
+
+ ASIO_CHECK(count == 2);
+}
+
+struct incrementer_token_v1
+{
+ explicit incrementer_token_v1(int* c) : count(c) {}
+ int* count;
+};
+
+struct incrementer_handler_v1
+{
+ explicit incrementer_handler_v1(incrementer_token_v1 t) : count(t.count) {}
+
+ void operator()(asio::error_code error)
+ {
+ increment_on_cancel(count, error);
+ }
+
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v1, void(asio::error_code)>
+{
+public:
+ typedef incrementer_handler_v1 completion_handler_type;
+ typedef void return_type;
+ explicit async_result(completion_handler_type&) {}
+ return_type get() {}
+};
+
+} // namespace asio
+
+void bind_cancellation_slot_to_completion_token_v1_test()
+{
+ io_context ioc;
+ cancellation_signal sig;
+
+ int count = 0;
+
+ timer t(ioc, chronons::seconds(5));
+ t.async_wait(
+ bind_cancellation_slot(sig.slot(),
+ incrementer_token_v1(&count)));
+
+ ioc.poll();
+
+ ASIO_CHECK(count == 0);
+
+ sig.emit(asio::cancellation_type::all);
+
+ ioc.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+struct incrementer_token_v2
+{
+ explicit incrementer_token_v2(int* c) : count(c) {}
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v2, void(asio::error_code)>
+{
+public:
+#if !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+ typedef void return_type;
+#endif // !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+
+ template <typename Initiation, typename... Args>
+ static void initiate(Initiation initiation,
+ incrementer_token_v2 token, Args&&... args)
+ {
+ initiation(
+ bindns::bind(&increment_on_cancel,
+ token.count, bindns::placeholders::_1),
+ static_cast<Args&&>(args)...);
+ }
+};
+
+} // namespace asio
+
+void bind_cancellation_slot_to_completion_token_v2_test()
+{
+ io_context ioc;
+ cancellation_signal sig;
+
+ int count = 0;
+
+ timer t(ioc, chronons::seconds(5));
+ t.async_wait(
+ bind_cancellation_slot(sig.slot(),
+ incrementer_token_v2(&count)));
+
+ ioc.poll();
+
+ ASIO_CHECK(count == 0);
+
+ sig.emit(asio::cancellation_type::all);
+
+ ioc.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+ASIO_TEST_SUITE
+(
+ "bind_cancellation_slot",
+ ASIO_TEST_CASE(bind_cancellation_slot_to_function_object_test)
+ ASIO_TEST_CASE(bind_cancellation_slot_to_completion_token_v1_test)
+ ASIO_TEST_CASE(bind_cancellation_slot_to_completion_token_v2_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/bind_executor.cpp b/3rdparty/asio/src/tests/unit/bind_executor.cpp
index 74f24638a62..59be1cd14f3 100644
--- a/3rdparty/asio/src/tests/unit/bind_executor.cpp
+++ b/3rdparty/asio/src/tests/unit/bind_executor.cpp
@@ -2,7 +2,7 @@
// bind_executor.cpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,10 +16,174 @@
// Test that header file is self-contained.
#include "asio/bind_executor.hpp"
+#include <functional>
+#include "asio/io_context.hpp"
+#include "asio/steady_timer.hpp"
#include "unit_test.hpp"
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/deadline_timer.hpp"
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/steady_timer.hpp"
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+using namespace asio;
+namespace bindns = std;
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef deadline_timer timer;
+namespace chronons = boost::posix_time;
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef steady_timer timer;
+namespace chronons = asio::chrono;
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void bind_executor_to_function_object_test()
+{
+ io_context ioc1;
+ io_context ioc2;
+
+ int count = 0;
+
+ timer t(ioc1, chronons::seconds(1));
+ t.async_wait(
+ bind_executor(
+ ioc2.get_executor(),
+ bindns::bind(&increment, &count)));
+
+ ioc1.run();
+
+ ASIO_CHECK(count == 0);
+
+ ioc2.run();
+
+ ASIO_CHECK(count == 1);
+
+ t.async_wait(
+ bind_executor(
+ ioc2.get_executor(),
+ bind_executor(
+ asio::system_executor(),
+ bindns::bind(&increment, &count))));
+
+ ioc1.restart();
+ ioc1.run();
+
+ ASIO_CHECK(count == 1);
+
+ ioc2.restart();
+ ioc2.run();
+
+ ASIO_CHECK(count == 2);
+}
+
+struct incrementer_token_v1
+{
+ explicit incrementer_token_v1(int* c) : count(c) {}
+ int* count;
+};
+
+struct incrementer_handler_v1
+{
+ explicit incrementer_handler_v1(incrementer_token_v1 t) : count(t.count) {}
+ void operator()(asio::error_code){ increment(count); }
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v1, void(asio::error_code)>
+{
+public:
+ typedef incrementer_handler_v1 completion_handler_type;
+ typedef void return_type;
+ explicit async_result(completion_handler_type&) {}
+ return_type get() {}
+};
+
+} // namespace asio
+
+void bind_executor_to_completion_token_v1_test()
+{
+ io_context ioc1;
+ io_context ioc2;
+
+ int count = 0;
+
+ timer t(ioc1, chronons::seconds(1));
+ t.async_wait(
+ bind_executor(
+ ioc2.get_executor(),
+ incrementer_token_v1(&count)));
+
+ ioc1.run();
+
+ ASIO_CHECK(count == 0);
+
+ ioc2.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+struct incrementer_token_v2
+{
+ explicit incrementer_token_v2(int* c) : count(c) {}
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v2, void(asio::error_code)>
+{
+public:
+#if !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+ typedef void return_type;
+#endif // !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+
+ template <typename Initiation, typename... Args>
+ static void initiate(Initiation initiation,
+ incrementer_token_v2 token, Args&&... args)
+ {
+ initiation(bindns::bind(&increment, token.count),
+ static_cast<Args&&>(args)...);
+ }
+};
+
+} // namespace asio
+
+void bind_executor_to_completion_token_v2_test()
+{
+ io_context ioc1;
+ io_context ioc2;
+
+ int count = 0;
+
+ timer t(ioc1, chronons::seconds(1));
+ t.async_wait(
+ bind_executor(
+ ioc2.get_executor(),
+ incrementer_token_v2(&count)));
+
+ ioc1.run();
+
+ ASIO_CHECK(count == 0);
+
+ ioc2.run();
+
+ ASIO_CHECK(count == 1);
+}
+
ASIO_TEST_SUITE
(
"bind_executor",
- ASIO_TEST_CASE(null_test)
+ ASIO_TEST_CASE(bind_executor_to_function_object_test)
+ ASIO_TEST_CASE(bind_executor_to_completion_token_v1_test)
+ ASIO_TEST_CASE(bind_executor_to_completion_token_v2_test)
)
diff --git a/3rdparty/asio/src/tests/unit/bind_immediate_executor.cpp b/3rdparty/asio/src/tests/unit/bind_immediate_executor.cpp
new file mode 100644
index 00000000000..ecf82de7470
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/bind_immediate_executor.cpp
@@ -0,0 +1,199 @@
+//
+// bind_immediate_executor.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/bind_immediate_executor.hpp"
+
+#include <functional>
+#include "asio/dispatch.hpp"
+#include "asio/io_context.hpp"
+#include "unit_test.hpp"
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/deadline_timer.hpp"
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/steady_timer.hpp"
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+using namespace asio;
+namespace bindns = std;
+
+struct initiate_immediate
+{
+ template <typename Handler>
+ void operator()(Handler&& handler, io_context* ctx) const
+ {
+ typename associated_immediate_executor<
+ Handler, io_context::executor_type>::type ex =
+ get_associated_immediate_executor(handler, ctx->get_executor());
+ dispatch(ex, static_cast<Handler&&>(handler));
+ }
+};
+
+template <ASIO_COMPLETION_TOKEN_FOR(void()) Token>
+ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX(Token, void())
+async_immediate(io_context& ctx, Token&& token)
+ ASIO_INITFN_AUTO_RESULT_TYPE_SUFFIX((
+ async_initiate<Token, void()>(declval<initiate_immediate>(), token)))
+{
+ return async_initiate<Token, void()>(initiate_immediate(), token, &ctx);
+}
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void bind_immediate_executor_to_function_object_test()
+{
+ io_context ioc1;
+ io_context ioc2;
+
+ int count = 0;
+
+ async_immediate(ioc1,
+ bind_immediate_executor(
+ ioc2.get_executor(),
+ bindns::bind(&increment, &count)));
+
+ ioc1.run();
+
+ ASIO_CHECK(count == 0);
+
+ ioc2.run();
+
+ ASIO_CHECK(count == 1);
+
+ async_immediate(ioc1,
+ bind_immediate_executor(
+ ioc2.get_executor(),
+ bind_immediate_executor(
+ asio::system_executor(),
+ bindns::bind(&increment, &count))));
+
+ ioc1.restart();
+ ioc1.run();
+
+ ASIO_CHECK(count == 1);
+
+ ioc2.restart();
+ ioc2.run();
+
+ ASIO_CHECK(count == 2);
+}
+
+struct incrementer_token_v1
+{
+ explicit incrementer_token_v1(int* c) : count(c) {}
+ int* count;
+};
+
+struct incrementer_handler_v1
+{
+ explicit incrementer_handler_v1(incrementer_token_v1 t) : count(t.count) {}
+ void operator()(){ increment(count); }
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v1, void()>
+{
+public:
+ typedef incrementer_handler_v1 completion_handler_type;
+ typedef void return_type;
+ explicit async_result(completion_handler_type&) {}
+ return_type get() {}
+};
+
+} // namespace asio
+
+void bind_immediate_executor_to_completion_token_v1_test()
+{
+ io_context ioc1;
+ io_context ioc2;
+
+ int count = 0;
+
+ async_immediate(ioc1,
+ bind_immediate_executor(
+ ioc2.get_executor(),
+ incrementer_token_v1(&count)));
+
+ ioc1.run();
+
+ ASIO_CHECK(count == 0);
+
+ ioc2.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+struct incrementer_token_v2
+{
+ explicit incrementer_token_v2(int* c) : count(c) {}
+ int* count;
+};
+
+namespace asio {
+
+template <>
+class async_result<incrementer_token_v2, void()>
+{
+public:
+#if !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+ typedef void return_type;
+#endif // !defined(ASIO_HAS_RETURN_TYPE_DEDUCTION)
+
+ template <typename Initiation, typename... Args>
+ static void initiate(Initiation initiation,
+ incrementer_token_v2 token, Args&&... args)
+ {
+ initiation(bindns::bind(&increment, token.count),
+ static_cast<Args&&>(args)...);
+ }
+};
+
+} // namespace asio
+
+void bind_immediate_executor_to_completion_token_v2_test()
+{
+ io_context ioc1;
+ io_context ioc2;
+
+ int count = 0;
+
+ async_immediate(ioc1,
+ bind_immediate_executor(
+ ioc2.get_executor(),
+ incrementer_token_v2(&count)));
+
+ ioc1.run();
+
+ ASIO_CHECK(count == 0);
+
+ ioc2.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+ASIO_TEST_SUITE
+(
+ "bind_immediate_executor",
+ ASIO_TEST_CASE(bind_immediate_executor_to_function_object_test)
+ ASIO_TEST_CASE(bind_immediate_executor_to_completion_token_v1_test)
+ ASIO_TEST_CASE(bind_immediate_executor_to_completion_token_v2_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/buffer.cpp b/3rdparty/asio/src/tests/unit/buffer.cpp
index b28533059ca..9fa1db6e67f 100644
--- a/3rdparty/asio/src/tests/unit/buffer.cpp
+++ b/3rdparty/asio/src/tests/unit/buffer.cpp
@@ -2,7 +2,7 @@
// buffer.cpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,16 +16,14 @@
// Test that header file is self-contained.
#include "asio/buffer.hpp"
+#include <array>
+#include <cstring>
#include "unit_test.hpp"
#if defined(ASIO_HAS_BOOST_ARRAY)
# include <boost/array.hpp>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
//------------------------------------------------------------------------------
// buffer_compile test
@@ -37,6 +35,42 @@ namespace buffer_compile {
using namespace asio;
+template <typename T>
+class mutable_contiguous_container
+{
+public:
+ typedef T value_type;
+ typedef T* iterator;
+ typedef const T* const_iterator;
+ typedef T& reference;
+ typedef const T& const_reference;
+
+ mutable_contiguous_container() {}
+ std::size_t size() const { return 0; }
+ iterator begin() { return 0; }
+ const_iterator begin() const { return 0; }
+ iterator end() { return 0; }
+ const_iterator end() const { return 0; }
+};
+
+template <typename T>
+class const_contiguous_container
+{
+public:
+ typedef const T value_type;
+ typedef const T* iterator;
+ typedef const T* const_iterator;
+ typedef const T& reference;
+ typedef const T& const_reference;
+
+ const_contiguous_container() {}
+ std::size_t size() const { return 0; }
+ iterator begin() { return 0; }
+ const_iterator begin() const { return 0; }
+ iterator end() { return 0; }
+ const_iterator end() const { return 0; }
+};
+
void test()
{
try
@@ -50,11 +84,9 @@ void test()
const boost::array<char, 1024>& const_array_data_1 = array_data;
boost::array<const char, 1024> const_array_data_2 = { { 0 } };
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_STD_ARRAY)
std::array<char, 1024> std_array_data;
const std::array<char, 1024>& const_std_array_data_1 = std_array_data;
std::array<const char, 1024> const_std_array_data_2 = { { 0 } };
-#endif // defined(ASIO_HAS_STD_ARRAY)
std::vector<char> vector_data(1024);
const std::vector<char>& const_vector_data = vector_data;
std::string string_data(1024, ' ');
@@ -62,18 +94,21 @@ void test()
std::vector<mutable_buffer> mutable_buffer_sequence;
std::vector<const_buffer> const_buffer_sequence;
#if defined(ASIO_HAS_STD_STRING_VIEW)
-# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
- std::experimental::string_view string_view_data(string_data);
-# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
std::string_view string_view_data(string_data);
-# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ std::experimental::string_view string_view_data(string_data);
+#endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ mutable_contiguous_container<char> mutable_contiguous_data;
+ const mutable_contiguous_container<char> const_mutable_contiguous_data;
+ const_contiguous_container<char> const_contiguous_data;
+ const const_contiguous_container<char> const_const_contiguous_data;
// mutable_buffer constructors.
mutable_buffer mb1;
mutable_buffer mb2(void_ptr_data, 1024);
mutable_buffer mb3(mb1);
+ (void)mb3;
// mutable_buffer functions.
@@ -110,7 +145,9 @@ void test()
const_buffer cb1;
const_buffer cb2(const_void_ptr_data, 1024);
const_buffer cb3(cb1);
+ (void)cb3;
const_buffer cb4(mb1);
+ (void)cb4;
// const_buffer functions.
@@ -188,14 +225,12 @@ void test()
cb1 = buffer(const_array_data_2);
cb1 = buffer(const_array_data_2, 1024);
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_STD_ARRAY)
mb1 = buffer(std_array_data);
mb1 = buffer(std_array_data, 1024);
cb1 = buffer(const_std_array_data_1);
cb1 = buffer(const_std_array_data_1, 1024);
cb1 = buffer(const_std_array_data_2);
cb1 = buffer(const_std_array_data_2, 1024);
-#endif // defined(ASIO_HAS_STD_ARRAY)
mb1 = buffer(vector_data);
mb1 = buffer(vector_data, 1024);
cb1 = buffer(const_vector_data);
@@ -204,10 +239,18 @@ void test()
mb1 = buffer(string_data, 1024);
cb1 = buffer(const_string_data);
cb1 = buffer(const_string_data, 1024);
-#if defined(ASIO_HAS_STD_STRING_VIEW)
+#if defined(ASIO_HAS_STRING_VIEW)
cb1 = buffer(string_view_data);
cb1 = buffer(string_view_data, 1024);
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#endif // defined(ASIO_HAS_STRING_VIEW)
+ mb1 = buffer(mutable_contiguous_data);
+ mb1 = buffer(mutable_contiguous_data, 1024);
+ cb1 = buffer(const_mutable_contiguous_data);
+ cb1 = buffer(const_mutable_contiguous_data, 1024);
+ cb1 = buffer(const_contiguous_data);
+ cb1 = buffer(const_contiguous_data, 1024);
+ cb1 = buffer(const_const_contiguous_data);
+ cb1 = buffer(const_const_contiguous_data, 1024);
// buffer_copy function overloads.
@@ -321,6 +364,7 @@ void test()
std::size_t size40 = db3.max_size();
(void)size40;
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
dynamic_string_buffer<char, std::string::traits_type,
std::string::allocator_type>::const_buffers_type
cb5 = db1.data();
@@ -339,9 +383,35 @@ void test()
db1.commit(1024);
db3.commit(1024);
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
- db1.consume(1024);
- db3.consume(1024);
+ dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type>::mutable_buffers_type
+ mb7 = db1.data(0, 1);
+ (void)mb7;
+ dynamic_vector_buffer<char, std::allocator<char> >::mutable_buffers_type
+ mb8 = db3.data(0, 1);
+ (void)mb8;
+
+ dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type>::const_buffers_type
+ cb7 = static_cast<const dynamic_string_buffer<char,
+ std::string::traits_type,
+ std::string::allocator_type>&>(db1).data(0, 1);
+ (void)cb7;
+ dynamic_vector_buffer<char, std::allocator<char> >::const_buffers_type
+ cb8 = static_cast<const dynamic_vector_buffer<char,
+ std::allocator<char> >&>(db3).data(0, 1);
+ (void)cb8;
+
+ db1.grow(1024);
+ db3.grow(1024);
+
+ db1.shrink(1024);
+ db3.shrink(1024);
+
+ db1.consume(0);
+ db3.consume(0);
}
catch (std::exception&)
{
@@ -559,9 +629,285 @@ void test()
//------------------------------------------------------------------------------
+namespace buffer_sequence {
+
+using namespace asio;
+using namespace std;
+
+struct valid_const_a
+{
+ typedef const_buffer* const_iterator;
+ typedef const_buffer value_type;
+ const_buffer* begin() const { return 0; }
+ const_buffer* end() const { return 0; }
+};
+
+struct valid_const_b
+{
+ const_buffer* begin() const { return 0; }
+ const_buffer* end() const { return 0; }
+};
+
+struct valid_mutable_a
+{
+ typedef mutable_buffer* const_iterator;
+ typedef mutable_buffer value_type;
+ mutable_buffer* begin() const { return 0; }
+ mutable_buffer* end() const { return 0; }
+};
+
+struct valid_mutable_b
+{
+ mutable_buffer* begin() const { return 0; }
+ mutable_buffer* end() const { return 0; }
+};
+
+struct invalid_const_a
+{
+ typedef int value_type;
+ int* begin() const { return 0; }
+ const_buffer* end() const { return 0; }
+};
+
+struct invalid_const_b
+{
+ typedef const_buffer value_type;
+ const_buffer* begin() const { return 0; }
+};
+
+struct invalid_const_c
+{
+ typedef const_buffer value_type;
+ const_buffer* end() const { return 0; }
+};
+
+struct invalid_const_d
+{
+ int* begin() const { return 0; }
+ const_buffer* end() const { return 0; }
+};
+
+struct invalid_const_e
+{
+ const_buffer* begin() const { return 0; }
+};
+
+struct invalid_const_f
+{
+ const_buffer* end() const { return 0; }
+};
+
+struct invalid_mutable_a
+{
+ typedef int value_type;
+ int* begin() const { return 0; }
+ mutable_buffer* end() const { return 0; }
+};
+
+struct invalid_mutable_b
+{
+ typedef mutable_buffer value_type;
+ mutable_buffer* begin() const { return 0; }
+};
+
+struct invalid_mutable_c
+{
+ typedef mutable_buffer value_type;
+ mutable_buffer* end() const { return 0; }
+};
+
+struct invalid_mutable_d
+{
+ int* begin() const { return 0; }
+ mutable_buffer* end() const { return 0; }
+};
+
+struct invalid_mutable_e
+{
+ mutable_buffer* begin() const { return 0; }
+};
+
+struct invalid_mutable_f
+{
+ mutable_buffer* end() const { return 0; }
+};
+
+void test()
+{
+ ASIO_CHECK(is_const_buffer_sequence<const_buffer>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<const_buffer>::value);
+
+ const_buffer b1;
+ ASIO_CHECK(buffer_sequence_begin(b1) == &b1);
+ ASIO_CHECK(buffer_sequence_end(b1) == &b1 + 1);
+
+ ASIO_CHECK(is_const_buffer_sequence<mutable_buffer>::value);
+ ASIO_CHECK(is_mutable_buffer_sequence<mutable_buffer>::value);
+
+ mutable_buffer b2;
+ ASIO_CHECK(buffer_sequence_begin(b2) == &b2);
+ ASIO_CHECK(buffer_sequence_end(b2) == &b2 + 1);
+
+#if !defined(ASIO_NO_DEPRECATED)
+ ASIO_CHECK(is_const_buffer_sequence<const_buffers_1>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<const_buffers_1>::value);
+
+ const_buffers_1 b3(0, 0);
+ ASIO_CHECK(buffer_sequence_begin(b3) == &b3);
+ ASIO_CHECK(buffer_sequence_end(b3) == &b3 + 1);
+
+ ASIO_CHECK(is_const_buffer_sequence<mutable_buffers_1>::value);
+ ASIO_CHECK(is_mutable_buffer_sequence<mutable_buffers_1>::value);
+
+ mutable_buffers_1 b4(0, 0);
+ ASIO_CHECK(buffer_sequence_begin(b4) == &b4);
+ ASIO_CHECK(buffer_sequence_end(b4) == &b4 + 1);
+#endif // !defined(ASIO_NO_DEPRECATED)
+
+ ASIO_CHECK(is_const_buffer_sequence<vector<const_buffer> >::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<vector<const_buffer> >::value);
+
+ vector<const_buffer> b5;
+ ASIO_CHECK(buffer_sequence_begin(b5) == b5.begin());
+ ASIO_CHECK(buffer_sequence_end(b5) == b5.end());
+
+ ASIO_CHECK(is_const_buffer_sequence<vector<mutable_buffer> >::value);
+ ASIO_CHECK(is_mutable_buffer_sequence<vector<mutable_buffer> >::value);
+
+ vector<mutable_buffer> b6;
+ ASIO_CHECK(buffer_sequence_begin(b6) == b6.begin());
+ ASIO_CHECK(buffer_sequence_end(b6) == b6.end());
+
+ ASIO_CHECK(is_const_buffer_sequence<valid_const_a>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<valid_const_a>::value);
+
+ valid_const_a b7;
+ ASIO_CHECK(buffer_sequence_begin(b7) == b7.begin());
+ ASIO_CHECK(buffer_sequence_end(b7) == b7.end());
+
+ ASIO_CHECK(is_const_buffer_sequence<valid_const_b>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<valid_const_b>::value);
+
+ valid_const_b b8;
+ ASIO_CHECK(buffer_sequence_begin(b8) == b8.begin());
+ ASIO_CHECK(buffer_sequence_end(b8) == b8.end());
+
+ ASIO_CHECK(is_const_buffer_sequence<valid_mutable_a>::value);
+ ASIO_CHECK(is_mutable_buffer_sequence<valid_mutable_a>::value);
+
+ valid_mutable_a b9;
+ ASIO_CHECK(buffer_sequence_begin(b9) == b9.begin());
+ ASIO_CHECK(buffer_sequence_end(b9) == b9.end());
+
+ ASIO_CHECK(is_const_buffer_sequence<valid_mutable_b>::value);
+ ASIO_CHECK(is_mutable_buffer_sequence<valid_mutable_b>::value);
+
+ valid_mutable_b b10;
+ ASIO_CHECK(buffer_sequence_begin(b10) == b10.begin());
+ ASIO_CHECK(buffer_sequence_end(b10) == b10.end());
+
+ ASIO_CHECK(!is_const_buffer_sequence<invalid_const_a>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_const_a>::value);
+
+ ASIO_CHECK(!is_const_buffer_sequence<invalid_const_b>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_const_b>::value);
+
+ ASIO_CHECK(!is_const_buffer_sequence<invalid_const_c>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_const_c>::value);
+
+ ASIO_CHECK(!is_const_buffer_sequence<invalid_const_d>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_const_d>::value);
+
+ ASIO_CHECK(!is_const_buffer_sequence<invalid_const_e>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_const_e>::value);
+
+ ASIO_CHECK(!is_const_buffer_sequence<invalid_const_f>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_const_f>::value);
+
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_a>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_a>::value);
+
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_b>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_b>::value);
+
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_c>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_c>::value);
+
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_d>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_d>::value);
+
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_e>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_e>::value);
+
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_f>::value);
+ ASIO_CHECK(!is_mutable_buffer_sequence<invalid_mutable_f>::value);
+}
+
+} // namespace buffer_sequence
+
+namespace buffer_literals {
+
+void test()
+{
+#if defined(ASIO_HAS_USER_DEFINED_LITERALS)
+ using namespace asio::buffer_literals;
+ using namespace std; // For memcmp.
+
+ asio::const_buffer b1 = ""_buf;
+ ASIO_CHECK(b1.size() == 0);
+
+ asio::const_buffer b2 = "hello"_buf;
+ ASIO_CHECK(b2.size() == 5);
+ ASIO_CHECK(memcmp(b2.data(), "hello", 5) == 0);
+
+ asio::const_buffer b3 = 0x00_buf;
+ ASIO_CHECK(b3.size() == 1);
+ ASIO_CHECK(memcmp(b3.data(), "\x00", 1) == 0);
+
+ asio::const_buffer b4 = 0X01_buf;
+ ASIO_CHECK(b4.size() == 1);
+ ASIO_CHECK(memcmp(b4.data(), "\x01", 1) == 0);
+
+ asio::const_buffer b5 = 0xaB_buf;
+ ASIO_CHECK(b5.size() == 1);
+ ASIO_CHECK(memcmp(b5.data(), "\xab", 1) == 0);
+
+ asio::const_buffer b6 = 0xABcd_buf;
+ ASIO_CHECK(b6.size() == 2);
+ ASIO_CHECK(memcmp(b6.data(), "\xab\xcd", 2) == 0);
+
+ asio::const_buffer b7 = 0x01ab01cd01ef01ba01dc01fe_buf;
+ ASIO_CHECK(b7.size() == 12);
+ ASIO_CHECK(memcmp(b7.data(),
+ "\x01\xab\x01\xcd\x01\xef\x01\xba\x01\xdc\x01\xfe", 12) == 0);
+
+ asio::const_buffer b8 = 0b00000000_buf;
+ ASIO_CHECK(b8.size() == 1);
+ ASIO_CHECK(memcmp(b8.data(), "\x00", 1) == 0);
+
+ asio::const_buffer b9 = 0B00000001_buf;
+ ASIO_CHECK(b9.size() == 1);
+ ASIO_CHECK(memcmp(b9.data(), "\x01", 1) == 0);
+
+ asio::const_buffer b10 = 0B11111111_buf;
+ ASIO_CHECK(b10.size() == 1);
+ ASIO_CHECK(memcmp(b10.data(), "\xFF", 1) == 0);
+
+ asio::const_buffer b11 = 0b1111000000001111_buf;
+ ASIO_CHECK(b11.size() == 2);
+ ASIO_CHECK(memcmp(b11.data(), "\xF0\x0F", 2) == 0);
+#endif // (defined(ASIO_HAS_USER_DEFINED_LITERALS)
+}
+
+} // namespace buffer_literals
+
+//------------------------------------------------------------------------------
+
ASIO_TEST_SUITE
(
"buffer",
ASIO_COMPILE_TEST_CASE(buffer_compile::test)
ASIO_TEST_CASE(buffer_copy_runtime::test)
+ ASIO_TEST_CASE(buffer_sequence::test)
+ ASIO_TEST_CASE(buffer_literals::test)
)
diff --git a/3rdparty/asio/src/tests/unit/buffer_registration.cpp b/3rdparty/asio/src/tests/unit/buffer_registration.cpp
new file mode 100644
index 00000000000..72826a394cc
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/buffer_registration.cpp
@@ -0,0 +1,25 @@
+//
+// buffer_registration.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/buffer_registration.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "buffer_registration",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/buffered_read_stream.cpp b/3rdparty/asio/src/tests/unit/buffered_read_stream.cpp
index 28a0db1eb93..21b4abc0bbb 100644
--- a/3rdparty/asio/src/tests/unit/buffered_read_stream.cpp
+++ b/3rdparty/asio/src/tests/unit/buffered_read_stream.cpp
@@ -2,7 +2,7 @@
// buffered_read_stream.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,6 +17,7 @@
#include "asio/buffered_read_stream.hpp"
#include <cstring>
+#include <functional>
#include "archetypes/async_result.hpp"
#include "asio/buffer.hpp"
#include "asio/io_context.hpp"
@@ -30,12 +31,6 @@
# include <array>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
typedef asio::buffered_read_stream<
asio::ip::tcp::socket> stream_type;
@@ -81,14 +76,6 @@ void test_compile()
stream_type::executor_type ex = stream1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = stream1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = stream1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
stream_type::lowest_layer_type& lowest_layer = stream1.lowest_layer();
(void)lowest_layer;
@@ -255,13 +242,9 @@ void test_async_operations()
{
using namespace std; // For memcmp.
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context io_context;
@@ -340,7 +323,7 @@ void test_async_operations()
ASIO_TEST_SUITE
(
"buffered_read_stream",
- ASIO_TEST_CASE(test_compile)
+ ASIO_COMPILE_TEST_CASE(test_compile)
ASIO_TEST_CASE(test_sync_operations)
ASIO_TEST_CASE(test_async_operations)
)
diff --git a/3rdparty/asio/src/tests/unit/buffered_stream.cpp b/3rdparty/asio/src/tests/unit/buffered_stream.cpp
index 7e077d0ca71..4830ec277de 100644
--- a/3rdparty/asio/src/tests/unit/buffered_stream.cpp
+++ b/3rdparty/asio/src/tests/unit/buffered_stream.cpp
@@ -2,7 +2,7 @@
// buffered_stream.cpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,6 +17,7 @@
#include "asio/buffered_stream.hpp"
#include <cstring>
+#include <functional>
#include "archetypes/async_result.hpp"
#include "asio/buffer.hpp"
#include "asio/io_context.hpp"
@@ -30,12 +31,6 @@
# include <array>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
typedef asio::buffered_stream<
asio::ip::tcp::socket> stream_type;
@@ -85,14 +80,6 @@ void test_compile()
stream_type::executor_type ex = stream1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = stream1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = stream1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
stream_type::lowest_layer_type& lowest_layer = stream1.lowest_layer();
(void)lowest_layer;
@@ -273,13 +260,9 @@ void test_async_operations()
{
using namespace std; // For memcmp.
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context io_context;
@@ -366,7 +349,7 @@ void test_async_operations()
ASIO_TEST_SUITE
(
"buffered_stream",
- ASIO_TEST_CASE(test_compile)
+ ASIO_COMPILE_TEST_CASE(test_compile)
ASIO_TEST_CASE(test_sync_operations)
ASIO_TEST_CASE(test_async_operations)
)
diff --git a/3rdparty/asio/src/tests/unit/buffered_write_stream.cpp b/3rdparty/asio/src/tests/unit/buffered_write_stream.cpp
index dd520505d33..635ff984b8d 100644
--- a/3rdparty/asio/src/tests/unit/buffered_write_stream.cpp
+++ b/3rdparty/asio/src/tests/unit/buffered_write_stream.cpp
@@ -2,7 +2,7 @@
// buffered_write_stream.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,6 +17,7 @@
#include "asio/buffered_write_stream.hpp"
#include <cstring>
+#include <functional>
#include "archetypes/async_result.hpp"
#include "asio/buffer.hpp"
#include "asio/io_context.hpp"
@@ -30,12 +31,6 @@
# include <array>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
typedef asio::buffered_write_stream<
asio::ip::tcp::socket> stream_type;
@@ -81,14 +76,6 @@ void test_compile()
stream_type::executor_type ex = stream1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = stream1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = stream1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
stream_type::lowest_layer_type& lowest_layer = stream1.lowest_layer();
(void)lowest_layer;
@@ -262,13 +249,9 @@ void test_async_operations()
{
using namespace std; // For memcmp.
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context io_context;
@@ -355,7 +338,7 @@ void test_async_operations()
ASIO_TEST_SUITE
(
"buffered_write_stream",
- ASIO_TEST_CASE(test_compile)
+ ASIO_COMPILE_TEST_CASE(test_compile)
ASIO_TEST_CASE(test_sync_operations)
ASIO_TEST_CASE(test_async_operations)
)
diff --git a/3rdparty/asio/src/tests/unit/buffers_iterator.cpp b/3rdparty/asio/src/tests/unit/buffers_iterator.cpp
index bd8c27522b2..071dc1bb8b3 100644
--- a/3rdparty/asio/src/tests/unit/buffers_iterator.cpp
+++ b/3rdparty/asio/src/tests/unit/buffers_iterator.cpp
@@ -2,7 +2,7 @@
// buffers_iterator.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,17 +16,10 @@
// Test that header file is self-contained.
#include "asio/buffers_iterator.hpp"
+#include <array>
#include "asio/buffer.hpp"
#include "unit_test.hpp"
-#if defined(ASIO_HAS_BOOST_ARRAY)
-# include <boost/array.hpp>
-#endif // defined(ASIO_HAS_BOOST_ARRAY)
-
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
//------------------------------------------------------------------------------
// buffers_iterator_compile test
@@ -36,11 +29,7 @@
namespace buffers_iterator_compile {
-#if defined(ASIO_HAS_BOOST_ARRAY)
-using boost::array;
-#elif defined(ASIO_HAS_STD_ARRAY)
using std::array;
-#endif // defined(ASIO_HAS_BOOST_ARRAY)
using std::vector;
using namespace asio;
@@ -288,5 +277,5 @@ void test()
ASIO_TEST_SUITE
(
"buffers_iterator",
- ASIO_TEST_CASE(buffers_iterator_compile::test)
+ ASIO_COMPILE_TEST_CASE(buffers_iterator_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/cancellation_signal.cpp b/3rdparty/asio/src/tests/unit/cancellation_signal.cpp
new file mode 100644
index 00000000000..0b0f72fcbcb
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/cancellation_signal.cpp
@@ -0,0 +1,25 @@
+//
+// cancellation_signal.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/cancellation_signal.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "cancellation_signal",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/raw_socket_service.cpp b/3rdparty/asio/src/tests/unit/cancellation_state.cpp
index c7b736f852e..74bc6566916 100644
--- a/3rdparty/asio/src/tests/unit/raw_socket_service.cpp
+++ b/3rdparty/asio/src/tests/unit/cancellation_state.cpp
@@ -1,8 +1,8 @@
//
-// raw_socket_service.cpp
+// cancellation_state.cpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/raw_socket_service.hpp"
+#include "asio/cancellation_state.hpp"
#include "unit_test.hpp"
ASIO_TEST_SUITE
(
- "raw_socket_service",
+ "cancellation_state",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/cancellation_type.cpp b/3rdparty/asio/src/tests/unit/cancellation_type.cpp
new file mode 100644
index 00000000000..fd6accb0a05
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/cancellation_type.cpp
@@ -0,0 +1,25 @@
+//
+// cancellation_type.cpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/cancellation_type.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "cancellation_type",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/co_spawn.cpp b/3rdparty/asio/src/tests/unit/co_spawn.cpp
new file mode 100644
index 00000000000..c5d1fbf776d
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/co_spawn.cpp
@@ -0,0 +1,133 @@
+//
+// co_spawn.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/co_spawn.hpp"
+
+#include "unit_test.hpp"
+
+#if defined(ASIO_HAS_CO_AWAIT)
+
+#include <stdexcept>
+#include "asio/any_completion_handler.hpp"
+#include "asio/bind_cancellation_slot.hpp"
+#include "asio/io_context.hpp"
+
+asio::awaitable<void> void_returning_coroutine()
+{
+ co_return;
+}
+
+asio::awaitable<int> int_returning_coroutine()
+{
+ co_return 42;
+}
+
+void test_co_spawn_with_any_completion_handler()
+{
+ asio::io_context ctx;
+
+ bool called = false;
+ asio::co_spawn(ctx, void_returning_coroutine(),
+ asio::any_completion_handler<void(std::exception_ptr)>(
+ [&](std::exception_ptr)
+ {
+ called = true;
+ }));
+
+ ASIO_CHECK(!called);
+
+ ctx.run();
+
+ ASIO_CHECK(called);
+
+ int result = 0;
+ asio::co_spawn(ctx, int_returning_coroutine(),
+ asio::any_completion_handler<void(std::exception_ptr, int)>(
+ [&](std::exception_ptr, int i)
+ {
+ result = i;
+ }));
+
+ ASIO_CHECK(result == 0);
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(result == 42);
+}
+
+void test_co_spawn_immediate_cancel()
+{
+ asio::cancellation_signal sig;
+ asio::io_context ctx;
+
+ std::exception_ptr result = nullptr;
+ bool called = false;
+ asio::co_spawn(ctx, void_returning_coroutine(),
+ asio::bind_cancellation_slot(sig.slot(),
+ [&](std::exception_ptr e)
+ {
+ result = e;
+ called = true;
+ }));
+
+ ASIO_CHECK(!called);
+ ASIO_CHECK(result == nullptr);
+
+ sig.emit(asio::cancellation_type::all);
+ ctx.run();
+
+ ASIO_CHECK(called);
+ ASIO_CHECK(result != nullptr);
+
+ result = nullptr;
+ called = false;
+ asio::co_spawn(ctx, int_returning_coroutine(),
+ asio::bind_cancellation_slot(sig.slot(),
+ [&](std::exception_ptr e, int i)
+ {
+ ASIO_CHECK(i != 42);
+ result = e;
+ called = true;
+ }));
+
+ ASIO_CHECK(!called);
+ ASIO_CHECK(result == nullptr);
+
+ sig.emit(asio::cancellation_type::all);
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(called);
+ ASIO_CHECK(result != nullptr);
+}
+
+ASIO_TEST_SUITE
+(
+ "co_spawn",
+ ASIO_TEST_CASE(test_co_spawn_with_any_completion_handler)
+ ASIO_TEST_CASE(test_co_spawn_immediate_cancel)
+)
+
+#else // defined(ASIO_HAS_CO_AWAIT)
+
+ASIO_TEST_SUITE
+(
+ "co_spawn",
+ ASIO_TEST_CASE(null_test)
+)
+
+#endif // defined(ASIO_HAS_CO_AWAIT)
diff --git a/3rdparty/asio/src/tests/unit/completion_condition.cpp b/3rdparty/asio/src/tests/unit/completion_condition.cpp
index 43e64544728..106789e5e3c 100644
--- a/3rdparty/asio/src/tests/unit/completion_condition.cpp
+++ b/3rdparty/asio/src/tests/unit/completion_condition.cpp
@@ -2,7 +2,7 @@
// completion_condition.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/compose.cpp b/3rdparty/asio/src/tests/unit/compose.cpp
new file mode 100644
index 00000000000..c9820af2fd3
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/compose.cpp
@@ -0,0 +1,528 @@
+//
+// compose.cpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/compose.hpp"
+
+#include <functional>
+#include "asio/bind_cancellation_slot.hpp"
+#include "asio/cancellation_signal.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "asio/system_timer.hpp"
+#include "unit_test.hpp"
+
+//------------------------------------------------------------------------------
+
+class impl_0_completion_args
+{
+public:
+ explicit impl_0_completion_args(asio::io_context& ioc)
+ : ioc_(ioc),
+ state_(starting)
+ {
+ }
+
+ template <typename Self>
+ void operator()(Self& self)
+ {
+ switch (state_)
+ {
+ case starting:
+ state_ = posting;
+ asio::post(ioc_, static_cast<Self&&>(self));
+ break;
+ case posting:
+ self.complete();
+ break;
+ default:
+ break;
+ }
+ }
+
+private:
+ asio::io_context& ioc_;
+ enum { starting, posting } state_;
+};
+
+template <typename CompletionToken>
+ASIO_INITFN_RESULT_TYPE(CompletionToken, void())
+async_0_completion_args(asio::io_context& ioc,
+ CompletionToken&& token)
+{
+ return asio::async_compose<CompletionToken, void()>(
+ impl_0_completion_args(ioc), token);
+}
+
+void compose_0_args_handler(int* count)
+{
+ ++(*count);
+}
+
+struct compose_0_args_lvalue_handler
+{
+ int* count_;
+
+ void operator()()
+ {
+ ++(*count_);
+ }
+};
+
+void compose_0_completion_args_test()
+{
+ namespace bindns = std;
+
+ asio::io_context ioc;
+ int count = 0;
+
+ async_0_completion_args(ioc, bindns::bind(&compose_0_args_handler, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ ioc.restart();
+ count = 0;
+
+ compose_0_args_lvalue_handler lvalue_handler = { &count };
+ async_0_completion_args(ioc, lvalue_handler);
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+}
+
+//------------------------------------------------------------------------------
+
+class impl_1_completion_arg
+{
+public:
+ explicit impl_1_completion_arg(asio::io_context& ioc)
+ : ioc_(ioc),
+ state_(starting)
+ {
+ }
+
+ template <typename Self>
+ void operator()(Self& self)
+ {
+ switch (state_)
+ {
+ case starting:
+ state_ = posting;
+ asio::post(ioc_, static_cast<Self&&>(self));
+ break;
+ case posting:
+ self.complete(42);
+ break;
+ default:
+ break;
+ }
+ }
+
+private:
+ asio::io_context& ioc_;
+ enum { starting, posting } state_;
+};
+
+template <typename CompletionToken>
+ASIO_INITFN_RESULT_TYPE(CompletionToken, void(int))
+async_1_completion_arg(asio::io_context& ioc,
+ CompletionToken&& token)
+{
+ return asio::async_compose<CompletionToken, void(int)>(
+ impl_1_completion_arg(ioc), token);
+}
+
+void compose_1_arg_handler(int* count, int* result_out, int result)
+{
+ ++(*count);
+ *result_out = result;
+}
+
+struct compose_1_arg_lvalue_handler
+{
+ int* count_;
+ int* result_out_;
+
+ void operator()(int result)
+ {
+ ++(*count_);
+ *result_out_ = result;
+ }
+};
+
+void compose_1_completion_arg_test()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+
+ asio::io_context ioc;
+ int count = 0;
+ int result = 0;
+
+ async_1_completion_arg(ioc,
+ bindns::bind(&compose_1_arg_handler, &count, &result, _1));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+ ASIO_CHECK(result == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == 42);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ compose_1_arg_lvalue_handler lvalue_handler = { &count, &result };
+ async_1_completion_arg(ioc, lvalue_handler);
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+ ASIO_CHECK(result == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == 42);
+}
+
+//------------------------------------------------------------------------------
+
+typedef asio::enable_terminal_cancellation default_filter;
+
+template <typename CancellationFilter>
+class impl_cancellable
+{
+public:
+ explicit impl_cancellable(CancellationFilter cancellation_filter,
+ asio::system_timer& timer)
+ : cancellation_filter_(cancellation_filter),
+ timer_(timer),
+ state_(starting)
+ {
+ }
+
+ template <typename Self>
+ void operator()(Self& self,
+ const asio::error_code& ec = asio::error_code())
+ {
+ switch (state_)
+ {
+ case starting:
+ if (!asio::is_same<CancellationFilter, default_filter>::value)
+ self.reset_cancellation_state(cancellation_filter_);
+ state_ = waiting;
+ timer_.expires_after(asio::chrono::milliseconds(100));
+ timer_.async_wait(static_cast<Self&&>(self));
+ break;
+ case waiting:
+ self.complete(!ec);
+ break;
+ default:
+ break;
+ }
+ }
+
+private:
+ CancellationFilter cancellation_filter_;
+ asio::system_timer& timer_;
+ enum { starting, waiting } state_;
+};
+
+template <typename CancellationFilter, typename CompletionToken>
+ASIO_INITFN_RESULT_TYPE(CompletionToken, void(bool))
+async_cancellable(CancellationFilter cancellation_filter,
+ asio::system_timer& timer,
+ CompletionToken&& token)
+{
+ return asio::async_compose<CompletionToken, void(bool)>(
+ impl_cancellable<CancellationFilter>(cancellation_filter, timer), token);
+}
+
+void compose_partial_cancellation_handler(
+ int* count, bool* result_out, bool result)
+{
+ ++(*count);
+ *result_out = result;
+}
+
+void compose_default_cancellation_test()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+
+ asio::io_context ioc;
+ asio::system_timer timer(ioc);
+ asio::cancellation_signal signal;
+ int count = 0;
+ bool result = false;
+
+ async_cancellable(default_filter(), timer,
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1));
+
+ ioc.run();
+
+ // No cancellation, operation completes successfully.
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == true);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(default_filter(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Total cancellation unsupported. Operation completes successfully.
+ signal.emit(asio::cancellation_type::total);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == true);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(default_filter(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Partial cancellation unsupported. Operation completes successfully.
+ signal.emit(asio::cancellation_type::partial);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == true);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(default_filter(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Terminal cancellation works. Operation completes with failure.
+ signal.emit(asio::cancellation_type::terminal);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == false);
+}
+
+void compose_partial_cancellation_test()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+
+ asio::io_context ioc;
+ asio::system_timer timer(ioc);
+ asio::cancellation_signal signal;
+ int count = 0;
+ bool result = false;
+
+ async_cancellable(asio::enable_partial_cancellation(), timer,
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1));
+
+ ioc.run();
+
+ // No cancellation, operation completes successfully.
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == true);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(asio::enable_partial_cancellation(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Total cancellation unsupported. Operation completes successfully.
+ signal.emit(asio::cancellation_type::total);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == true);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(asio::enable_partial_cancellation(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Partial cancellation works. Operation completes with failure.
+ signal.emit(asio::cancellation_type::partial);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == false);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(asio::enable_partial_cancellation(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Terminal cancellation works. Operation completes with failure.
+ signal.emit(asio::cancellation_type::terminal);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == false);
+}
+
+void compose_total_cancellation_test()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+
+ asio::io_context ioc;
+ asio::system_timer timer(ioc);
+ asio::cancellation_signal signal;
+ int count = 0;
+ bool result = false;
+
+ async_cancellable(asio::enable_total_cancellation(), timer,
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1));
+
+ ioc.run();
+
+ // No cancellation, operation completes successfully.
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == true);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(asio::enable_total_cancellation(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Total cancellation works. Operation completes with failure.
+ signal.emit(asio::cancellation_type::total);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == false);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(asio::enable_total_cancellation(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Partial cancellation works. Operation completes with failure.
+ signal.emit(asio::cancellation_type::partial);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == false);
+
+ ioc.restart();
+ count = 0;
+ result = 0;
+
+ async_cancellable(asio::enable_total_cancellation(), timer,
+ asio::bind_cancellation_slot(signal.slot(),
+ bindns::bind(&compose_partial_cancellation_handler,
+ &count, &result, _1)));
+
+ // Terminal cancellation works. Operation completes with failure.
+ signal.emit(asio::cancellation_type::terminal);
+
+ ioc.run();
+
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(result == false);
+}
+
+//------------------------------------------------------------------------------
+
+ASIO_TEST_SUITE
+(
+ "compose",
+ ASIO_TEST_CASE(compose_0_completion_args_test)
+ ASIO_TEST_CASE(compose_1_completion_arg_test)
+ ASIO_TEST_CASE(compose_default_cancellation_test)
+ ASIO_TEST_CASE(compose_partial_cancellation_test)
+ ASIO_TEST_CASE(compose_total_cancellation_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/connect.cpp b/3rdparty/asio/src/tests/unit/connect.cpp
index 3b0a43248f3..16c0331b4a3 100644
--- a/3rdparty/asio/src/tests/unit/connect.cpp
+++ b/3rdparty/asio/src/tests/unit/connect.cpp
@@ -2,7 +2,7 @@
// connect.cpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,10 +16,1165 @@
// Test that header file is self-contained.
#include "asio/connect.hpp"
+#include <functional>
+#include <vector>
+#include "asio/detail/thread.hpp"
+#include "asio/ip/tcp.hpp"
#include "unit_test.hpp"
+namespace bindns = std;
+using bindns::placeholders::_1;
+using bindns::placeholders::_2;
+
+class connection_sink
+{
+public:
+ connection_sink()
+ : acceptor_(io_context_,
+ asio::ip::tcp::endpoint(
+ asio::ip::address_v4::loopback(), 0)),
+ target_endpoint_(acceptor_.local_endpoint()),
+ socket_(io_context_),
+ thread_(bindns::bind(&connection_sink::run, this))
+ {
+ }
+
+ ~connection_sink()
+ {
+ io_context_.stop();
+ thread_.join();
+ }
+
+ asio::ip::tcp::endpoint target_endpoint()
+ {
+ return target_endpoint_;
+ }
+
+private:
+ void run()
+ {
+ io_context_.run();
+ }
+
+ void handle_accept()
+ {
+ socket_.close();
+ acceptor_.async_accept(socket_,
+ bindns::bind(&connection_sink::handle_accept, this));
+ }
+
+ asio::io_context io_context_;
+ asio::ip::tcp::acceptor acceptor_;
+ asio::ip::tcp::endpoint target_endpoint_;
+ asio::ip::tcp::socket socket_;
+ asio::detail::thread thread_;
+};
+
+bool true_cond_1(const asio::error_code& /*ec*/,
+ const asio::ip::tcp::endpoint& /*endpoint*/)
+{
+ return true;
+}
+
+struct true_cond_2
+{
+ template <typename Endpoint>
+ bool operator()(const asio::error_code& /*ec*/,
+ const Endpoint& /*endpoint*/)
+ {
+ return true;
+ }
+};
+
+std::vector<asio::ip::tcp::endpoint>::const_iterator legacy_true_cond_1(
+ const asio::error_code& /*ec*/,
+ std::vector<asio::ip::tcp::endpoint>::const_iterator next)
+{
+ return next;
+}
+
+struct legacy_true_cond_2
+{
+ template <typename Iterator>
+ Iterator operator()(const asio::error_code& /*ec*/, Iterator next)
+ {
+ return next;
+ }
+};
+
+bool false_cond(const asio::error_code& /*ec*/,
+ const asio::ip::tcp::endpoint& /*endpoint*/)
+{
+ return false;
+}
+
+void range_handler(const asio::error_code& ec,
+ const asio::ip::tcp::endpoint& endpoint,
+ asio::error_code* out_ec,
+ asio::ip::tcp::endpoint* out_endpoint)
+{
+ *out_ec = ec;
+ *out_endpoint = endpoint;
+}
+
+void iter_handler(const asio::error_code& ec,
+ std::vector<asio::ip::tcp::endpoint>::const_iterator iter,
+ asio::error_code* out_ec,
+ std::vector<asio::ip::tcp::endpoint>::const_iterator* out_iter)
+{
+ *out_ec = ec;
+ *out_iter = iter;
+}
+
+void test_connect_range()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ asio::ip::tcp::endpoint result;
+
+ try
+ {
+ result = asio::connect(socket, endpoints);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints);
+ ASIO_CHECK(result == endpoints[0]);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints);
+ ASIO_CHECK(result == endpoints[0]);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket, endpoints);
+ ASIO_CHECK(result == endpoints[1]);
+}
+
+void test_connect_range_ec()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ asio::ip::tcp::endpoint result;
+ asio::error_code ec;
+
+ result = asio::connect(socket, endpoints, ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints, ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints, ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket, endpoints, ec);
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+}
+
+void test_connect_range_cond()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ asio::ip::tcp::endpoint result;
+
+ try
+ {
+ result = asio::connect(socket, endpoints, true_cond_1);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, endpoints, true_cond_2());
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, endpoints, legacy_true_cond_1);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, endpoints, legacy_true_cond_2());
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, endpoints, false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints, true_cond_1);
+ ASIO_CHECK(result == endpoints[0]);
+
+ result = asio::connect(socket, endpoints, true_cond_2());
+ ASIO_CHECK(result == endpoints[0]);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_1);
+ ASIO_CHECK(result == endpoints[0]);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_2());
+ ASIO_CHECK(result == endpoints[0]);
+
+ try
+ {
+ result = asio::connect(socket, endpoints, false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints, true_cond_1);
+ ASIO_CHECK(result == endpoints[0]);
+
+ result = asio::connect(socket, endpoints, true_cond_2());
+ ASIO_CHECK(result == endpoints[0]);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_1);
+ ASIO_CHECK(result == endpoints[0]);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_2());
+ ASIO_CHECK(result == endpoints[0]);
+
+ try
+ {
+ result = asio::connect(socket, endpoints, false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket, endpoints, true_cond_1);
+ ASIO_CHECK(result == endpoints[1]);
+
+ result = asio::connect(socket, endpoints, true_cond_2());
+ ASIO_CHECK(result == endpoints[1]);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_1);
+ ASIO_CHECK(result == endpoints[1]);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_2());
+ ASIO_CHECK(result == endpoints[1]);
+
+ try
+ {
+ result = asio::connect(socket, endpoints, false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+}
+
+void test_connect_range_cond_ec()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ asio::ip::tcp::endpoint result;
+ asio::error_code ec;
+
+ result = asio::connect(socket, endpoints, true_cond_1, ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, endpoints, true_cond_2(), ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_1, ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, endpoints, false_cond, ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints, true_cond_1, ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, true_cond_2(), ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_1, ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, false_cond, ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, endpoints, true_cond_1, ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, true_cond_2(), ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_1, ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, false_cond, ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket, endpoints, true_cond_1, ec);
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, true_cond_2(), ec);
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_1, ec);
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, endpoints, false_cond, ec);
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+}
+
+void test_connect_iter()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ const std::vector<asio::ip::tcp::endpoint>& cendpoints = endpoints;
+ std::vector<asio::ip::tcp::endpoint>::const_iterator result;
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(), cendpoints.end());
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(), cendpoints.end());
+ ASIO_CHECK(result == cendpoints.begin());
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(), cendpoints.end());
+ ASIO_CHECK(result == cendpoints.begin());
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(), cendpoints.end());
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+}
+
+void test_connect_iter_ec()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ const std::vector<asio::ip::tcp::endpoint>& cendpoints = endpoints;
+ std::vector<asio::ip::tcp::endpoint>::const_iterator result;
+ asio::error_code ec;
+
+ result = asio::connect(socket,
+ cendpoints.begin(), cendpoints.end(), ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket,
+ cendpoints.begin(), cendpoints.end(), ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket,
+ cendpoints.begin(), cendpoints.end(), ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket,
+ cendpoints.begin(), cendpoints.end(), ec);
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+}
+
+void test_connect_iter_cond()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ const std::vector<asio::ip::tcp::endpoint>& cendpoints = endpoints;
+ std::vector<asio::ip::tcp::endpoint>::const_iterator result;
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2());
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2());
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1);
+ ASIO_CHECK(result == cendpoints.begin());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2());
+ ASIO_CHECK(result == cendpoints.begin());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1);
+ ASIO_CHECK(result == cendpoints.begin());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2());
+ ASIO_CHECK(result == cendpoints.begin());
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1);
+ ASIO_CHECK(result == cendpoints.begin());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2());
+ ASIO_CHECK(result == cendpoints.begin());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1);
+ ASIO_CHECK(result == cendpoints.begin());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2());
+ ASIO_CHECK(result == cendpoints.begin());
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1);
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2());
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1);
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2());
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+
+ try
+ {
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond);
+ ASIO_CHECK(false);
+ }
+ catch (asio::system_error& e)
+ {
+ ASIO_CHECK(e.code() == asio::error::not_found);
+ }
+}
+
+void test_connect_iter_cond_ec()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ const std::vector<asio::ip::tcp::endpoint>& cendpoints = endpoints;
+ std::vector<asio::ip::tcp::endpoint>::const_iterator result;
+ asio::error_code ec;
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond, ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond, ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond, ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_1, ec);
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), legacy_true_cond_2(), ec);
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ result = asio::connect(socket, cendpoints.begin(),
+ cendpoints.end(), false_cond, ec);
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+}
+
+void test_async_connect_range()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ asio::ip::tcp::endpoint result;
+ asio::error_code ec;
+
+ asio::async_connect(socket, endpoints,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, endpoints,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, endpoints,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ asio::async_connect(socket, endpoints,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+}
+
+void test_async_connect_range_cond()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ asio::ip::tcp::endpoint result;
+ asio::error_code ec;
+
+ asio::async_connect(socket, endpoints, true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, endpoints, true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, endpoints, false_cond,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, endpoints, true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, false_cond,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, endpoints, true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[0]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, false_cond,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ asio::async_connect(socket, endpoints, true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_1,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, legacy_true_cond_2(),
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == endpoints[1]);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, endpoints, false_cond,
+ bindns::bind(range_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == asio::ip::tcp::endpoint());
+ ASIO_CHECK(ec == asio::error::not_found);
+}
+
+void test_async_connect_iter()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ const std::vector<asio::ip::tcp::endpoint>& cendpoints = endpoints;
+ std::vector<asio::ip::tcp::endpoint>::const_iterator result;
+ asio::error_code ec;
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+}
+
+void test_async_connect_iter_cond()
+{
+ connection_sink sink;
+ asio::io_context io_context;
+ asio::ip::tcp::socket socket(io_context);
+ std::vector<asio::ip::tcp::endpoint> endpoints;
+ const std::vector<asio::ip::tcp::endpoint>& cendpoints = endpoints;
+ std::vector<asio::ip::tcp::endpoint>::const_iterator result;
+ asio::error_code ec;
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ false_cond, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ false_cond, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.push_back(sink.target_endpoint());
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin());
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ false_cond, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+
+ endpoints.insert(endpoints.begin(), asio::ip::tcp::endpoint());
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_1, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ legacy_true_cond_2(), bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.begin() + 1);
+ ASIO_CHECK(!ec);
+
+ asio::async_connect(socket, cendpoints.begin(), cendpoints.end(),
+ false_cond, bindns::bind(iter_handler, _1, _2, &ec, &result));
+ io_context.restart();
+ io_context.run();
+ ASIO_CHECK(result == cendpoints.end());
+ ASIO_CHECK(ec == asio::error::not_found);
+}
+
ASIO_TEST_SUITE
(
"connect",
- ASIO_TEST_CASE(null_test)
+ ASIO_TEST_CASE(test_connect_range)
+ ASIO_TEST_CASE(test_connect_range_ec)
+ ASIO_TEST_CASE(test_connect_range_cond)
+ ASIO_TEST_CASE(test_connect_range_cond_ec)
+ ASIO_TEST_CASE(test_connect_iter)
+ ASIO_TEST_CASE(test_connect_iter_ec)
+ ASIO_TEST_CASE(test_connect_iter_cond)
+ ASIO_TEST_CASE(test_connect_iter_cond_ec)
+ ASIO_TEST_CASE(test_async_connect_range)
+ ASIO_TEST_CASE(test_async_connect_range_cond)
+ ASIO_TEST_CASE(test_async_connect_iter)
+ ASIO_TEST_CASE(test_async_connect_iter_cond)
)
diff --git a/3rdparty/asio/src/tests/unit/connect_pipe.cpp b/3rdparty/asio/src/tests/unit/connect_pipe.cpp
new file mode 100644
index 00000000000..8c71a5d093c
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/connect_pipe.cpp
@@ -0,0 +1,154 @@
+//
+// connect_pipe.cpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/connect_pipe.hpp"
+
+#include <functional>
+#include <string>
+#include "asio/io_context.hpp"
+#include "asio/read.hpp"
+#include "asio/readable_pipe.hpp"
+#include "asio/writable_pipe.hpp"
+#include "asio/write.hpp"
+#include "unit_test.hpp"
+
+//------------------------------------------------------------------------------
+
+// connect_pipe_compile test
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that all connect_pipe functions compile and link
+// correctly. Runtime failures are ignored.
+
+namespace connect_pipe_compile {
+
+void test()
+{
+#if defined(ASIO_HAS_PIPE)
+ using namespace asio;
+
+ try
+ {
+ asio::io_context io_context;
+ asio::error_code ec1;
+
+ readable_pipe p1(io_context);
+ writable_pipe p2(io_context);
+ connect_pipe(p1, p2);
+
+ readable_pipe p3(io_context);
+ writable_pipe p4(io_context);
+ connect_pipe(p3, p4, ec1);
+ }
+ catch (std::exception&)
+ {
+ }
+#endif // defined(ASIO_HAS_PIPE)
+}
+
+} // namespace connect_pipe_compile
+
+//------------------------------------------------------------------------------
+
+// connect_pipe_runtime test
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that connect_pipe operates correctly at runtime.
+
+namespace connect_pipe_runtime {
+
+static const char write_data[]
+ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+void handle_read(const asio::error_code& err,
+ size_t bytes_transferred, bool* called)
+{
+ *called = true;
+ ASIO_CHECK(!err);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+}
+
+void handle_write(const asio::error_code& err,
+ size_t bytes_transferred, bool* called)
+{
+ *called = true;
+ ASIO_CHECK(!err);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+}
+
+void test()
+{
+#if defined(ASIO_HAS_PIPE)
+ using namespace std; // For memcmp.
+ using namespace asio;
+
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ try
+ {
+ asio::io_context io_context;
+ asio::error_code ec1;
+ asio::error_code ec2;
+
+ readable_pipe p1(io_context);
+ writable_pipe p2(io_context);
+ connect_pipe(p1, p2);
+
+ std::string data1 = write_data;
+ asio::write(p2, asio::buffer(data1));
+
+ std::string data2;
+ data2.resize(data1.size());
+ asio::read(p1, asio::buffer(data2));
+
+ ASIO_CHECK(data1 == data2);
+
+ char read_buffer[sizeof(write_data)];
+ bool read_completed = false;
+ asio::async_read(p1,
+ asio::buffer(read_buffer),
+ bindns::bind(handle_read,
+ _1, _2, &read_completed));
+
+ bool write_completed = false;
+ asio::async_write(p2,
+ asio::buffer(write_data),
+ bindns::bind(handle_write,
+ _1, _2, &write_completed));
+
+ io_context.run();
+
+ ASIO_CHECK(read_completed);
+ ASIO_CHECK(write_completed);
+ ASIO_CHECK(memcmp(read_buffer, write_data, sizeof(write_data)) == 0);
+ }
+ catch (std::exception&)
+ {
+ ASIO_CHECK(false);
+ }
+#endif // defined(ASIO_HAS_PIPE)
+}
+
+} // namespace connect_pipe_compile
+
+//------------------------------------------------------------------------------
+
+ASIO_TEST_SUITE
+(
+ "connect_pipe",
+ ASIO_COMPILE_TEST_CASE(connect_pipe_compile::test)
+ ASIO_TEST_CASE(connect_pipe_runtime::test)
+)
diff --git a/3rdparty/asio/src/tests/unit/consign.cpp b/3rdparty/asio/src/tests/unit/consign.cpp
new file mode 100644
index 00000000000..b24f5281c75
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/consign.cpp
@@ -0,0 +1,56 @@
+//
+// consign.cpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/consign.hpp"
+
+#include "asio/bind_executor.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "asio/system_timer.hpp"
+#include "unit_test.hpp"
+
+void consign_test()
+{
+ asio::io_context io1;
+ asio::io_context io2;
+ asio::system_timer timer1(io1);
+ int count = 0;
+
+ timer1.expires_after(asio::chrono::seconds(0));
+ timer1.async_wait(
+ asio::consign(
+ asio::bind_executor(io2.get_executor(),
+ [&count](asio::error_code)
+ {
+ ++count;
+ }), 123, 321));
+
+ ASIO_CHECK(count == 0);
+
+ io1.run();
+
+ ASIO_CHECK(count == 0);
+
+ io2.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+ASIO_TEST_SUITE
+(
+ "consign",
+ ASIO_TEST_CASE(consign_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/coroutine.cpp b/3rdparty/asio/src/tests/unit/coroutine.cpp
index 162cacdbb6d..72e6953a31a 100644
--- a/3rdparty/asio/src/tests/unit/coroutine.cpp
+++ b/3rdparty/asio/src/tests/unit/coroutine.cpp
@@ -2,7 +2,7 @@
// coroutine.cpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/deadline_timer.cpp b/3rdparty/asio/src/tests/unit/deadline_timer.cpp
index 9c48b62c69a..9bc7f16fcd2 100644
--- a/3rdparty/asio/src/tests/unit/deadline_timer.cpp
+++ b/3rdparty/asio/src/tests/unit/deadline_timer.cpp
@@ -2,7 +2,7 @@
// deadline_timer.cpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -20,7 +20,7 @@
#if defined(ASIO_HAS_BOOST_DATE_TIME)
-#include <boost/bind.hpp>
+#include <boost/bind/bind.hpp>
#include "archetypes/async_result.hpp"
#include "asio/executor_work_guard.hpp"
#include "asio/io_context.hpp"
@@ -250,21 +250,77 @@ struct custom_allocation_timer_handler
custom_allocation_timer_handler(int* count) : count_(count) {}
void operator()(const asio::error_code&) {}
int* count_;
-};
-void* asio_handler_allocate(std::size_t size,
- custom_allocation_timer_handler* handler)
-{
- ++(*handler->count_);
- return ::operator new(size);
-}
-
-void asio_handler_deallocate(void* pointer, std::size_t,
- custom_allocation_timer_handler* handler)
-{
- --(*handler->count_);
- ::operator delete(pointer);
-}
+ template <typename T>
+ struct allocator
+ {
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef const T* const_pointer;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef T value_type;
+
+ template <typename U>
+ struct rebind
+ {
+ typedef allocator<U> other;
+ };
+
+ explicit allocator(int* count) noexcept
+ : count_(count)
+ {
+ }
+
+ allocator(const allocator& other) noexcept
+ : count_(other.count_)
+ {
+ }
+
+ template <typename U>
+ allocator(const allocator<U>& other) noexcept
+ : count_(other.count_)
+ {
+ }
+
+ pointer allocate(size_type n, const void* = 0)
+ {
+ ++(*count_);
+ return static_cast<T*>(::operator new(sizeof(T) * n));
+ }
+
+ void deallocate(pointer p, size_type)
+ {
+ --(*count_);
+ ::operator delete(p);
+ }
+
+ size_type max_size() const
+ {
+ return ~size_type(0);
+ }
+
+ void construct(pointer p, const T& v)
+ {
+ new (p) T(v);
+ }
+
+ void destroy(pointer p)
+ {
+ p->~T();
+ }
+
+ int* count_;
+ };
+
+ typedef allocator<int> allocator_type;
+
+ allocator_type get_allocator() const noexcept
+ {
+ return allocator_type(count_);
+ }
+};
void deadline_timer_custom_allocation_test()
{
@@ -340,7 +396,6 @@ void deadline_timer_async_result_test()
ioc.run();
}
-#if defined(ASIO_HAS_MOVE)
asio::deadline_timer make_timer(asio::io_context& ioc, int* count)
{
asio::deadline_timer t(ioc);
@@ -348,11 +403,9 @@ asio::deadline_timer make_timer(asio::io_context& ioc, int* count)
t.async_wait(boost::bind(increment, count));
return t;
}
-#endif // defined(ASIO_HAS_MOVE)
void deadline_timer_move_test()
{
-#if defined(ASIO_HAS_MOVE)
asio::io_context io_context1;
asio::io_context io_context2;
int count = 0;
@@ -370,7 +423,6 @@ void deadline_timer_move_test()
io_context1.run();
ASIO_CHECK(count == 2);
-#endif // defined(ASIO_HAS_MOVE)
}
ASIO_TEST_SUITE
diff --git a/3rdparty/asio/src/tests/unit/defer.cpp b/3rdparty/asio/src/tests/unit/defer.cpp
index 90163f636a5..f41c1b9f025 100644
--- a/3rdparty/asio/src/tests/unit/defer.cpp
+++ b/3rdparty/asio/src/tests/unit/defer.cpp
@@ -2,7 +2,7 @@
// defer.cpp
// ~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/deferred.cpp b/3rdparty/asio/src/tests/unit/deferred.cpp
new file mode 100644
index 00000000000..b2db70d4b3d
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/deferred.cpp
@@ -0,0 +1,25 @@
+//
+// deferred.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/deferred.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "experimental/deferred",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/detached.cpp b/3rdparty/asio/src/tests/unit/detached.cpp
new file mode 100644
index 00000000000..506c13d8773
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/detached.cpp
@@ -0,0 +1,25 @@
+//
+// detached.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/detached.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "detached",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/dispatch.cpp b/3rdparty/asio/src/tests/unit/dispatch.cpp
index 64c20354bb9..f6fb84d4f91 100644
--- a/3rdparty/asio/src/tests/unit/dispatch.cpp
+++ b/3rdparty/asio/src/tests/unit/dispatch.cpp
@@ -2,7 +2,7 @@
// dispatch.cpp
// ~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/error.cpp b/3rdparty/asio/src/tests/unit/error.cpp
index d4c9b32106b..3f8aa75efbe 100644
--- a/3rdparty/asio/src/tests/unit/error.cpp
+++ b/3rdparty/asio/src/tests/unit/error.cpp
@@ -2,7 +2,7 @@
// error.cpp
// ~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/execution/any_executor.cpp b/3rdparty/asio/src/tests/unit/execution/any_executor.cpp
new file mode 100644
index 00000000000..3e2dabdc5a5
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/any_executor.cpp
@@ -0,0 +1,1202 @@
+//
+// any_executor.cpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/any_executor.hpp"
+
+#include <cstring>
+#include <functional>
+#include "asio/thread_pool.hpp"
+#include "../unit_test.hpp"
+
+using namespace asio;
+namespace bindns = std;
+
+static bool next_nothrow_new_fails = false;
+
+void* operator new(std::size_t n,
+ const std::nothrow_t&) noexcept
+{
+ if (next_nothrow_new_fails)
+ {
+ next_nothrow_new_fails = false;
+ return 0;
+ }
+ return ::operator new(n);
+}
+
+struct fat_executor
+{
+ fat_executor(int id)
+ : id_(id)
+ {
+ std::memset(data_, 0, sizeof(data_));
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ std::size_t query(execution::occupancy_t) const
+ {
+ return 1;
+ }
+
+ friend bool operator==(const fat_executor& a,
+ const fat_executor& b) noexcept
+ {
+ return a.id_ == b.id_;
+ }
+
+ friend bool operator!=(const fat_executor& a,
+ const fat_executor& b) noexcept
+ {
+ return a.id_ != b.id_;
+ }
+
+ int id_;
+ unsigned char data_[1024];
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename F>
+struct execute_member<fat_executor, F>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <>
+struct query_member<fat_executor, execution::occupancy_t>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+ typedef std::size_t result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<fat_executor>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void any_executor_construction_test()
+{
+ typedef execution::any_executor<> ex_no_props_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t
+ > ex_one_prop_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t,
+ execution::occupancy_t
+ > ex_two_props_t;
+
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ ex_two_props_t ex_two_props_1;
+
+ ASIO_CHECK(ex_two_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_1 == null_ptr);
+
+ ex_two_props_t ex_two_props_2(null_ptr);
+
+ ASIO_CHECK(ex_two_props_2.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_2 == null_ptr);
+ ASIO_CHECK(ex_two_props_2 == ex_two_props_1);
+
+ ex_two_props_t ex_two_props_3(pool.executor());
+
+ ASIO_CHECK(ex_two_props_3.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_3 != null_ptr);
+ ASIO_CHECK(ex_two_props_3 != ex_two_props_1);
+
+ ex_two_props_t ex_two_props_4(ex_two_props_1);
+
+ ASIO_CHECK(ex_two_props_4.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_4 == null_ptr);
+ ASIO_CHECK(ex_two_props_4 == ex_two_props_1);
+
+ ex_two_props_t ex_two_props_5(ex_two_props_3);
+
+ ASIO_CHECK(ex_two_props_5.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_5 != null_ptr);
+ ASIO_CHECK(ex_two_props_5 == ex_two_props_3);
+
+ ex_two_props_t ex_two_props_6 = fat_executor(1);
+
+ ASIO_CHECK(ex_two_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_6 != null_ptr);
+ ASIO_CHECK(ex_two_props_6 != ex_two_props_1);
+
+ ex_two_props_t ex_two_props_7 = fat_executor(1);
+
+ ASIO_CHECK(ex_two_props_7.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_7 != null_ptr);
+ ASIO_CHECK(ex_two_props_7 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_7 == ex_two_props_6);
+
+ ex_two_props_t ex_two_props_8 = fat_executor(2);
+
+ ASIO_CHECK(ex_two_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_8 != null_ptr);
+ ASIO_CHECK(ex_two_props_8 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_8 != ex_two_props_6);
+ ASIO_CHECK(ex_two_props_8 != ex_two_props_7);
+
+ ex_two_props_t ex_two_props_9(ex_two_props_6);
+
+ ASIO_CHECK(ex_two_props_9.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_9 != null_ptr);
+ ASIO_CHECK(ex_two_props_9 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_9 == ex_two_props_6);
+ ASIO_CHECK(ex_two_props_9 == ex_two_props_7);
+ ASIO_CHECK(ex_two_props_9 != ex_two_props_8);
+
+ ex_two_props_t ex_two_props_10(std::move(ex_two_props_1));
+
+ ASIO_CHECK(ex_two_props_10.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_10 == null_ptr);
+ ASIO_CHECK(ex_two_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_1 == null_ptr);
+
+ ex_two_props_t ex_two_props_11(std::move(ex_two_props_3));
+
+ ASIO_CHECK(ex_two_props_11.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_11 != null_ptr);
+ ASIO_CHECK(ex_two_props_3.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_3 == null_ptr);
+ ASIO_CHECK(ex_two_props_11 == ex_two_props_5);
+
+ ex_two_props_t ex_two_props_12(std::move(ex_two_props_7));
+
+ ASIO_CHECK(ex_two_props_12.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_12 != null_ptr);
+ ASIO_CHECK(ex_two_props_7.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_7 == null_ptr);
+ ASIO_CHECK(ex_two_props_12 == ex_two_props_6);
+ ASIO_CHECK(ex_two_props_12 != ex_two_props_8);
+
+ ex_one_prop_t ex_one_prop_1;
+
+ ASIO_CHECK(ex_one_prop_1.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_1 == null_ptr);
+
+ ex_one_prop_t ex_one_prop_2(null_ptr);
+
+ ASIO_CHECK(ex_one_prop_2.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_2 == null_ptr);
+ ASIO_CHECK(ex_one_prop_2 == ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_3(pool.executor());
+
+ ASIO_CHECK(ex_one_prop_3.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_3 != null_ptr);
+ ASIO_CHECK(ex_one_prop_3 != ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_4(ex_one_prop_1);
+
+ ASIO_CHECK(ex_one_prop_4.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_4 == null_ptr);
+ ASIO_CHECK(ex_one_prop_4 == ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_5(ex_one_prop_3);
+
+ ASIO_CHECK(ex_one_prop_5.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_5 != null_ptr);
+ ASIO_CHECK(ex_one_prop_5 == ex_one_prop_3);
+
+ ex_one_prop_t ex_one_prop_6 = fat_executor(1);
+
+ ASIO_CHECK(ex_one_prop_6.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_6 != null_ptr);
+ ASIO_CHECK(ex_one_prop_6 != ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_7 = fat_executor(1);
+
+ ASIO_CHECK(ex_one_prop_7.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_7 != null_ptr);
+ ASIO_CHECK(ex_one_prop_7 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_7 == ex_one_prop_6);
+
+ ex_one_prop_t ex_one_prop_8 = fat_executor(2);
+
+ ASIO_CHECK(ex_one_prop_8.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_8 != null_ptr);
+ ASIO_CHECK(ex_one_prop_8 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_8 != ex_one_prop_6);
+ ASIO_CHECK(ex_one_prop_8 != ex_one_prop_7);
+
+ ex_one_prop_t ex_one_prop_9(ex_one_prop_6);
+
+ ASIO_CHECK(ex_one_prop_9.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_9 != null_ptr);
+ ASIO_CHECK(ex_one_prop_9 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_9 == ex_one_prop_6);
+ ASIO_CHECK(ex_one_prop_9 == ex_one_prop_7);
+ ASIO_CHECK(ex_one_prop_9 != ex_one_prop_8);
+
+ ex_one_prop_t ex_one_prop_10(std::move(ex_one_prop_1));
+
+ ASIO_CHECK(ex_one_prop_10.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_10 == null_ptr);
+ ASIO_CHECK(ex_one_prop_1.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_1 == null_ptr);
+
+ ex_one_prop_t ex_one_prop_11(std::move(ex_one_prop_3));
+
+ ASIO_CHECK(ex_one_prop_11.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_11 != null_ptr);
+ ASIO_CHECK(ex_one_prop_3.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_3 == null_ptr);
+ ASIO_CHECK(ex_one_prop_11 == ex_one_prop_5);
+
+ ex_one_prop_t ex_one_prop_12(std::move(ex_one_prop_7));
+
+ ASIO_CHECK(ex_one_prop_12.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_12 != null_ptr);
+ ASIO_CHECK(ex_one_prop_7.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_7 == null_ptr);
+ ASIO_CHECK(ex_one_prop_12 == ex_one_prop_6);
+ ASIO_CHECK(ex_one_prop_12 != ex_one_prop_8);
+
+ ex_one_prop_t ex_one_prop_13(ex_two_props_1);
+
+ ASIO_CHECK(ex_one_prop_13.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_13 == null_ptr);
+
+ ex_one_prop_t ex_one_prop_14(ex_two_props_5);
+
+ ASIO_CHECK(ex_one_prop_14.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_14 != null_ptr);
+
+ ex_one_prop_t ex_one_prop_15(ex_two_props_9);
+
+ ASIO_CHECK(ex_one_prop_15.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_15 != null_ptr);
+
+ ex_no_props_t ex_no_props_1;
+
+ ASIO_CHECK(ex_no_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_1 == null_ptr);
+
+ ex_no_props_t ex_no_props_2(null_ptr);
+
+ ASIO_CHECK(ex_no_props_2.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_2 == null_ptr);
+ ASIO_CHECK(ex_no_props_2 == ex_no_props_1);
+
+ ex_no_props_t ex_no_props_3(pool.executor());
+
+ ASIO_CHECK(ex_no_props_3.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_3 != null_ptr);
+ ASIO_CHECK(ex_no_props_3 != ex_no_props_1);
+
+ ex_no_props_t ex_no_props_4(ex_no_props_1);
+
+ ASIO_CHECK(ex_no_props_4.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_4 == null_ptr);
+ ASIO_CHECK(ex_no_props_4 == ex_no_props_1);
+
+ ex_no_props_t ex_no_props_5(ex_no_props_3);
+
+ ASIO_CHECK(ex_no_props_5.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_5 != null_ptr);
+ ASIO_CHECK(ex_no_props_5 == ex_no_props_3);
+
+ ex_no_props_t ex_no_props_6 = fat_executor(1);
+
+ ASIO_CHECK(ex_no_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_6 != null_ptr);
+ ASIO_CHECK(ex_no_props_6 != ex_no_props_1);
+
+ ex_no_props_t ex_no_props_7 = fat_executor(1);
+
+ ASIO_CHECK(ex_no_props_7.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_7 != null_ptr);
+ ASIO_CHECK(ex_no_props_7 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_7 == ex_no_props_6);
+
+ ex_no_props_t ex_no_props_8 = fat_executor(2);
+
+ ASIO_CHECK(ex_no_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_8 != null_ptr);
+ ASIO_CHECK(ex_no_props_8 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_8 != ex_no_props_6);
+ ASIO_CHECK(ex_no_props_8 != ex_no_props_7);
+
+ ex_no_props_t ex_no_props_9(ex_no_props_6);
+
+ ASIO_CHECK(ex_no_props_9.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_9 != null_ptr);
+ ASIO_CHECK(ex_no_props_9 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_9 == ex_no_props_6);
+ ASIO_CHECK(ex_no_props_9 == ex_no_props_7);
+ ASIO_CHECK(ex_no_props_9 != ex_no_props_8);
+
+ ex_no_props_t ex_no_props_10(std::move(ex_no_props_1));
+
+ ASIO_CHECK(ex_no_props_10.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_10 == null_ptr);
+ ASIO_CHECK(ex_no_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_1 == null_ptr);
+
+ ex_no_props_t ex_no_props_11(std::move(ex_no_props_3));
+
+ ASIO_CHECK(ex_no_props_11.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_11 != null_ptr);
+ ASIO_CHECK(ex_no_props_3.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_3 == null_ptr);
+ ASIO_CHECK(ex_no_props_11 == ex_no_props_5);
+
+ ex_no_props_t ex_no_props_12(std::move(ex_no_props_7));
+
+ ASIO_CHECK(ex_no_props_12.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_12 != null_ptr);
+ ASIO_CHECK(ex_no_props_7.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_7 == null_ptr);
+ ASIO_CHECK(ex_no_props_12 == ex_no_props_6);
+ ASIO_CHECK(ex_no_props_12 != ex_no_props_8);
+
+ ex_no_props_t ex_no_props_13(ex_two_props_1);
+
+ ASIO_CHECK(ex_no_props_13.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_13 == null_ptr);
+
+ ex_no_props_t ex_no_props_14(ex_two_props_5);
+
+ ASIO_CHECK(ex_no_props_14.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_14 != null_ptr);
+
+ ex_no_props_t ex_no_props_15(ex_two_props_9);
+
+ ASIO_CHECK(ex_no_props_15.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_15 != null_ptr);
+
+ ex_no_props_t ex_no_props_16(ex_one_prop_1);
+
+ ASIO_CHECK(ex_no_props_16.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_16 == null_ptr);
+
+ ex_no_props_t ex_no_props_17(ex_one_prop_5);
+
+ ASIO_CHECK(ex_no_props_17.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_17 != null_ptr);
+
+ ex_no_props_t ex_no_props_18(ex_one_prop_9);
+
+ ASIO_CHECK(ex_no_props_18.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_18 != null_ptr);
+}
+
+void any_executor_nothrow_construction_test()
+{
+ typedef execution::any_executor<> ex_no_props_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t
+ > ex_one_prop_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t,
+ execution::occupancy_t
+ > ex_two_props_t;
+
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ ex_two_props_t ex_two_props_1;
+
+ ASIO_CHECK(ex_two_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_1 == null_ptr);
+
+ ex_two_props_t ex_two_props_2(null_ptr);
+
+ ASIO_CHECK(ex_two_props_2.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_2 == null_ptr);
+ ASIO_CHECK(ex_two_props_2 == ex_two_props_1);
+
+ ex_two_props_t ex_two_props_3(std::nothrow, pool.executor());
+
+ ASIO_CHECK(ex_two_props_3.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_3 != null_ptr);
+ ASIO_CHECK(ex_two_props_3 != ex_two_props_1);
+
+ ex_two_props_t ex_two_props_4(std::nothrow, ex_two_props_1);
+
+ ASIO_CHECK(ex_two_props_4.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_4 == null_ptr);
+ ASIO_CHECK(ex_two_props_4 == ex_two_props_1);
+
+ ex_two_props_t ex_two_props_5(std::nothrow, ex_two_props_3);
+
+ ASIO_CHECK(ex_two_props_5.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_5 != null_ptr);
+ ASIO_CHECK(ex_two_props_5 == ex_two_props_3);
+
+ ex_two_props_t ex_two_props_6(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex_two_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_6 != null_ptr);
+ ASIO_CHECK(ex_two_props_6 != ex_two_props_1);
+
+ ex_two_props_t ex_two_props_7(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex_two_props_7.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_7 != null_ptr);
+ ASIO_CHECK(ex_two_props_7 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_7 == ex_two_props_6);
+
+ ex_two_props_t ex_two_props_8(std::nothrow, fat_executor(2));
+
+ ASIO_CHECK(ex_two_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_8 != null_ptr);
+ ASIO_CHECK(ex_two_props_8 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_8 != ex_two_props_6);
+ ASIO_CHECK(ex_two_props_8 != ex_two_props_7);
+
+ ex_two_props_t ex_two_props_9(std::nothrow, ex_two_props_6);
+
+ ASIO_CHECK(ex_two_props_9.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_9 != null_ptr);
+ ASIO_CHECK(ex_two_props_9 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_9 == ex_two_props_6);
+ ASIO_CHECK(ex_two_props_9 == ex_two_props_7);
+ ASIO_CHECK(ex_two_props_9 != ex_two_props_8);
+
+ ex_two_props_t ex_two_props_10(std::nothrow, std::move(ex_two_props_1));
+
+ ASIO_CHECK(ex_two_props_10.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_10 == null_ptr);
+ ASIO_CHECK(ex_two_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_1 == null_ptr);
+
+ ex_two_props_t ex_two_props_11(std::nothrow, std::move(ex_two_props_3));
+
+ ASIO_CHECK(ex_two_props_11.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_11 != null_ptr);
+ ASIO_CHECK(ex_two_props_3.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_3 == null_ptr);
+ ASIO_CHECK(ex_two_props_11 == ex_two_props_5);
+
+ ex_two_props_t ex_two_props_12(std::nothrow, std::move(ex_two_props_7));
+
+ ASIO_CHECK(ex_two_props_12.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_12 != null_ptr);
+ ASIO_CHECK(ex_two_props_7.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_7 == null_ptr);
+ ASIO_CHECK(ex_two_props_12 == ex_two_props_6);
+ ASIO_CHECK(ex_two_props_12 != ex_two_props_8);
+
+ next_nothrow_new_fails = true;
+ ex_two_props_t ex_two_props_13(std::nothrow, fat_executor(3));
+
+ ASIO_CHECK(ex_two_props_13.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_13 == null_ptr);
+ ASIO_CHECK(ex_two_props_13 == ex_two_props_1);
+
+ ex_one_prop_t ex_one_prop_1;
+
+ ASIO_CHECK(ex_one_prop_1.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_1 == null_ptr);
+
+ ex_one_prop_t ex_one_prop_2(null_ptr);
+
+ ASIO_CHECK(ex_one_prop_2.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_2 == null_ptr);
+ ASIO_CHECK(ex_one_prop_2 == ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_3(std::nothrow, pool.executor());
+
+ ASIO_CHECK(ex_one_prop_3.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_3 != null_ptr);
+ ASIO_CHECK(ex_one_prop_3 != ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_4(std::nothrow, ex_one_prop_1);
+
+ ASIO_CHECK(ex_one_prop_4.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_4 == null_ptr);
+ ASIO_CHECK(ex_one_prop_4 == ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_5(std::nothrow, ex_one_prop_3);
+
+ ASIO_CHECK(ex_one_prop_5.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_5 != null_ptr);
+ ASIO_CHECK(ex_one_prop_5 == ex_one_prop_3);
+
+ ex_one_prop_t ex_one_prop_6 = fat_executor(1);
+
+ ASIO_CHECK(ex_one_prop_6.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_6 != null_ptr);
+ ASIO_CHECK(ex_one_prop_6 != ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_7(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex_one_prop_7.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_7 != null_ptr);
+ ASIO_CHECK(ex_one_prop_7 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_7 == ex_one_prop_6);
+
+ ex_one_prop_t ex_one_prop_8(std::nothrow, fat_executor(2));
+
+ ASIO_CHECK(ex_one_prop_8.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_8 != null_ptr);
+ ASIO_CHECK(ex_one_prop_8 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_8 != ex_one_prop_6);
+ ASIO_CHECK(ex_one_prop_8 != ex_one_prop_7);
+
+ ex_one_prop_t ex_one_prop_9(std::nothrow, ex_one_prop_6);
+
+ ASIO_CHECK(ex_one_prop_9.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_9 != null_ptr);
+ ASIO_CHECK(ex_one_prop_9 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_9 == ex_one_prop_6);
+ ASIO_CHECK(ex_one_prop_9 == ex_one_prop_7);
+ ASIO_CHECK(ex_one_prop_9 != ex_one_prop_8);
+
+ ex_one_prop_t ex_one_prop_10(std::nothrow, std::move(ex_one_prop_1));
+
+ ASIO_CHECK(ex_one_prop_10.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_10 == null_ptr);
+ ASIO_CHECK(ex_one_prop_1.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_1 == null_ptr);
+
+ ex_one_prop_t ex_one_prop_11(std::nothrow, std::move(ex_one_prop_3));
+
+ ASIO_CHECK(ex_one_prop_11.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_11 != null_ptr);
+ ASIO_CHECK(ex_one_prop_3.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_3 == null_ptr);
+ ASIO_CHECK(ex_one_prop_11 == ex_one_prop_5);
+
+ ex_one_prop_t ex_one_prop_12(std::nothrow, std::move(ex_one_prop_7));
+
+ ASIO_CHECK(ex_one_prop_12.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_12 != null_ptr);
+ ASIO_CHECK(ex_one_prop_7.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_7 == null_ptr);
+ ASIO_CHECK(ex_one_prop_12 == ex_one_prop_6);
+ ASIO_CHECK(ex_one_prop_12 != ex_one_prop_8);
+
+ ex_one_prop_t ex_one_prop_13(std::nothrow, ex_two_props_1);
+
+ ASIO_CHECK(ex_one_prop_13.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_13 == null_ptr);
+
+ ex_one_prop_t ex_one_prop_14(std::nothrow, ex_two_props_5);
+
+ ASIO_CHECK(ex_one_prop_14.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_14 != null_ptr);
+
+ ex_one_prop_t ex_one_prop_15(std::nothrow, ex_two_props_9);
+
+ ASIO_CHECK(ex_one_prop_15.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_15 != null_ptr);
+
+ next_nothrow_new_fails = true;
+ ex_one_prop_t ex_one_prop_16(std::nothrow, fat_executor(3));
+
+ ASIO_CHECK(ex_one_prop_16.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_16 == null_ptr);
+ ASIO_CHECK(ex_one_prop_16 == ex_one_prop_1);
+
+ ex_no_props_t ex_no_props_1;
+
+ ASIO_CHECK(ex_no_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_1 == null_ptr);
+
+ ex_no_props_t ex_no_props_2(null_ptr);
+
+ ASIO_CHECK(ex_no_props_2.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_2 == null_ptr);
+ ASIO_CHECK(ex_no_props_2 == ex_no_props_1);
+
+ ex_no_props_t ex_no_props_3(std::nothrow, pool.executor());
+
+ ASIO_CHECK(ex_no_props_3.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_3 != null_ptr);
+ ASIO_CHECK(ex_no_props_3 != ex_no_props_1);
+
+ ex_no_props_t ex_no_props_4(std::nothrow, ex_no_props_1);
+
+ ASIO_CHECK(ex_no_props_4.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_4 == null_ptr);
+ ASIO_CHECK(ex_no_props_4 == ex_no_props_1);
+
+ ex_no_props_t ex_no_props_5(std::nothrow, ex_no_props_3);
+
+ ASIO_CHECK(ex_no_props_5.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_5 != null_ptr);
+ ASIO_CHECK(ex_no_props_5 == ex_no_props_3);
+
+ ex_no_props_t ex_no_props_6(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex_no_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_6 != null_ptr);
+ ASIO_CHECK(ex_no_props_6 != ex_no_props_1);
+
+ ex_no_props_t ex_no_props_7(std::nothrow, fat_executor(1));
+
+ ASIO_CHECK(ex_no_props_7.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_7 != null_ptr);
+ ASIO_CHECK(ex_no_props_7 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_7 == ex_no_props_6);
+
+ ex_no_props_t ex_no_props_8(std::nothrow, fat_executor(2));
+
+ ASIO_CHECK(ex_no_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_8 != null_ptr);
+ ASIO_CHECK(ex_no_props_8 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_8 != ex_no_props_6);
+ ASIO_CHECK(ex_no_props_8 != ex_no_props_7);
+
+ ex_no_props_t ex_no_props_9(std::nothrow, ex_no_props_6);
+
+ ASIO_CHECK(ex_no_props_9.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_9 != null_ptr);
+ ASIO_CHECK(ex_no_props_9 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_9 == ex_no_props_6);
+ ASIO_CHECK(ex_no_props_9 == ex_no_props_7);
+ ASIO_CHECK(ex_no_props_9 != ex_no_props_8);
+
+ ex_no_props_t ex_no_props_10(std::nothrow, std::move(ex_no_props_1));
+
+ ASIO_CHECK(ex_no_props_10.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_10 == null_ptr);
+ ASIO_CHECK(ex_no_props_1.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_1 == null_ptr);
+
+ ex_no_props_t ex_no_props_11(std::nothrow, std::move(ex_no_props_3));
+
+ ASIO_CHECK(ex_no_props_11.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_11 != null_ptr);
+ ASIO_CHECK(ex_no_props_3.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_3 == null_ptr);
+ ASIO_CHECK(ex_no_props_11 == ex_no_props_5);
+
+ ex_no_props_t ex_no_props_12(std::nothrow, std::move(ex_no_props_7));
+
+ ASIO_CHECK(ex_no_props_12.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_12 != null_ptr);
+ ASIO_CHECK(ex_no_props_7.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_7 == null_ptr);
+ ASIO_CHECK(ex_no_props_12 == ex_no_props_6);
+ ASIO_CHECK(ex_no_props_12 != ex_no_props_8);
+
+ ex_no_props_t ex_no_props_13(std::nothrow, ex_two_props_1);
+
+ ASIO_CHECK(ex_no_props_13.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_13 == null_ptr);
+
+ ex_no_props_t ex_no_props_14(std::nothrow, ex_two_props_5);
+
+ ASIO_CHECK(ex_no_props_14.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_14 != null_ptr);
+
+ ex_no_props_t ex_no_props_15(std::nothrow, ex_two_props_9);
+
+ ASIO_CHECK(ex_no_props_15.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_15 != null_ptr);
+
+ ex_no_props_t ex_no_props_16(std::nothrow, ex_one_prop_1);
+
+ ASIO_CHECK(ex_no_props_16.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_16 == null_ptr);
+
+ ex_no_props_t ex_no_props_17(std::nothrow, ex_one_prop_5);
+
+ ASIO_CHECK(ex_no_props_17.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_17 != null_ptr);
+
+ ex_no_props_t ex_no_props_18(std::nothrow, ex_one_prop_9);
+
+ ASIO_CHECK(ex_no_props_18.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_18 != null_ptr);
+
+ next_nothrow_new_fails = true;
+ ex_no_props_t ex_no_props_19(std::nothrow, fat_executor(3));
+
+ ASIO_CHECK(ex_no_props_19.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_19 == null_ptr);
+ ASIO_CHECK(ex_no_props_19 == ex_no_props_1);
+}
+
+void any_executor_assignment_test()
+{
+ typedef execution::any_executor<> ex_no_props_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t
+ > ex_one_prop_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t,
+ execution::occupancy_t
+ > ex_two_props_t;
+
+ thread_pool pool(1);
+ asio::nullptr_t null_ptr = asio::nullptr_t();
+
+ ex_two_props_t ex_two_props_1;
+
+ ex_two_props_t ex_two_props_2;
+ ex_two_props_2 = null_ptr;
+
+ ASIO_CHECK(ex_two_props_2.target<void>() == 0);
+
+ ex_two_props_t ex_two_props_3;
+ ex_two_props_3 = pool.executor();
+
+ ASIO_CHECK(ex_two_props_3.target<void>() != 0);
+
+ ex_two_props_t ex_two_props_4;
+ ex_two_props_4 = ex_two_props_1;
+
+ ASIO_CHECK(ex_two_props_4.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_4 == ex_two_props_1);
+
+ ex_two_props_4 = ex_two_props_3;
+
+ ASIO_CHECK(ex_two_props_4.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_4 == ex_two_props_3);
+
+ ex_two_props_t ex_two_props_5;
+ ex_two_props_5 = fat_executor(1);
+
+ ASIO_CHECK(ex_two_props_5.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_5 != null_ptr);
+ ASIO_CHECK(ex_two_props_5 != ex_two_props_1);
+
+ ex_two_props_t ex_two_props_6;
+ ex_two_props_6 = fat_executor(1);
+
+ ASIO_CHECK(ex_two_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_6 != null_ptr);
+ ASIO_CHECK(ex_two_props_6 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_6 == ex_two_props_5);
+
+ ex_two_props_6 = fat_executor(2);
+
+ ASIO_CHECK(ex_two_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_6 != null_ptr);
+ ASIO_CHECK(ex_two_props_6 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_6 != ex_two_props_5);
+
+ ex_two_props_t ex_two_props_7;
+ ex_two_props_7 = ex_two_props_5;
+
+ ASIO_CHECK(ex_two_props_7.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_7 != null_ptr);
+ ASIO_CHECK(ex_two_props_7 != ex_two_props_1);
+ ASIO_CHECK(ex_two_props_7 == ex_two_props_5);
+ ASIO_CHECK(ex_two_props_7 != ex_two_props_6);
+
+ ex_two_props_t ex_two_props_8;
+ ex_two_props_8 = std::move(ex_two_props_1);
+
+ ASIO_CHECK(ex_two_props_8.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_1.target<void>() == 0);
+
+ ex_two_props_8 = std::move(ex_two_props_3);
+
+ ASIO_CHECK(ex_two_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_3.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_8 == ex_two_props_4);
+
+ ex_two_props_8 = std::move(ex_two_props_5);
+
+ ASIO_CHECK(ex_two_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_two_props_5.target<void>() == 0);
+ ASIO_CHECK(ex_two_props_8 == ex_two_props_7);
+
+ ex_one_prop_t ex_one_prop_1;
+
+ ex_one_prop_t ex_one_prop_2;
+ ex_one_prop_2 = null_ptr;
+
+ ASIO_CHECK(ex_one_prop_2.target<void>() == 0);
+
+ ex_one_prop_t ex_one_prop_3;
+ ex_one_prop_3 = pool.executor();
+
+ ASIO_CHECK(ex_one_prop_3.target<void>() != 0);
+
+ ex_one_prop_t ex_one_prop_4;
+ ex_one_prop_4 = ex_one_prop_1;
+
+ ASIO_CHECK(ex_one_prop_4.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_4 == ex_one_prop_1);
+
+ ex_one_prop_4 = ex_one_prop_3;
+
+ ASIO_CHECK(ex_one_prop_4.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_4 == ex_one_prop_3);
+
+ ex_one_prop_t ex_one_prop_5;
+ ex_one_prop_5 = fat_executor(1);
+
+ ASIO_CHECK(ex_one_prop_5.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_5 != null_ptr);
+ ASIO_CHECK(ex_one_prop_5 != ex_one_prop_1);
+
+ ex_one_prop_t ex_one_prop_6;
+ ex_one_prop_6 = fat_executor(1);
+
+ ASIO_CHECK(ex_one_prop_6.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_6 != null_ptr);
+ ASIO_CHECK(ex_one_prop_6 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_6 == ex_one_prop_5);
+
+ ex_one_prop_6 = fat_executor(2);
+
+ ASIO_CHECK(ex_one_prop_6.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_6 != null_ptr);
+ ASIO_CHECK(ex_one_prop_6 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_6 != ex_one_prop_5);
+
+ ex_one_prop_t ex_one_prop_7;
+ ex_one_prop_7 = ex_one_prop_5;
+
+ ASIO_CHECK(ex_one_prop_7.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_7 != null_ptr);
+ ASIO_CHECK(ex_one_prop_7 != ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_7 == ex_one_prop_5);
+ ASIO_CHECK(ex_one_prop_7 != ex_one_prop_6);
+
+ ex_one_prop_t ex_one_prop_8;
+ ex_one_prop_8 = std::move(ex_one_prop_1);
+
+ ASIO_CHECK(ex_one_prop_8.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_1.target<void>() == 0);
+
+ ex_one_prop_8 = std::move(ex_one_prop_3);
+
+ ASIO_CHECK(ex_one_prop_8.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_3.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_8 == ex_one_prop_4);
+
+ ex_one_prop_8 = std::move(ex_one_prop_5);
+
+ ASIO_CHECK(ex_one_prop_8.target<void>() != 0);
+ ASIO_CHECK(ex_one_prop_5.target<void>() == 0);
+ ASIO_CHECK(ex_one_prop_8 == ex_one_prop_7);
+
+ ex_one_prop_t ex_one_prop_9;
+ ex_one_prop_9 = ex_two_props_1;
+
+ ASIO_CHECK(ex_one_prop_9.target<void>() == 0);
+
+ ex_one_prop_9 = ex_two_props_4;
+
+ ASIO_CHECK(ex_one_prop_9.target<void>() != 0);
+
+ ex_one_prop_9 = ex_two_props_7;
+
+ ASIO_CHECK(ex_one_prop_9.target<void>() != 0);
+
+ ex_no_props_t ex_no_props_1;
+
+ ex_no_props_t ex_no_props_2;
+ ex_no_props_2 = null_ptr;
+
+ ASIO_CHECK(ex_no_props_2.target<void>() == 0);
+
+ ex_no_props_t ex_no_props_3;
+ ex_no_props_3 = pool.executor();
+
+ ASIO_CHECK(ex_no_props_3.target<void>() != 0);
+
+ ex_no_props_t ex_no_props_4;
+ ex_no_props_4 = ex_no_props_1;
+
+ ASIO_CHECK(ex_no_props_4.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_4 == ex_no_props_1);
+
+ ex_no_props_4 = ex_no_props_3;
+
+ ASIO_CHECK(ex_no_props_4.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_4 == ex_no_props_3);
+
+ ex_no_props_t ex_no_props_5;
+ ex_no_props_5 = fat_executor(1);
+
+ ASIO_CHECK(ex_no_props_5.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_5 != null_ptr);
+ ASIO_CHECK(ex_no_props_5 != ex_no_props_1);
+
+ ex_no_props_t ex_no_props_6;
+ ex_no_props_6 = fat_executor(1);
+
+ ASIO_CHECK(ex_no_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_6 != null_ptr);
+ ASIO_CHECK(ex_no_props_6 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_6 == ex_no_props_5);
+
+ ex_no_props_6 = fat_executor(2);
+
+ ASIO_CHECK(ex_no_props_6.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_6 != null_ptr);
+ ASIO_CHECK(ex_no_props_6 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_6 != ex_no_props_5);
+
+ ex_no_props_t ex_no_props_7;
+ ex_no_props_7 = ex_no_props_5;
+
+ ASIO_CHECK(ex_no_props_7.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_7 != null_ptr);
+ ASIO_CHECK(ex_no_props_7 != ex_no_props_1);
+ ASIO_CHECK(ex_no_props_7 == ex_no_props_5);
+ ASIO_CHECK(ex_no_props_7 != ex_no_props_6);
+
+ ex_no_props_t ex_no_props_8;
+ ex_no_props_8 = std::move(ex_no_props_1);
+
+ ASIO_CHECK(ex_no_props_8.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_1.target<void>() == 0);
+
+ ex_no_props_8 = std::move(ex_no_props_3);
+
+ ASIO_CHECK(ex_no_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_3.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_8 == ex_no_props_4);
+
+ ex_no_props_8 = std::move(ex_no_props_5);
+
+ ASIO_CHECK(ex_no_props_8.target<void>() != 0);
+ ASIO_CHECK(ex_no_props_5.target<void>() == 0);
+ ASIO_CHECK(ex_no_props_8 == ex_no_props_7);
+
+ ex_no_props_t ex_no_props_9;
+ ex_no_props_9 = ex_two_props_1;
+
+ ASIO_CHECK(ex_no_props_9.target<void>() == 0);
+
+ ex_no_props_9 = ex_two_props_4;
+
+ ASIO_CHECK(ex_no_props_9.target<void>() != 0);
+
+ ex_no_props_9 = ex_two_props_7;
+
+ ASIO_CHECK(ex_no_props_9.target<void>() != 0);
+
+ ex_no_props_9 = ex_one_prop_1;
+
+ ASIO_CHECK(ex_no_props_9.target<void>() == 0);
+
+ ex_no_props_9 = ex_one_prop_4;
+
+ ASIO_CHECK(ex_no_props_9.target<void>() != 0);
+
+ ex_no_props_9 = ex_one_prop_7;
+
+ ASIO_CHECK(ex_no_props_9.target<void>() != 0);
+}
+
+void any_executor_swap_test()
+{
+ typedef execution::any_executor<> ex_no_props_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t
+ > ex_one_prop_t;
+
+ typedef execution::any_executor<
+ execution::blocking_t,
+ execution::occupancy_t
+ > ex_two_props_t;
+
+ thread_pool pool1(1);
+ thread_pool pool2(1);
+
+ ex_no_props_t ex_no_props_1(pool1.executor());
+ ex_no_props_t ex_no_props_2(pool2.executor());
+
+ ex_no_props_t ex_no_props_3(ex_no_props_1);
+ ex_no_props_t ex_no_props_4(ex_no_props_2);
+
+ ASIO_CHECK(ex_no_props_3 == ex_no_props_1);
+ ASIO_CHECK(ex_no_props_4 == ex_no_props_2);
+
+ ex_no_props_3.swap(ex_no_props_4);
+
+ ASIO_CHECK(ex_no_props_3 == ex_no_props_2);
+ ASIO_CHECK(ex_no_props_4 == ex_no_props_1);
+
+ execution::swap(ex_no_props_3, ex_no_props_4);
+
+ ASIO_CHECK(ex_no_props_3 == ex_no_props_1);
+ ASIO_CHECK(ex_no_props_4 == ex_no_props_2);
+
+ ex_one_prop_t ex_one_prop_1(pool1.executor());
+ ex_one_prop_t ex_one_prop_2(pool2.executor());
+
+ ex_one_prop_t ex_one_prop_3(ex_one_prop_1);
+ ex_one_prop_t ex_one_prop_4(ex_one_prop_2);
+
+ ASIO_CHECK(ex_one_prop_3 == ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_4 == ex_one_prop_2);
+
+ ex_one_prop_3.swap(ex_one_prop_4);
+
+ ASIO_CHECK(ex_one_prop_3 == ex_one_prop_2);
+ ASIO_CHECK(ex_one_prop_4 == ex_one_prop_1);
+
+ execution::swap(ex_one_prop_3, ex_one_prop_4);
+
+ ASIO_CHECK(ex_one_prop_3 == ex_one_prop_1);
+ ASIO_CHECK(ex_one_prop_4 == ex_one_prop_2);
+
+ ex_two_props_t ex_two_props_1(pool1.executor());
+ ex_two_props_t ex_two_props_2(pool2.executor());
+
+ ex_two_props_t ex_two_props_3(ex_two_props_1);
+ ex_two_props_t ex_two_props_4(ex_two_props_2);
+
+ ASIO_CHECK(ex_two_props_3 == ex_two_props_1);
+ ASIO_CHECK(ex_two_props_4 == ex_two_props_2);
+
+ ex_two_props_3.swap(ex_two_props_4);
+
+ ASIO_CHECK(ex_two_props_3 == ex_two_props_2);
+ ASIO_CHECK(ex_two_props_4 == ex_two_props_1);
+
+ execution::swap(ex_two_props_3, ex_two_props_4);
+
+ ASIO_CHECK(ex_two_props_3 == ex_two_props_1);
+ ASIO_CHECK(ex_two_props_4 == ex_two_props_2);
+}
+
+void any_executor_query_test()
+{
+ thread_pool pool(1);
+ execution::any_executor<
+ execution::blocking_t,
+ execution::outstanding_work_t,
+ execution::relationship_t,
+ execution::mapping_t::thread_t,
+ execution::occupancy_t>
+ ex(pool.executor());
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::blocking)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::blocking.possibly)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::outstanding_work)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::outstanding_work.untracked)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::relationship)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::relationship.fork)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::mapping)
+ == asio::execution::mapping.thread);
+
+ ASIO_CHECK(
+ asio::query(ex, asio::execution::occupancy)
+ == 1);
+}
+
+void any_executor_execute_test()
+{
+ int count = 0;
+ thread_pool pool(1);
+ execution::any_executor<
+ execution::blocking_t::possibly_t,
+ execution::blocking_t::never_t,
+ execution::outstanding_work_t::untracked_t,
+ execution::outstanding_work_t::tracked_t,
+ execution::relationship_t::continuation_t>
+ ex(pool.executor());
+
+ ex.execute(bindns::bind(increment, &count));
+
+ asio::require(ex, asio::execution::blocking.possibly).execute(
+ bindns::bind(increment, &count));
+
+ asio::require(ex, asio::execution::blocking.never).execute(
+ bindns::bind(increment, &count));
+
+ asio::require(ex,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.tracked
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(ex,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(ex,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation
+ ).execute(bindns::bind(increment, &count));
+
+ pool.wait();
+
+ ASIO_CHECK(count == 6);
+}
+
+ASIO_TEST_SUITE
+(
+ "any_executor",
+ ASIO_TEST_CASE(any_executor_construction_test)
+ ASIO_TEST_CASE(any_executor_nothrow_construction_test)
+ ASIO_TEST_CASE(any_executor_assignment_test)
+ ASIO_TEST_CASE(any_executor_swap_test)
+ ASIO_TEST_CASE(any_executor_query_test)
+ ASIO_TEST_CASE(any_executor_execute_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution/blocking.cpp b/3rdparty/asio/src/tests/unit/execution/blocking.cpp
new file mode 100644
index 00000000000..ce2ba2f8ea5
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/blocking.cpp
@@ -0,0 +1,1921 @@
+//
+// blocking.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/blocking.hpp"
+
+#include "asio/prefer.hpp"
+#include "asio/query.hpp"
+#include "asio/require.hpp"
+#include "../unit_test.hpp"
+
+namespace exec = asio::execution;
+
+typedef exec::blocking_t s;
+typedef exec::blocking_t::possibly_t n1;
+typedef exec::blocking_t::always_t n2;
+typedef exec::blocking_t::never_t n3;
+
+struct ex_nq_nr
+{
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <>
+struct is_executor<ex_nq_nr> : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_cq_nr
+{
+ static constexpr ResultType query(ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_cq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_static_constexpr_member<
+ ex_cq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef Result result_type; // Must return raw result type.
+
+ static constexpr result_type value()
+ {
+ return Result();
+ }
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_mq_nr
+{
+ ResultType query(ParamType) const noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_mq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_member<
+ ex_mq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_fq_nr
+{
+ friend ResultType query(const ex_fq_nr&, ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_fq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_free<
+ ex_fq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_mq_mr
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ CurrentType query(OtherType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, OtherType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, OtherType>();
+ }
+
+ ex_mq_mr<OtherType, CurrentType> require(
+ OtherType) const noexcept
+ {
+ return ex_mq_mr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_mq_mr<CurrentType, CurrentType>
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, CurrentType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_mq_mr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_fq_fr
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend CurrentType query(const ex_fq_fr&, OtherType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> require(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> prefer(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_fq_fr<CurrentType, CurrentType>
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_fq_fr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_query()
+{
+ constexpr bool b1 =
+ asio::can_query<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_query<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_query<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_query<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_query()
+{
+ exec::blocking_t result1 = asio::query(Executor(), Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+
+ Executor ex1 = {};
+ exec::blocking_t result2 = asio::query(ex1, Param());
+ ASIO_CHECK(result2 == ExpectedResult());
+
+ const Executor ex2 = {};
+ exec::blocking_t result3 = asio::query(ex2, Param());
+ ASIO_CHECK(result3 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_constexpr_query()
+{
+ constexpr Executor ex1 = {};
+ constexpr exec::blocking_t result1 = asio::query(ex1, Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_require()
+{
+ constexpr bool b1 =
+ asio::can_require<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_require<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_require<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_require<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_require()
+{
+ ASIO_CHECK(
+ asio::query(
+ asio::require(Executor(), Param()),
+ Param()) == ExpectedResult());
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex1, Param()),
+ Param()) == ExpectedResult());
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex2, Param()),
+ Param()) == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_prefer()
+{
+ constexpr bool b1 =
+ asio::can_prefer<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_prefer<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_prefer<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_prefer<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_prefer()
+{
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(Executor(), Param()),
+ s())) == s(ExpectedResult()));
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex1, Param()),
+ s())) == s(ExpectedResult()));
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex2, Param()),
+ s())) == s(ExpectedResult()));
+}
+
+void test_vars()
+{
+ ASIO_CHECK(s() == exec::blocking);
+ ASIO_CHECK(s() != exec::blocking.possibly);
+ ASIO_CHECK(s() != exec::blocking.always);
+ ASIO_CHECK(s() != exec::blocking.never);
+ ASIO_CHECK(n1() == exec::blocking.possibly);
+ ASIO_CHECK(n1() != exec::blocking.always);
+ ASIO_CHECK(n1() != exec::blocking.never);
+ ASIO_CHECK(n2() == exec::blocking.always);
+ ASIO_CHECK(n2() != exec::blocking.possibly);
+ ASIO_CHECK(n2() != exec::blocking.never);
+ ASIO_CHECK(n3() == exec::blocking.never);
+ ASIO_CHECK(n3() != exec::blocking.possibly);
+ ASIO_CHECK(n3() != exec::blocking.always);
+}
+
+ASIO_TEST_SUITE
+(
+ "blocking",
+
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, s, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n2, false>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n3, false>)
+
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n2, false>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n3, false>)
+
+ ASIO_TEST_CASE3(test_require<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n2, false>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n3, true>)
+
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n1, n1>)
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n3, n1>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, n3, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, n3, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n3>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n3>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n1>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n2>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n3>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n3>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n2>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n3>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n3>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n3>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n1>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n2>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n3>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n3>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n2>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n3>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE(test_vars)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution/blocking_adaptation.cpp b/3rdparty/asio/src/tests/unit/execution/blocking_adaptation.cpp
new file mode 100644
index 00000000000..b6e77dd31a9
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/blocking_adaptation.cpp
@@ -0,0 +1,1323 @@
+//
+// blocking_adaptation.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/blocking_adaptation.hpp"
+
+#include "asio/prefer.hpp"
+#include "asio/query.hpp"
+#include "asio/require.hpp"
+#include "../unit_test.hpp"
+
+namespace exec = asio::execution;
+
+typedef exec::blocking_adaptation_t s;
+typedef exec::blocking_adaptation_t::disallowed_t n1;
+typedef exec::blocking_adaptation_t::allowed_t n2;
+
+struct ex_nq_nr
+{
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<ex_nq_nr>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename Function>
+struct execute_member<ex_nq_nr, Function>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_cq_nr
+{
+ static constexpr ResultType query(ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <typename ResultType, typename ParamType, typename Result>
+struct equality_comparable<ex_cq_nr<ResultType, ParamType, Result> >
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Function>
+struct execute_member<ex_cq_nr<ResultType, ParamType, Result>, Function>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_static_constexpr_member<
+ ex_cq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef Result result_type; // Must return raw result type.
+
+ static constexpr result_type value()
+ {
+ return Result();
+ }
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_mq_nr
+{
+ ResultType query(ParamType) const noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <typename ResultType, typename ParamType, typename Result>
+struct equality_comparable<ex_mq_nr<ResultType, ParamType, Result> >
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Function>
+struct execute_member<ex_mq_nr<ResultType, ParamType, Result>, Function>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_member<
+ ex_mq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_fq_nr
+{
+ friend ResultType query(const ex_fq_nr&, ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <typename ResultType, typename ParamType, typename Result>
+struct equality_comparable<ex_fq_nr<ResultType, ParamType, Result> >
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Function>
+struct execute_member<ex_fq_nr<ResultType, ParamType, Result>, Function>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_free<
+ ex_fq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_mq_mr
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ CurrentType query(OtherType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, OtherType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, OtherType>();
+ }
+
+ ex_mq_mr<OtherType, CurrentType> require(
+ OtherType) const noexcept
+ {
+ return ex_mq_mr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_mq_mr<CurrentType, CurrentType>
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, CurrentType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <typename CurrentType, typename OtherType>
+struct equality_comparable<ex_mq_mr<CurrentType, OtherType> >
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Function>
+struct execute_member<ex_mq_mr<CurrentType, OtherType>, Function>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_fq_fr
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend CurrentType query(const ex_fq_fr&, OtherType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> require(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> prefer(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_fq_fr<CurrentType, CurrentType>
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <typename CurrentType, typename OtherType>
+struct equality_comparable<ex_fq_fr<CurrentType, OtherType> >
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Function>
+struct execute_member<ex_fq_fr<CurrentType, OtherType>, Function>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_query()
+{
+ constexpr bool b1 =
+ asio::can_query<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_query<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_query<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_query<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_query()
+{
+ exec::blocking_adaptation_t result1 = asio::query(Executor(), Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+
+ Executor ex1 = {};
+ exec::blocking_adaptation_t result2 = asio::query(ex1, Param());
+ ASIO_CHECK(result2 == ExpectedResult());
+
+ const Executor ex2 = {};
+ exec::blocking_adaptation_t result3 = asio::query(ex2, Param());
+ ASIO_CHECK(result3 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_constexpr_query()
+{
+ constexpr Executor ex1 = {};
+ constexpr exec::blocking_adaptation_t result1 = asio::query(ex1, Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_require()
+{
+ constexpr bool b1 =
+ asio::can_require<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_require<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_require<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_require<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+void do_nothing()
+{
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_require()
+{
+ ASIO_CHECK(
+ asio::query(
+ asio::require(Executor(), Param()),
+ Param()) == ExpectedResult());
+
+ Executor ex1 = {};
+
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex1, Param()),
+ Param()) == ExpectedResult());
+
+ ASIO_CHECK((
+ asio::execution::is_executor<
+ typename asio::decay<
+ typename asio::require_result<Executor&, Param>::type
+ >::type
+ >::value));
+
+ const Executor ex2 = {};
+
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex2, Param()),
+ Param()) == ExpectedResult());
+
+ ASIO_CHECK((
+ asio::execution::is_executor<
+ typename asio::decay<
+ typename asio::require_result<const Executor&, Param>::type
+ >::type
+ >::value));
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_prefer()
+{
+ constexpr bool b1 =
+ asio::can_prefer<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_prefer<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_prefer<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_prefer<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_prefer()
+{
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(Executor(), Param()),
+ s())) == s(ExpectedResult()));
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex1, Param()),
+ s())) == s(ExpectedResult()));
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex2, Param()),
+ s())) == s(ExpectedResult()));
+}
+
+void test_vars()
+{
+ ASIO_CHECK(s() == exec::blocking_adaptation);
+ ASIO_CHECK(s() != exec::blocking_adaptation.disallowed);
+ ASIO_CHECK(s() != exec::blocking_adaptation.allowed);
+ ASIO_CHECK(n1() == exec::blocking_adaptation.disallowed);
+ ASIO_CHECK(n1() != exec::blocking_adaptation.allowed);
+ ASIO_CHECK(n2() == exec::blocking_adaptation.allowed);
+ ASIO_CHECK(n2() != exec::blocking_adaptation.disallowed);
+}
+
+ASIO_TEST_SUITE
+(
+ "blocking_adaptation",
+
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, s, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n2, false>)
+
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n2, true>)
+
+ ASIO_TEST_CASE3(test_require<ex_nq_nr, n1, n1>)
+ ASIO_TEST_CASE3(test_require<ex_nq_nr, n2, n2>)
+
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n2, false>)
+
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n2, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n1, s, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n2, false>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n1, n2>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<s, s, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<s, n1, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<s, n2, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<n1, s, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_mq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n2, false>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n1, n2>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<s, s, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<s, n1, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<s, n2, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<n1, s, n1>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_fq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n2, false>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n1, n2>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n2, false>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n1, n2>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n2, false>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n1, n2>)
+
+ ASIO_TEST_CASE(test_vars)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution/context_as.cpp b/3rdparty/asio/src/tests/unit/execution/context_as.cpp
new file mode 100644
index 00000000000..13311ba262b
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/context_as.cpp
@@ -0,0 +1,147 @@
+//
+// context_as.cpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/context_as.hpp"
+
+#include <functional>
+#include "asio/execution/any_executor.hpp"
+#include "asio/io_context.hpp"
+#include "asio/static_thread_pool.hpp"
+#include "../unit_test.hpp"
+
+using namespace asio;
+namespace bindns = std;
+
+void context_as_executor_query_test()
+{
+ static_thread_pool pool(1);
+
+ ASIO_CHECK(
+ &asio::query(pool.executor(),
+ execution::context_as_t<static_thread_pool&>())
+ == &pool);
+
+ execution::any_executor<
+ execution::context_as_t<static_thread_pool&>
+ > ex1 = pool.executor();
+
+ ASIO_CHECK(
+ &asio::query(ex1,
+ execution::context_as_t<static_thread_pool&>())
+ == &pool);
+
+ ASIO_CHECK(
+ &asio::query(ex1, execution::context)
+ == &pool);
+
+ ASIO_CHECK(
+ &asio::query(pool.executor(),
+ execution::context_as_t<const static_thread_pool&>())
+ == &pool);
+
+ execution::any_executor<
+ execution::context_as_t<const static_thread_pool&>
+ > ex2 = pool.executor();
+
+ ASIO_CHECK(
+ &asio::query(ex2,
+ execution::context_as_t<const static_thread_pool&>())
+ == &pool);
+
+ ASIO_CHECK(
+ &asio::query(ex2, execution::context)
+ == &pool);
+
+ io_context io_ctx;
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<io_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<io_context&>
+ > ex3 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex3,
+ execution::context_as_t<io_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex3, execution::context)
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<const io_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<const io_context&>
+ > ex4 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex4,
+ execution::context_as_t<const io_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex4, execution::context)
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<execution_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<execution_context&>
+ > ex5 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex5,
+ execution::context_as_t<execution_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex5, execution::context)
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(io_ctx.get_executor(),
+ execution::context_as_t<const execution_context&>())
+ == &io_ctx);
+
+ execution::any_executor<
+ execution::context_as_t<const execution_context&>
+ > ex6 = io_ctx.get_executor();
+
+ ASIO_CHECK(
+ &asio::query(ex6,
+ execution::context_as_t<const execution_context&>())
+ == &io_ctx);
+
+ ASIO_CHECK(
+ &asio::query(ex6, execution::context)
+ == &io_ctx);
+}
+
+ASIO_TEST_SUITE
+(
+ "context_as",
+ ASIO_TEST_CASE(context_as_executor_query_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution/executor.cpp b/3rdparty/asio/src/tests/unit/execution/executor.cpp
new file mode 100644
index 00000000000..8b02622bdca
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/executor.cpp
@@ -0,0 +1,106 @@
+//
+// executor.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/executor.hpp"
+
+#include "../unit_test.hpp"
+
+struct not_an_executor
+{
+};
+
+struct executor
+{
+ executor()
+ {
+ }
+
+ executor(const executor&) noexcept
+ {
+ }
+
+ executor(executor&&) noexcept
+ {
+ }
+
+ template <typename F>
+ void execute(F&& f) const noexcept
+ {
+ (void)f;
+ }
+
+ bool operator==(const executor&) const noexcept
+ {
+ return true;
+ }
+
+ bool operator!=(const executor&) const noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename F>
+struct execute_member<executor, F>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_SET_ERROR_MEMBER_TRAIT)
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<executor>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+void is_executor_test()
+{
+ ASIO_CHECK((
+ !asio::execution::is_executor<
+ void
+ >::value));
+
+ ASIO_CHECK((
+ !asio::execution::is_executor<
+ not_an_executor
+ >::value));
+
+ ASIO_CHECK((
+ asio::execution::is_executor<
+ executor
+ >::value));
+}
+
+ASIO_TEST_SUITE
+(
+ "executor",
+ ASIO_TEST_CASE(is_executor_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/windows/basic_handle.cpp b/3rdparty/asio/src/tests/unit/execution/invocable_archetype.cpp
index 572699e2cfa..5dbfb94d9f4 100644
--- a/3rdparty/asio/src/tests/unit/windows/basic_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/execution/invocable_archetype.cpp
@@ -1,8 +1,8 @@
//
-// basic_handle.cpp
-// ~~~~~~~~~~~~~~~~
+// invocable_archetype.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,13 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/windows/basic_handle.hpp"
+#include "asio/execution/invocable_archetype.hpp"
-#include "asio.hpp"
#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "windows/basic_handle",
+ "invocable_archetype",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/execution/mapping.cpp b/3rdparty/asio/src/tests/unit/execution/mapping.cpp
new file mode 100644
index 00000000000..399aae3ea90
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/mapping.cpp
@@ -0,0 +1,1985 @@
+//
+// mapping.cpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/mapping.hpp"
+
+#include "asio/prefer.hpp"
+#include "asio/query.hpp"
+#include "asio/require.hpp"
+#include "../unit_test.hpp"
+
+namespace exec = asio::execution;
+
+typedef exec::mapping_t s;
+typedef exec::mapping_t::thread_t n1;
+typedef exec::mapping_t::new_thread_t n2;
+typedef exec::mapping_t::other_t n3;
+
+struct ex_nq_nr
+{
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <>
+struct is_executor<ex_nq_nr> : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_cq_nr
+{
+ static constexpr ResultType query(ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_cq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_static_constexpr_member<
+ ex_cq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef Result result_type; // Must return raw result type.
+
+ static constexpr result_type value()
+ {
+ return Result();
+ }
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_mq_nr
+{
+ ResultType query(ParamType) const noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_mq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_member<
+ ex_mq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_fq_nr
+{
+ friend ResultType query(const ex_fq_nr&, ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_fq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_free<
+ ex_fq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_mq_mr
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ CurrentType query(OtherType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, OtherType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, OtherType>();
+ }
+
+ ex_mq_mr<OtherType, CurrentType> require(
+ OtherType) const noexcept
+ {
+ return ex_mq_mr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_mq_mr<CurrentType, CurrentType>
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, CurrentType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_mq_mr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_fq_fr
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend CurrentType query(const ex_fq_fr&, OtherType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> require(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> prefer(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_fq_fr<CurrentType, CurrentType>
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_fq_fr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_query()
+{
+ constexpr bool b1 =
+ asio::can_query<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_query<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_query<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_query<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_query()
+{
+ exec::mapping_t result1 = asio::query(Executor(), Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+
+ Executor ex1 = {};
+ exec::mapping_t result2 = asio::query(ex1, Param());
+ ASIO_CHECK(result2 == ExpectedResult());
+
+ const Executor ex2 = {};
+ exec::mapping_t result3 = asio::query(ex2, Param());
+ ASIO_CHECK(result3 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_constexpr_query()
+{
+ constexpr Executor ex1 = {};
+ constexpr exec::mapping_t result1 = asio::query(ex1, Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_require()
+{
+ constexpr bool b1 =
+ asio::can_require<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_require<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_require<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_require<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_require()
+{
+ ASIO_CHECK(
+ asio::query(
+ asio::require(Executor(), Param()),
+ Param()) == ExpectedResult());
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex1, Param()),
+ Param()) == ExpectedResult());
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex2, Param()),
+ Param()) == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_prefer()
+{
+ constexpr bool b1 =
+ asio::can_prefer<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_prefer<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_prefer<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_prefer<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_prefer()
+{
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(Executor(), Param()),
+ s())) == s(ExpectedResult()));
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex1, Param()),
+ s())) == s(ExpectedResult()));
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex2, Param()),
+ s())) == s(ExpectedResult()));
+}
+
+void test_vars()
+{
+ ASIO_CHECK(s() == exec::mapping);
+ ASIO_CHECK(s() != exec::mapping.thread);
+ ASIO_CHECK(s() != exec::mapping.new_thread);
+ ASIO_CHECK(s() != exec::mapping.other);
+ ASIO_CHECK(n1() == exec::mapping.thread);
+ ASIO_CHECK(n1() != exec::mapping.new_thread);
+ ASIO_CHECK(n1() != exec::mapping.other);
+ ASIO_CHECK(n2() == exec::mapping.new_thread);
+ ASIO_CHECK(n2() != exec::mapping.thread);
+ ASIO_CHECK(n2() != exec::mapping.other);
+ ASIO_CHECK(n3() == exec::mapping.other);
+ ASIO_CHECK(n3() != exec::mapping.thread);
+ ASIO_CHECK(n3() != exec::mapping.new_thread);
+}
+
+ASIO_TEST_SUITE
+(
+ "mapping",
+
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, s, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n2, false>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n3, false>)
+
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n2, false>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n3, false>)
+
+ ASIO_TEST_CASE3(test_require<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n2, true>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n3, true>)
+
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n1, n1>)
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n2, n1>)
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n3, n1>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n3, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n3, s, n3>, n3, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, s, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n3, n3>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n3, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n3, s, n3>, n3, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n3, n3>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n3, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n3, s, n3>, n3, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n3, n3>, n3, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n3, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n3, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n3, s, n3>, n1, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n3, s, n3>, n2, n3>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n3, s, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n3>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n3>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n1>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n2>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n3>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n3>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n3>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n1>, n2, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n2>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n3>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n3>, n2, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n3>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n3>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n1>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n2>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n3>, s, n3>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n3, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n3>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n1>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n2>, n3, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n3, n3>, n3, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n3, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n3>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n3>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n3, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n3>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n3>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n3>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n1>, n2, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n1>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n2>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n2>, n3, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n3>, n1, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n3>, n2, n3>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n3, n3>, n3, n3>)
+
+ ASIO_TEST_CASE(test_vars)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution/outstanding_work.cpp b/3rdparty/asio/src/tests/unit/execution/outstanding_work.cpp
new file mode 100644
index 00000000000..cddd0b52c23
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/outstanding_work.cpp
@@ -0,0 +1,1252 @@
+//
+// outstanding_work.cpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/outstanding_work.hpp"
+
+#include "asio/prefer.hpp"
+#include "asio/query.hpp"
+#include "asio/require.hpp"
+#include "../unit_test.hpp"
+
+namespace exec = asio::execution;
+
+typedef exec::outstanding_work_t s;
+typedef exec::outstanding_work_t::untracked_t n1;
+typedef exec::outstanding_work_t::tracked_t n2;
+
+struct ex_nq_nr
+{
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <>
+struct is_executor<ex_nq_nr> : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_cq_nr
+{
+ static constexpr ResultType query(ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_cq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_static_constexpr_member<
+ ex_cq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef Result result_type; // Must return raw result type.
+
+ static constexpr result_type value()
+ {
+ return Result();
+ }
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_mq_nr
+{
+ ResultType query(ParamType) const noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_mq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_member<
+ ex_mq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_fq_nr
+{
+ friend ResultType query(const ex_fq_nr&, ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_fq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_free<
+ ex_fq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_mq_mr
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ CurrentType query(OtherType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, OtherType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, OtherType>();
+ }
+
+ ex_mq_mr<OtherType, CurrentType> require(
+ OtherType) const noexcept
+ {
+ return ex_mq_mr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_mq_mr<CurrentType, CurrentType>
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, CurrentType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_mq_mr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_fq_fr
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend CurrentType query(const ex_fq_fr&, OtherType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> require(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> prefer(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_fq_fr<CurrentType, CurrentType>
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_fq_fr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_query()
+{
+ constexpr bool b1 =
+ asio::can_query<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_query<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_query<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_query<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_query()
+{
+ exec::outstanding_work_t result1 = asio::query(Executor(), Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+
+ Executor ex1 = {};
+ exec::outstanding_work_t result2 = asio::query(ex1, Param());
+ ASIO_CHECK(result2 == ExpectedResult());
+
+ const Executor ex2 = {};
+ exec::outstanding_work_t result3 = asio::query(ex2, Param());
+ ASIO_CHECK(result3 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_constexpr_query()
+{
+ constexpr Executor ex1 = {};
+ constexpr exec::outstanding_work_t result1 = asio::query(ex1, Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_require()
+{
+ constexpr bool b1 =
+ asio::can_require<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_require<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_require<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_require<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_require()
+{
+ ASIO_CHECK(
+ asio::query(
+ asio::require(Executor(), Param()),
+ Param()) == ExpectedResult());
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex1, Param()),
+ Param()) == ExpectedResult());
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex2, Param()),
+ Param()) == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_prefer()
+{
+ constexpr bool b1 =
+ asio::can_prefer<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_prefer<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_prefer<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_prefer<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_prefer()
+{
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(Executor(), Param()),
+ s())) == s(ExpectedResult()));
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex1, Param()),
+ s())) == s(ExpectedResult()));
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex2, Param()),
+ s())) == s(ExpectedResult()));
+}
+
+void test_vars()
+{
+ ASIO_CHECK(s() == exec::outstanding_work);
+ ASIO_CHECK(s() != exec::outstanding_work.untracked);
+ ASIO_CHECK(s() != exec::outstanding_work.tracked);
+ ASIO_CHECK(n1() == exec::outstanding_work.untracked);
+ ASIO_CHECK(n1() != exec::outstanding_work.tracked);
+ ASIO_CHECK(n2() == exec::outstanding_work.tracked);
+ ASIO_CHECK(n2() != exec::outstanding_work.untracked);
+}
+
+ASIO_TEST_SUITE
+(
+ "outstanding_work",
+
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, s, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n2, false>)
+
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n2, false>)
+
+ ASIO_TEST_CASE3(test_require<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n2, true>)
+
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n1, n1>)
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n2, n1>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n2, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n2, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE(test_vars)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution/prefer_only.cpp b/3rdparty/asio/src/tests/unit/execution/prefer_only.cpp
new file mode 100644
index 00000000000..60500002475
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/prefer_only.cpp
@@ -0,0 +1,533 @@
+//
+// prefer_only.cpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/prefer_only.hpp"
+
+#include <functional>
+#include "asio/execution/any_executor.hpp"
+#include "../unit_test.hpp"
+
+using namespace asio;
+namespace bindns = std;
+
+static int possibly_blocking_count = 0;
+static int never_blocking_count = 0;
+
+struct possibly_blocking_executor
+{
+ template <typename F>
+ void execute(const F&) const
+ {
+ ++possibly_blocking_count;
+ }
+
+ friend bool operator==(const possibly_blocking_executor&,
+ const possibly_blocking_executor&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const possibly_blocking_executor&,
+ const possibly_blocking_executor&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename F>
+struct execute_member<possibly_blocking_executor, F>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<possibly_blocking_executor>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+struct never_blocking_executor
+{
+ static constexpr execution::blocking_t::never_t
+ query(execution::blocking_t) noexcept
+ {
+ return execution::blocking_t::never_t();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ ++never_blocking_count;
+ }
+
+ friend bool operator==(const never_blocking_executor&,
+ const never_blocking_executor&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const never_blocking_executor&,
+ const never_blocking_executor&) noexcept
+ {
+ return false;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename F>
+struct execute_member<never_blocking_executor, F>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<never_blocking_executor>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+template <typename Param>
+struct query_static_constexpr_member<
+ never_blocking_executor, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, execution::blocking_t>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef execution::blocking_t::never_t result_type;
+
+ static constexpr result_type value()
+ {
+ return result_type();
+ }
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+struct either_blocking_executor
+{
+ execution::blocking_t blocking_;
+
+ explicit either_blocking_executor(execution::blocking_t b)
+ : blocking_(b)
+ {
+ }
+
+ execution::blocking_t query(execution::blocking_t) const noexcept
+ {
+ return blocking_;
+ }
+
+ either_blocking_executor require(execution::blocking_t::possibly_t) const
+ {
+ return either_blocking_executor(execution::blocking.possibly);
+ }
+
+ either_blocking_executor require(execution::blocking_t::never_t) const
+ {
+ return either_blocking_executor(execution::blocking.never);
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ if (blocking_ == execution::blocking.never)
+ ++never_blocking_count;
+ else
+ ++possibly_blocking_count;
+ }
+
+ friend bool operator==(const either_blocking_executor& a,
+ const either_blocking_executor& b) noexcept
+ {
+ return a.blocking_ == b.blocking_;
+ }
+
+ friend bool operator!=(const either_blocking_executor& a,
+ const either_blocking_executor& b) noexcept
+ {
+ return a.blocking_ != b.blocking_;
+ }
+};
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+template <typename F>
+struct execute_member<either_blocking_executor, F>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+ typedef void result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+template <>
+struct equality_comparable<either_blocking_executor>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename Param>
+struct query_member<
+ either_blocking_executor, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, execution::blocking_t>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef execution::blocking_t result_type;
+};
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename Param>
+struct require_member<
+ either_blocking_executor, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, execution::blocking_t>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = false;
+
+ typedef either_blocking_executor result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+void prefer_only_executor_query_test()
+{
+ typedef execution::any_executor<
+ execution::blocking_t,
+ execution::prefer_only<execution::blocking_t::possibly_t>,
+ execution::prefer_only<execution::blocking_t::never_t>
+ > executor_type;
+
+ executor_type ex1 = possibly_blocking_executor();
+
+ ASIO_CHECK(
+ asio::query(ex1, execution::blocking)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex1, execution::blocking.possibly)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex1, execution::blocking.never)
+ == execution::blocking.possibly);
+
+ executor_type ex2 = asio::prefer(ex1, execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex2, execution::blocking)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex2, execution::blocking.possibly)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex2, execution::blocking.never)
+ == execution::blocking.possibly);
+
+ executor_type ex3 = asio::prefer(ex1, execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex3, execution::blocking)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex3, execution::blocking.possibly)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex3, execution::blocking.never)
+ == execution::blocking.possibly);
+
+ executor_type ex4 = never_blocking_executor();
+
+ ASIO_CHECK(
+ asio::query(ex4, execution::blocking)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex4, execution::blocking.possibly)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex4, execution::blocking.never)
+ == execution::blocking.never);
+
+ executor_type ex5 = asio::prefer(ex4, execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex5, execution::blocking)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex5, execution::blocking.possibly)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex5, execution::blocking.never)
+ == execution::blocking.never);
+
+ executor_type ex6 = asio::prefer(ex4, execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex6, execution::blocking)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex6, execution::blocking.possibly)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex6, execution::blocking.never)
+ == execution::blocking.never);
+
+ executor_type ex7 = either_blocking_executor(execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex7, execution::blocking)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex7, execution::blocking.possibly)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex7, execution::blocking.never)
+ == execution::blocking.possibly);
+
+ executor_type ex8 = asio::prefer(ex7, execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex8, execution::blocking)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex8, execution::blocking.possibly)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex8, execution::blocking.never)
+ == execution::blocking.possibly);
+
+ executor_type ex9 = asio::prefer(ex7, execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex9, execution::blocking)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex9, execution::blocking.possibly)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex9, execution::blocking.never)
+ == execution::blocking.never);
+
+ executor_type ex10 = either_blocking_executor(execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex10, execution::blocking)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex10, execution::blocking.possibly)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex10, execution::blocking.never)
+ == execution::blocking.never);
+
+ executor_type ex11 = asio::prefer(ex7, execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex11, execution::blocking)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex11, execution::blocking.possibly)
+ == execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ex11, execution::blocking.never)
+ == execution::blocking.possibly);
+
+ executor_type ex12 = asio::prefer(ex7, execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex12, execution::blocking)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex12, execution::blocking.possibly)
+ == execution::blocking.never);
+
+ ASIO_CHECK(
+ asio::query(ex12, execution::blocking.never)
+ == execution::blocking.never);
+}
+
+void do_nothing()
+{
+}
+
+void prefer_only_executor_execute_test()
+{
+ typedef execution::any_executor<
+ execution::blocking_t,
+ execution::prefer_only<execution::blocking_t::possibly_t>,
+ execution::prefer_only<execution::blocking_t::never_t>
+ > executor_type;
+
+ executor_type ex1 = possibly_blocking_executor();
+
+ ex1.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 1);
+ ASIO_CHECK(never_blocking_count == 0);
+
+ executor_type ex2 = asio::prefer(ex1, execution::blocking.possibly);
+
+ ex2.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 2);
+ ASIO_CHECK(never_blocking_count == 0);
+
+ executor_type ex3 = asio::prefer(ex1, execution::blocking.never);
+
+ ex3.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 3);
+ ASIO_CHECK(never_blocking_count == 0);
+
+ executor_type ex4 = never_blocking_executor();
+
+ ex4.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 3);
+ ASIO_CHECK(never_blocking_count == 1);
+
+ executor_type ex5 = asio::prefer(ex4, execution::blocking.possibly);
+
+ ex5.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 3);
+ ASIO_CHECK(never_blocking_count == 2);
+
+ executor_type ex6 = asio::prefer(ex4, execution::blocking.never);
+
+ ex6.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 3);
+ ASIO_CHECK(never_blocking_count == 3);
+
+ executor_type ex7 = either_blocking_executor(execution::blocking.possibly);
+
+ ex7.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 4);
+ ASIO_CHECK(never_blocking_count == 3);
+
+ executor_type ex8 = asio::prefer(ex7, execution::blocking.possibly);
+
+ ex8.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 5);
+ ASIO_CHECK(never_blocking_count == 3);
+
+ executor_type ex9 = asio::prefer(ex7, execution::blocking.never);
+
+ ex9.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 5);
+ ASIO_CHECK(never_blocking_count == 4);
+
+ executor_type ex10 = either_blocking_executor(execution::blocking.never);
+
+ ex10.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 5);
+ ASIO_CHECK(never_blocking_count == 5);
+
+ executor_type ex11 = asio::prefer(ex7, execution::blocking.possibly);
+
+ ex11.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 6);
+ ASIO_CHECK(never_blocking_count == 5);
+
+ executor_type ex12 = asio::prefer(ex7, execution::blocking.never);
+
+ ex12.execute(&do_nothing);
+ ASIO_CHECK(possibly_blocking_count == 6);
+ ASIO_CHECK(never_blocking_count == 6);
+}
+
+ASIO_TEST_SUITE
+(
+ "prefer_only",
+ ASIO_TEST_CASE(prefer_only_executor_query_test)
+ ASIO_TEST_CASE(prefer_only_executor_execute_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution/relationship.cpp b/3rdparty/asio/src/tests/unit/execution/relationship.cpp
new file mode 100644
index 00000000000..a91144e8125
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/execution/relationship.cpp
@@ -0,0 +1,1252 @@
+//
+// relationship.cpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/execution/relationship.hpp"
+
+#include "asio/prefer.hpp"
+#include "asio/query.hpp"
+#include "asio/require.hpp"
+#include "../unit_test.hpp"
+
+namespace exec = asio::execution;
+
+typedef exec::relationship_t s;
+typedef exec::relationship_t::fork_t n1;
+typedef exec::relationship_t::continuation_t n2;
+
+struct ex_nq_nr
+{
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_nq_nr&, const ex_nq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <>
+struct is_executor<ex_nq_nr> : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_cq_nr
+{
+ static constexpr ResultType query(ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_cq_nr&, const ex_cq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_cq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_static_constexpr_member<
+ ex_cq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef Result result_type; // Must return raw result type.
+
+ static constexpr result_type value()
+ {
+ return Result();
+ }
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_mq_nr
+{
+ ResultType query(ParamType) const noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_nr&, const ex_mq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_mq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_member<
+ ex_mq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename ResultType, typename ParamType, typename Result>
+struct ex_fq_nr
+{
+ friend ResultType query(const ex_fq_nr&, ParamType) noexcept
+ {
+ return Result();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_nr&, const ex_fq_nr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename ResultType, typename ParamType, typename Result>
+struct is_executor<ex_fq_nr<ResultType, ParamType, Result> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename ResultType, typename ParamType,
+ typename Result, typename Param>
+struct query_free<
+ ex_fq_nr<ResultType, ParamType, Result>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, ParamType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ResultType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_mq_mr
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ CurrentType query(OtherType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, OtherType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, OtherType>();
+ }
+
+ ex_mq_mr<OtherType, CurrentType> require(
+ OtherType) const noexcept
+ {
+ return ex_mq_mr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_mq_mr<CurrentType, CurrentType>
+{
+ CurrentType query(CurrentType) const noexcept
+ {
+ return CurrentType();
+ }
+
+ ex_mq_mr<CurrentType, CurrentType> require(
+ CurrentType) const noexcept
+ {
+ return ex_mq_mr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_mq_mr&, const ex_mq_mr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_mq_mr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_member<
+ ex_mq_mr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_mq_mr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename CurrentType, typename OtherType>
+struct ex_fq_fr
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend CurrentType query(const ex_fq_fr&, OtherType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> require(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, OtherType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, OtherType>();
+ }
+
+ friend ex_fq_fr<OtherType, CurrentType> prefer(
+ const ex_fq_fr&, OtherType) noexcept
+ {
+ return ex_fq_fr<OtherType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+template <typename CurrentType>
+struct ex_fq_fr<CurrentType, CurrentType>
+{
+ friend CurrentType query(const ex_fq_fr&, CurrentType) noexcept
+ {
+ return CurrentType();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> require(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ friend ex_fq_fr<CurrentType, CurrentType> prefer(
+ const ex_fq_fr&, CurrentType) noexcept
+ {
+ return ex_fq_fr<CurrentType, CurrentType>();
+ }
+
+ template <typename F>
+ void execute(const F&) const
+ {
+ }
+
+ friend bool operator==(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return true;
+ }
+
+ friend bool operator!=(const ex_fq_fr&, const ex_fq_fr&) noexcept
+ {
+ return false;
+ }
+};
+
+#if !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace execution {
+
+template <typename CurrentType, typename OtherType>
+struct is_executor<ex_fq_fr<CurrentType, OtherType> >
+ : asio::true_type
+{
+};
+
+} // namespace execution
+} // namespace asio
+
+#endif // !defined(ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT)
+
+namespace asio {
+namespace traits {
+
+#if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct query_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ || asio::is_convertible<Param, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef CurrentType result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct require_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_FREE_TRAIT)
+
+#if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, CurrentType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<CurrentType, OtherType> result_type;
+};
+
+template <typename CurrentType, typename OtherType, typename Param>
+struct prefer_free<
+ ex_fq_fr<CurrentType, OtherType>, Param,
+ typename asio::enable_if<
+ asio::is_convertible<Param, OtherType>::value
+ && !asio::is_same<CurrentType, OtherType>::value
+ >::type>
+{
+ static constexpr bool is_valid = true;
+ static constexpr bool is_noexcept = true;
+
+ typedef ex_fq_fr<OtherType, CurrentType> result_type;
+};
+
+#endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
+
+} // namespace traits
+} // namespace asio
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_query()
+{
+ constexpr bool b1 =
+ asio::can_query<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_query<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_query<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_query<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_query()
+{
+ exec::relationship_t result1 = asio::query(Executor(), Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+
+ Executor ex1 = {};
+ exec::relationship_t result2 = asio::query(ex1, Param());
+ ASIO_CHECK(result2 == ExpectedResult());
+
+ const Executor ex2 = {};
+ exec::relationship_t result3 = asio::query(ex2, Param());
+ ASIO_CHECK(result3 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_constexpr_query()
+{
+ constexpr Executor ex1 = {};
+ constexpr exec::relationship_t result1 = asio::query(ex1, Param());
+ ASIO_CHECK(result1 == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_require()
+{
+ constexpr bool b1 =
+ asio::can_require<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_require<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_require<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_require<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_require()
+{
+ ASIO_CHECK(
+ asio::query(
+ asio::require(Executor(), Param()),
+ Param()) == ExpectedResult());
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex1, Param()),
+ Param()) == ExpectedResult());
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ asio::query(
+ asio::require(ex2, Param()),
+ Param()) == ExpectedResult());
+}
+
+template <typename Executor, typename Param, bool ExpectedResult>
+void test_can_prefer()
+{
+ constexpr bool b1 =
+ asio::can_prefer<Executor, Param>::value;
+ ASIO_CHECK(b1 == ExpectedResult);
+
+ constexpr bool b2 =
+ asio::can_prefer<const Executor, Param>::value;
+ ASIO_CHECK(b2 == ExpectedResult);
+
+ constexpr bool b3 =
+ asio::can_prefer<Executor&, Param>::value;
+ ASIO_CHECK(b3 == ExpectedResult);
+
+ constexpr bool b4 =
+ asio::can_prefer<const Executor&, Param>::value;
+ ASIO_CHECK(b4 == ExpectedResult);
+}
+
+template <typename Executor, typename Param, typename ExpectedResult>
+void test_prefer()
+{
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(Executor(), Param()),
+ s())) == s(ExpectedResult()));
+
+ Executor ex1 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex1, Param()),
+ s())) == s(ExpectedResult()));
+
+ const Executor ex2 = {};
+ ASIO_CHECK(
+ s(asio::query(
+ asio::prefer(ex2, Param()),
+ s())) == s(ExpectedResult()));
+}
+
+void test_vars()
+{
+ ASIO_CHECK(s() == exec::relationship);
+ ASIO_CHECK(s() != exec::relationship.fork);
+ ASIO_CHECK(s() != exec::relationship.continuation);
+ ASIO_CHECK(n1() == exec::relationship.fork);
+ ASIO_CHECK(n1() != exec::relationship.continuation);
+ ASIO_CHECK(n2() == exec::relationship.continuation);
+ ASIO_CHECK(n2() != exec::relationship.fork);
+}
+
+ASIO_TEST_SUITE
+(
+ "relationship",
+
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, s, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_query<ex_nq_nr, n2, false>)
+
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, s, n1>)
+ ASIO_TEST_CASE3(test_constexpr_query<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_require<ex_nq_nr, n2, false>)
+
+ ASIO_TEST_CASE3(test_require<ex_nq_nr, n1, n1>)
+
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, s, false>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n1, true>)
+ ASIO_TEST_CASE3(test_can_prefer<ex_nq_nr, n2, true>)
+
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n1, n1>)
+ ASIO_TEST_CASE3(test_prefer<ex_nq_nr, n2, n1>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_constexpr_query<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_require<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_cq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_cq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_mq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_mq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_mq_nr<n2, s, n2>, n2, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_mq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_mq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, s, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_query<ex_fq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, s, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, s, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_query<ex_fq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, s, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n1, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<s, n2, n2>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n1, s, n1>, n2, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n1, false>)
+ ASIO_TEST_CASE5(test_can_require<ex_fq_nr<n2, s, n2>, n2, false>)
+
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, s, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n1, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<s, n2, n2>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n1, s, n1>, n2, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, s, false>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n1, true>)
+ ASIO_TEST_CASE5(test_can_prefer<ex_fq_nr<n2, s, n2>, n2, true>)
+
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, s, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n1, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<s, n2, n2>, n2, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n1, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n1, s, n1>, n2, n1>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n1, n2>)
+ ASIO_TEST_CASE5(test_prefer<ex_fq_nr<n2, s, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_mq_mr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n1>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_mq_mr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, s, true>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_query<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, s, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, s, n2>)
+ ASIO_TEST_CASE4(test_query<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n1>, n2, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n1, false>)
+ ASIO_TEST_CASE4(test_can_require<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_require<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n1, n2>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n1>, n2, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, s, false>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n1, true>)
+ ASIO_TEST_CASE4(test_can_prefer<ex_fq_fr<n2, n2>, n2, true>)
+
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n1>, n2, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n1, n2>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n1, n1>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n1>, n2, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n1, n2>)
+ ASIO_TEST_CASE4(test_prefer<ex_fq_fr<n2, n2>, n2, n2>)
+
+ ASIO_TEST_CASE(test_vars)
+)
diff --git a/3rdparty/asio/src/tests/unit/execution_context.cpp b/3rdparty/asio/src/tests/unit/execution_context.cpp
index 802c483be41..cf5a499e256 100644
--- a/3rdparty/asio/src/tests/unit/execution_context.cpp
+++ b/3rdparty/asio/src/tests/unit/execution_context.cpp
@@ -2,7 +2,7 @@
// execution_context.cpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/executor.cpp b/3rdparty/asio/src/tests/unit/executor.cpp
index 493e363c1b3..7ea75055aa4 100644
--- a/3rdparty/asio/src/tests/unit/executor.cpp
+++ b/3rdparty/asio/src/tests/unit/executor.cpp
@@ -2,7 +2,7 @@
// executor.cpp
// ~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/executor_work_guard.cpp b/3rdparty/asio/src/tests/unit/executor_work_guard.cpp
index ac62bc5427d..5d7aecd5c7c 100644
--- a/3rdparty/asio/src/tests/unit/executor_work_guard.cpp
+++ b/3rdparty/asio/src/tests/unit/executor_work_guard.cpp
@@ -2,7 +2,7 @@
// executor_work_guard.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/experimental/awaitable_operators.cpp b/3rdparty/asio/src/tests/unit/experimental/awaitable_operators.cpp
new file mode 100644
index 00000000000..e79eeae3eea
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/awaitable_operators.cpp
@@ -0,0 +1,297 @@
+//
+// experimental/awaitable_operators.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/experimental/awaitable_operators.hpp"
+
+#include "asio/co_spawn.hpp"
+#include "asio/detached.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "../unit_test.hpp"
+
+using asio::awaitable;
+using namespace asio::experimental::awaitable_operators;
+
+struct move_only
+{
+ move_only(int i) : value(i) {}
+ move_only(const move_only&) = delete;
+ move_only(move_only&&) {}
+ move_only& operator=(const move_only&) = delete;
+ move_only& operator=(move_only&&) { return *this; }
+ int value;
+};
+
+awaitable<void> void_ok()
+{
+ co_return;
+}
+
+awaitable<void> void_ex()
+{
+ throw std::runtime_error("exception");
+ co_return;
+}
+
+awaitable<void> void_post_loop()
+{
+ for (;;)
+ co_await asio::post(asio::use_awaitable);
+}
+
+awaitable<int> int_0()
+{
+ co_return 0;
+}
+
+awaitable<int> int_1()
+{
+ co_return 1;
+}
+
+awaitable<int> int_2()
+{
+ co_return 2;
+}
+
+awaitable<int> int_ex()
+{
+ throw std::runtime_error("exception");
+ co_return -1;
+}
+
+awaitable<move_only> move_only_0()
+{
+ co_return move_only(0);
+}
+
+awaitable<move_only> move_only_1()
+{
+ co_return move_only(1);
+}
+
+awaitable<move_only> move_only_2()
+{
+ co_return move_only(2);
+}
+
+awaitable<move_only> move_only_ex()
+{
+ throw std::runtime_error("exception");
+ co_return move_only(-1);
+}
+
+awaitable<void> do_test_and_awaitable_operator()
+{
+ int i;
+ std::tuple<int, int> ii;
+ std::tuple<int, int, int> iii;
+
+ co_await (void_ok() && void_ok());
+ co_await (void_ok() && void_ok() && void_ok());
+ try { co_await (void_ex() && void_ok()); } catch (...) {}
+ try { co_await (void_ex() && void_ok() && void_ok()); } catch (...) {}
+ try { co_await (void_ex() && void_post_loop()); } catch (...) {}
+ try { co_await (void_ex() && void_ok() && void_post_loop()); } catch (...) {}
+
+ i = co_await (void_ok() && int_0());
+ ASIO_CHECK(i == 0);
+
+ i = co_await (void_ok() && int_1());
+ ASIO_CHECK(i == 1);
+
+ i = co_await (int_0() && void_ok());
+ ASIO_CHECK(i == 0);
+
+ ii = co_await (int_0() && int_1());
+ ASIO_CHECK(std::get<0>(ii) == 0);
+ ASIO_CHECK(std::get<1>(ii) == 1);
+
+ i = co_await (void_ok() && void_ok() && int_0());
+ ASIO_CHECK(i == 0);
+
+ i = co_await (void_ok() && int_0() && void_ok());
+ ASIO_CHECK(i == 0);
+
+ ii = co_await (void_ok() && int_0() && int_1());
+ ASIO_CHECK(std::get<0>(ii) == 0);
+ ASIO_CHECK(std::get<1>(ii) == 1);
+
+ ii = co_await (int_0() && void_ok() && int_1());
+ ASIO_CHECK(std::get<0>(ii) == 0);
+ ASIO_CHECK(std::get<1>(ii) == 1);
+
+ iii = co_await (int_0() && int_1() && int_2());
+ ASIO_CHECK(std::get<0>(iii) == 0);
+ ASIO_CHECK(std::get<1>(iii) == 1);
+ ASIO_CHECK(std::get<2>(iii) == 2);
+}
+
+void test_and_awaitable_operator()
+{
+ asio::io_context ctx;
+ co_spawn(ctx, do_test_and_awaitable_operator(), asio::detached);
+ ctx.run();
+}
+
+awaitable<void> do_test_or_awaitable_operator()
+{
+ std::variant<int, int> ii;
+ std::variant<int, std::monostate> iv;
+ std::variant<std::monostate, int> vi;
+ std::variant<std::monostate, std::monostate> vv;
+ std::variant<int, int, int> iii;
+ std::variant<int, int, std::monostate> iiv;
+ std::variant<int, std::monostate, int> ivi;
+ std::variant<int, std::monostate, std::monostate> ivv;
+ std::variant<std::monostate, int, int> vii;
+ std::variant<std::monostate, int, std::monostate> viv;
+ std::variant<std::monostate, std::monostate, int> vvi;
+ std::variant<std::monostate, std::monostate, std::monostate> vvv;
+
+ vv = co_await (void_ok() || void_ok());
+ ASIO_CHECK(vv.index() == 0);
+
+ vv = co_await (void_ex() || void_ok());
+ ASIO_CHECK(vv.index() == 1);
+
+ vi = co_await (void_ok() || int_0());
+ ASIO_CHECK(vi.index() == 0);
+
+ vi = co_await (void_ex() || int_0());
+ ASIO_CHECK(vi.index() == 1);
+
+ iv = co_await (int_0() || void_ex());
+ ASIO_CHECK(iv.index() == 0);
+ ASIO_CHECK(std::get<0>(iv) == 0);
+
+ ii = co_await (int_0() || int_1());
+ ASIO_CHECK(ii.index() == 0);
+ ASIO_CHECK(std::get<0>(ii) == 0);
+
+ ii = co_await (int_ex() || int_1());
+ ASIO_CHECK(ii.index() == 1);
+ ASIO_CHECK(std::get<1>(ii) == 1);
+
+ vvv = co_await (void_ok() || void_ok() || void_ok());
+ ASIO_CHECK(vvv.index() == 0);
+
+ vvv = co_await (void_ex() || void_ok() || void_ok());
+ ASIO_CHECK(vvv.index() == 1);
+
+ vvv = co_await (void_ex() || void_ex() || void_ok());
+ ASIO_CHECK(vvv.index() == 2);
+
+ vvi = co_await (void_ok() || void_ok() || int_0());
+ ASIO_CHECK(vvi.index() == 0);
+
+ viv = co_await (void_ok() || int_0() || void_ok());
+ ASIO_CHECK(viv.index() == 0);
+
+ viv = co_await (void_ex() || int_0() || void_ok());
+ ASIO_CHECK(viv.index() == 1);
+ ASIO_CHECK(std::get<1>(viv) == 0);
+
+ vii = co_await (void_ex() || int_0() || int_1());
+ ASIO_CHECK(vii.index() == 1);
+ ASIO_CHECK(std::get<1>(vii) == 0);
+
+ ivv = co_await (int_0() || void_ok() || void_ok());
+ ASIO_CHECK(ivv.index() == 0);
+ ASIO_CHECK(std::get<0>(ivv) == 0);
+
+ ivv = co_await (int_ex() || void_ok() || void_ok());
+ ASIO_CHECK(ivv.index() == 1);
+
+ ivi = co_await (int_0() || void_ok() || int_1());
+ ASIO_CHECK(ivi.index() == 0);
+ ASIO_CHECK(std::get<0>(ivi) == 0);
+
+ ivi = co_await (int_ex() || void_ok() || int_1());
+ ASIO_CHECK(ivi.index() == 1);
+
+ iiv = co_await (int_0() || int_1() || void_ok());
+ ASIO_CHECK(iiv.index() == 0);
+ ASIO_CHECK(std::get<0>(iiv) == 0);
+
+ iiv = co_await (int_ex() || int_1() || void_ok());
+ ASIO_CHECK(iiv.index() == 1);
+ ASIO_CHECK(std::get<0>(iiv) == 1);
+
+ iiv = co_await (int_ex() || int_ex() || void_ok());
+ ASIO_CHECK(iiv.index() == 2);
+
+ iii = co_await (int_0() || int_1() || int_2());
+ ASIO_CHECK(iii.index() == 0);
+ ASIO_CHECK(std::get<0>(iii) == 0);
+
+ iii = co_await (int_ex() || int_1() || int_2());
+ ASIO_CHECK(iii.index() == 1);
+ ASIO_CHECK(std::get<1>(iii) == 1);
+
+ iii = co_await (int_ex() || int_ex() || int_2());
+ ASIO_CHECK(iii.index() == 2);
+ ASIO_CHECK(std::get<2>(iii) == 2);
+
+ std::variant<move_only, int> mi = co_await (move_only_0() || int_1());
+ ASIO_CHECK(mi.index() == 0);
+ ASIO_CHECK(std::get<0>(mi).value == 0);
+
+ mi = co_await (move_only_ex() || int_1());
+ ASIO_CHECK(mi.index() == 1);
+ ASIO_CHECK(std::get<1>(mi) == 1);
+
+ std::variant<move_only, move_only> mm =
+ co_await (move_only_0() || move_only_1());
+ ASIO_CHECK(mm.index() == 0);
+ ASIO_CHECK(std::get<0>(mm).value == 0);
+
+ mm = co_await (move_only_ex() || move_only_1());
+ ASIO_CHECK(mm.index() == 1);
+ ASIO_CHECK(std::get<1>(mm).value == 1);
+
+ std::variant<move_only, move_only, move_only> mmm =
+ co_await (move_only_0() || move_only_1() || move_only_2());
+ ASIO_CHECK(mmm.index() == 0);
+ ASIO_CHECK(std::get<0>(mmm).value == 0);
+
+ mmm = co_await (move_only_ex() || move_only_1() || move_only_2());
+ ASIO_CHECK(mmm.index() == 1);
+ ASIO_CHECK(std::get<1>(mmm).value == 1);
+
+ mmm = co_await (move_only_ex() || move_only_ex() || move_only_2());
+ ASIO_CHECK(mmm.index() == 2);
+ ASIO_CHECK(std::get<2>(mmm).value == 2);
+}
+
+void test_or_awaitable_operator()
+{
+ asio::io_context ctx;
+ co_spawn(ctx, do_test_or_awaitable_operator(), asio::detached);
+ ctx.run();
+}
+
+ASIO_TEST_SUITE
+(
+ "experimental/awaitable_operators",
+ ASIO_TEST_CASE(test_and_awaitable_operator)
+ ASIO_TEST_CASE(test_or_awaitable_operator)
+)
diff --git a/3rdparty/asio/src/tests/unit/posix/stream_descriptor_service.cpp b/3rdparty/asio/src/tests/unit/experimental/basic_channel.cpp
index be2e60e7ca3..a277efeb27c 100644
--- a/3rdparty/asio/src/tests/unit/posix/stream_descriptor_service.cpp
+++ b/3rdparty/asio/src/tests/unit/experimental/basic_channel.cpp
@@ -1,8 +1,8 @@
//
-// stream_descriptor_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// experimental/basic_channel.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/posix/stream_descriptor_service.hpp"
+#include "asio/experimental/basic_channel.hpp"
#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "posix/stream_descriptor_service",
+ "experimental/basic_channel",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/experimental/basic_concurrent_channel.cpp b/3rdparty/asio/src/tests/unit/experimental/basic_concurrent_channel.cpp
new file mode 100644
index 00000000000..413d1870bd9
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/basic_concurrent_channel.cpp
@@ -0,0 +1,25 @@
+//
+// experimental/basic_concurrent_channel.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/basic_concurrent_channel.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "experimental/basic_concurrent_channel",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/channel.cpp b/3rdparty/asio/src/tests/unit/experimental/channel.cpp
new file mode 100644
index 00000000000..6c5b67fe570
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/channel.cpp
@@ -0,0 +1,888 @@
+//
+// experimental/channel.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/channel.hpp"
+
+#include <utility>
+#include "asio/any_completion_handler.hpp"
+#include "asio/bind_executor.hpp"
+#include "asio/bind_immediate_executor.hpp"
+#include "asio/error.hpp"
+#include "asio/io_context.hpp"
+#include "asio/system_executor.hpp"
+#include "../unit_test.hpp"
+
+using namespace asio;
+using namespace asio::experimental;
+
+void unbuffered_channel_test()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ ASIO_CHECK(ch1.is_open());
+ ASIO_CHECK(!ch1.ready());
+
+ bool b1 = ch1.try_send(asio::error::eof, "hello");
+
+ ASIO_CHECK(!b1);
+
+ std::string s1 = "abcdefghijklmnopqrstuvwxyz";
+ bool b2 = ch1.try_send(asio::error::eof, std::move(s1));
+
+ ASIO_CHECK(!b2);
+ ASIO_CHECK(!s1.empty());
+
+ asio::error_code ec1;
+ std::string s2;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s2 = std::move(s);
+ });
+
+ bool b3 = ch1.try_send(asio::error::eof, std::move(s1));
+
+ ASIO_CHECK(b3);
+ ASIO_CHECK(s1.empty());
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s2 == "abcdefghijklmnopqrstuvwxyz");
+
+ bool b4 = ch1.try_receive([](asio::error_code, std::string){});
+
+ ASIO_CHECK(!b4);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s3 = "zyxwvutsrqponmlkjihgfedcba";
+ ch1.async_send(asio::error::eof, std::move(s3),
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ });
+
+ asio::error_code ec3;
+ std::string s4;
+ bool b5 = ch1.try_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec3 = ec;
+ s4 = s;
+ });
+
+ ASIO_CHECK(b5);
+ ASIO_CHECK(ec3 == asio::error::eof);
+ ASIO_CHECK(s4 == "zyxwvutsrqponmlkjihgfedcba");
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(!ec2);
+}
+
+void buffered_channel_test()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ ASIO_CHECK(ch1.is_open());
+ ASIO_CHECK(!ch1.ready());
+
+ bool b1 = ch1.try_send(asio::error::eof, "hello");
+
+ ASIO_CHECK(b1);
+
+ std::string s1 = "abcdefghijklmnopqrstuvwxyz";
+ bool b2 = ch1.try_send(asio::error::eof, std::move(s1));
+
+ ASIO_CHECK(!b2);
+ ASIO_CHECK(!s1.empty());
+
+ asio::error_code ec1;
+ std::string s2;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s2 = std::move(s);
+ });
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s2 == "hello");
+
+ bool b4 = ch1.try_receive([](asio::error_code, std::string){});
+
+ ASIO_CHECK(!b4);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s3 = "zyxwvutsrqponmlkjihgfedcba";
+ ch1.async_send(asio::error::eof, std::move(s3),
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ });
+
+ asio::error_code ec3;
+ std::string s4;
+ bool b5 = ch1.try_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec3 = ec;
+ s4 = s;
+ });
+
+ ASIO_CHECK(b5);
+ ASIO_CHECK(ec3 == asio::error::eof);
+ ASIO_CHECK(s4 == "zyxwvutsrqponmlkjihgfedcba");
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(!ec2);
+
+ bool b6 = ch1.try_send(asio::error_code(), "goodbye");
+
+ ASIO_CHECK(b6);
+
+ ch1.close();
+
+ asio::error_code ec4;
+ std::string s5;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec4 = ec;
+ s5 = std::move(s);
+ });
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(!ec4);
+ ASIO_CHECK(s5 == "goodbye");
+
+ asio::error_code ec5;
+ std::string s6;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec5 = ec;
+ s6 = std::move(s);
+ });
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(ec5 == asio::experimental::channel_errc::channel_closed);
+ ASIO_CHECK(s6.empty());
+}
+
+void buffered_error_channel_test()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code)> ch1(ctx, 1);
+
+ ASIO_CHECK(ch1.is_open());
+ ASIO_CHECK(!ch1.ready());
+
+ bool b1 = ch1.try_send(asio::error::eof);
+
+ ASIO_CHECK(b1);
+
+ bool b2 = ch1.try_send(asio::error::eof);
+
+ ASIO_CHECK(!b2);
+
+ asio::error_code ec1;
+ ch1.async_receive(
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+
+ bool b4 = ch1.try_receive([](asio::error_code){});
+
+ ASIO_CHECK(!b4);
+
+ asio::error_code ec2 = asio::error::would_block;
+ ch1.async_send(asio::error::eof,
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ });
+
+ asio::error_code ec3;
+ bool b5 = ch1.try_receive(
+ [&](asio::error_code ec)
+ {
+ ec3 = ec;
+ });
+
+ ASIO_CHECK(b5);
+ ASIO_CHECK(ec3 == asio::error::eof);
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(!ec2);
+}
+
+void unbuffered_non_immediate_receive()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec2 = ec;
+ s2 = std::move(s);
+ });
+
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(!ec1);
+ ASIO_CHECK(ec2 == asio::error::eof);
+ ASIO_CHECK(s2 == "0123456789");
+}
+
+void unbuffered_immediate_receive()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2;
+ ch1.async_receive(
+ bind_immediate_executor(system_executor(),
+ [&](asio::error_code ec, std::string s)
+ {
+ ec2 = ec;
+ s2 = std::move(s);
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+ ASIO_CHECK(ec2 == asio::error::eof);
+ ASIO_CHECK(s2 == "0123456789");
+
+ ctx.run();
+
+ ASIO_CHECK(!ec1);
+}
+
+void unbuffered_executor_receive()
+{
+ io_context ctx;
+ io_context ctx2;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2;
+ ch1.async_receive(
+ bind_executor(ctx2,
+ [&](asio::error_code ec, std::string s)
+ {
+ ec2 = ec;
+ s2 = std::move(s);
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(!ec1);
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx2.run();
+
+ ASIO_CHECK(ec2 == asio::error::eof);
+ ASIO_CHECK(s2 == "0123456789");
+}
+
+void unbuffered_non_immediate_send()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s1 = std::move(s);
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s2),
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ });
+
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s1 == "0123456789");
+ ASIO_CHECK(!ec2);
+}
+
+void unbuffered_immediate_send()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s1 = std::move(s);
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s2),
+ bind_immediate_executor(system_executor(),
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+ ASIO_CHECK(!ec2);
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s1 == "0123456789");
+}
+
+void unbuffered_executor_send()
+{
+ io_context ctx;
+ io_context ctx2;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s1 = std::move(s);
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s2),
+ bind_executor(ctx2,
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s1 == "0123456789");
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx2.run();
+
+ ASIO_CHECK(!ec2);
+}
+
+void buffered_non_immediate_receive()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(!ec1);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec2 = ec;
+ s2 = std::move(s);
+ });
+
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(ec2 == asio::error::eof);
+ ASIO_CHECK(s2 == "0123456789");
+}
+
+void buffered_immediate_receive()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(!ec1);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2;
+ ch1.async_receive(
+ bind_immediate_executor(system_executor(),
+ [&](asio::error_code ec, std::string s)
+ {
+ ec2 = ec;
+ s2 = std::move(s);
+ }));
+
+ ASIO_CHECK(ec2 == asio::error::eof);
+ ASIO_CHECK(s2 == "0123456789");
+
+ ctx.restart();
+ ctx.run();
+}
+
+void buffered_executor_receive()
+{
+ io_context ctx;
+ io_context ctx2;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(!ec1);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2;
+ ch1.async_receive(
+ bind_executor(ctx2,
+ [&](asio::error_code ec, std::string s)
+ {
+ ec2 = ec;
+ s2 = std::move(s);
+ }));
+
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx2.run();
+
+ ASIO_CHECK(ec2 == asio::error::eof);
+ ASIO_CHECK(s2 == "0123456789");
+}
+
+void buffered_non_immediate_send()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ });
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(!ec1);
+}
+
+void buffered_immediate_send()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ bind_immediate_executor(system_executor(),
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ }));
+
+ ASIO_CHECK(!ec1);
+
+ ctx.run();
+}
+
+void buffered_executor_send()
+{
+ io_context ctx;
+ io_context ctx2;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1 = "0123456789";
+ ch1.async_send(asio::error::eof, std::move(s1),
+ bind_executor(ctx2,
+ [&](asio::error_code ec)
+ {
+ ec1 = ec;
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx2.run();
+
+ ASIO_CHECK(!ec1);
+}
+
+void try_send_via_dispatch()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1;
+ ch1.async_receive(
+ bind_executor(asio::system_executor(),
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s1 = std::move(s);
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx.poll();
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ std::string s2 = "0123456789";
+ ch1.try_send_via_dispatch(asio::error::eof, std::move(s2));
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s1 == "0123456789");
+ ASIO_CHECK(s2.empty());
+}
+
+void try_send_n_via_dispatch()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1;
+ ch1.async_receive(
+ bind_executor(asio::system_executor(),
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s1 = std::move(s);
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2;
+ ch1.async_receive(
+ bind_executor(asio::system_executor(),
+ [&](asio::error_code ec, std::string s)
+ {
+ ec2 = ec;
+ s2 = std::move(s);
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ ctx.poll();
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ std::string s3 = "0123456789";
+ ch1.try_send_n_via_dispatch(2, asio::error::eof, std::move(s3));
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s1 == "0123456789");
+ ASIO_CHECK(ec2 == asio::error::eof);
+ ASIO_CHECK(s2 == "0123456789");
+ ASIO_CHECK(s3.empty());
+}
+
+struct multi_signature_handler
+{
+ std::string* s_;
+ asio::error_code* ec_;
+
+ void operator()(std::string s)
+ {
+ *s_ = s;
+ }
+
+ void operator()(asio::error_code ec)
+ {
+ *ec_ = ec;
+ }
+};
+
+void implicit_error_signature_channel_test()
+{
+ io_context ctx;
+
+ channel<void(std::string)> ch1(ctx);
+
+ ASIO_CHECK(ch1.is_open());
+ ASIO_CHECK(!ch1.ready());
+
+ bool b1 = ch1.try_send("hello");
+
+ ASIO_CHECK(!b1);
+
+ std::string s1 = "abcdefghijklmnopqrstuvwxyz";
+ bool b2 = ch1.try_send(std::move(s1));
+
+ ASIO_CHECK(!b2);
+ ASIO_CHECK(!s1.empty());
+
+ std::string s2;
+ asio::error_code ec1 = asio::error::would_block;
+ multi_signature_handler h1 = {&s2, &ec1};
+ ch1.async_receive(h1);
+
+ bool b3 = ch1.try_send(std::move(s1));
+
+ ASIO_CHECK(b3);
+ ASIO_CHECK(s1.empty());
+
+ ctx.run();
+
+ ASIO_CHECK(s2 == "abcdefghijklmnopqrstuvwxyz");
+ ASIO_CHECK(ec1 == asio::error::would_block);
+
+ std::string s3;
+ asio::error_code ec2;
+ multi_signature_handler h2 = {&s3, &ec2};
+ bool b4 = ch1.try_receive(h2);
+
+ ASIO_CHECK(!b4);
+
+ std::string s4 = "zyxwvutsrqponmlkjihgfedcba";
+ asio::error_code ec3;
+ ch1.async_send(std::move(s4),
+ [&](asio::error_code ec)
+ {
+ ec3 = ec;
+ });
+
+ std::string s5;
+ asio::error_code ec4 = asio::error::would_block;
+ multi_signature_handler h3 = {&s5, &ec4};
+ bool b5 = ch1.try_receive(h3);
+
+ ASIO_CHECK(b5);
+ ASIO_CHECK(ec4 == asio::error::would_block);
+ ASIO_CHECK(s5 == "zyxwvutsrqponmlkjihgfedcba");
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(!ec3);
+
+ std::string s6;
+ asio::error_code ec5 = asio::error::would_block;
+ multi_signature_handler h4 = {&s6, &ec5};
+ ch1.async_receive(h4);
+
+ ch1.close();
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(s6.empty());
+ ASIO_CHECK(ec5 == asio::experimental::channel_errc::channel_closed);
+}
+
+void channel_with_any_completion_handler_test()
+{
+ io_context ctx;
+
+ channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ asio::error_code ec1 = asio::error::would_block;
+ std::string s1;
+ ch1.async_receive(
+ asio::any_completion_handler<
+ void(asio::error_code, std::string)>(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s1 = std::move(s);
+ }));
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s2 = "zyxwvutsrqponmlkjihgfedcba";
+ ch1.async_send(asio::error::eof, std::move(s2),
+ asio::any_completion_handler<void(asio::error_code)>(
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ }));
+
+ ASIO_CHECK(ec1 == asio::error::would_block);
+ ASIO_CHECK(ec2 == asio::error::would_block);
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s1 == "zyxwvutsrqponmlkjihgfedcba");
+ ASIO_CHECK(!ec2);
+}
+
+ASIO_TEST_SUITE
+(
+ "experimental/channel",
+ ASIO_TEST_CASE(unbuffered_channel_test)
+ ASIO_TEST_CASE(buffered_channel_test)
+ ASIO_TEST_CASE(buffered_error_channel_test)
+ ASIO_TEST_CASE(unbuffered_non_immediate_receive)
+ ASIO_TEST_CASE(unbuffered_immediate_receive)
+ ASIO_TEST_CASE(unbuffered_executor_receive)
+ ASIO_TEST_CASE(unbuffered_non_immediate_send)
+ ASIO_TEST_CASE(unbuffered_immediate_send)
+ ASIO_TEST_CASE(unbuffered_executor_send)
+ ASIO_TEST_CASE(buffered_non_immediate_receive)
+ ASIO_TEST_CASE(buffered_immediate_receive)
+ ASIO_TEST_CASE(buffered_executor_receive)
+ ASIO_TEST_CASE(buffered_non_immediate_send)
+ ASIO_TEST_CASE(buffered_immediate_send)
+ ASIO_TEST_CASE(buffered_executor_send)
+ ASIO_TEST_CASE(try_send_via_dispatch)
+ ASIO_TEST_CASE(try_send_n_via_dispatch)
+ ASIO_TEST_CASE(implicit_error_signature_channel_test)
+ ASIO_TEST_CASE(channel_with_any_completion_handler_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/windows/object_handle_service.cpp b/3rdparty/asio/src/tests/unit/experimental/channel_traits.cpp
index 56ff1c3bde9..b1c326f874d 100644
--- a/3rdparty/asio/src/tests/unit/windows/object_handle_service.cpp
+++ b/3rdparty/asio/src/tests/unit/experimental/channel_traits.cpp
@@ -1,8 +1,8 @@
//
-// object_handle_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
+// experimental/channel_traits.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,13 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/windows/object_handle_service.hpp"
+#include "asio/experimental/channel_traits.hpp"
-#include "asio.hpp"
#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "windows/object_handle_service",
+ "experimental/channel_traits",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/experimental/co_composed.cpp b/3rdparty/asio/src/tests/unit/experimental/co_composed.cpp
new file mode 100644
index 00000000000..755cd46d788
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/co_composed.cpp
@@ -0,0 +1,518 @@
+//
+// experimental/co_composed.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/experimental/co_composed.hpp"
+
+#include "asio/bind_cancellation_slot.hpp"
+#include "asio/deferred.hpp"
+#include "asio/detached.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "../unit_test.hpp"
+
+template <typename CompletionToken>
+auto async_throw(CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void()>(
+ [](auto) { throw 42; }, token);
+}
+
+template <typename CompletionToken>
+auto throw_first(CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void()>(
+ asio::experimental::co_composed(
+ [](auto state) -> void
+ {
+ throw 42;
+ co_yield state.complete();
+ }), token);
+}
+
+void test_throw_first()
+{
+ try
+ {
+ throw_first(asio::detached);
+ ASIO_CHECK(0);
+ }
+ catch (int)
+ {
+ }
+}
+
+template <typename CompletionToken>
+auto throw_after_await(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void()>(
+ asio::experimental::co_composed(
+ [](auto state, asio::io_context& ctx) -> void
+ {
+ co_await asio::post(ctx, asio::deferred);
+ throw 42;
+ co_yield state.complete();
+ }), token, std::ref(ctx));
+}
+
+void test_throw_after_await()
+{
+ try
+ {
+ asio::io_context ctx(1);
+ throw_after_await(ctx, asio::detached);
+ ctx.run();
+ ASIO_CHECK(0);
+ }
+ catch (int)
+ {
+ }
+}
+
+template <typename CompletionToken>
+auto throw_in_first_suspend(CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void()>(
+ asio::experimental::co_composed(
+ [](auto state) -> void
+ {
+ co_await async_throw(asio::deferred);
+ co_yield state.complete();
+ }), token);
+}
+
+void test_throw_in_first_suspend()
+{
+ try
+ {
+ throw_in_first_suspend(asio::detached);
+ ASIO_CHECK(0);
+ }
+ catch (int)
+ {
+ }
+}
+
+template <typename CompletionToken>
+auto throw_in_suspend_after_await(
+ asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void()>(
+ asio::experimental::co_composed(
+ [](auto state, asio::io_context& ctx) -> void
+ {
+ co_await asio::post(ctx, asio::deferred);
+ co_await async_throw(asio::deferred);
+ co_yield state.complete();
+ }), token, std::ref(ctx));
+}
+
+void test_throw_in_suspend_after_await()
+{
+ try
+ {
+ asio::io_context ctx(1);
+ throw_in_suspend_after_await(ctx, asio::detached);
+ ctx.run();
+ ASIO_CHECK(0);
+ }
+ catch (int)
+ {
+ }
+}
+
+template <typename CompletionToken>
+auto post_loop(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void(int)>(
+ asio::experimental::co_composed(
+ [](auto state, asio::io_context& ctx) -> void
+ {
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_yield state.complete(i);
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_post_loop()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ post_loop(ctx, [&](int i){ count = i; });
+ ctx.run();
+ ASIO_CHECK(count == 100);
+}
+
+template <typename CompletionToken>
+auto nested_post(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void()>(
+ asio::experimental::co_composed(
+ [](auto state, asio::io_context& ctx) -> void
+ {
+ co_await asio::post(ctx, asio::deferred);
+ co_yield state.complete();
+ }, ctx), token, std::ref(ctx));
+}
+
+template <typename CompletionToken>
+auto nested_post_loop(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void(int)>(
+ asio::experimental::co_composed(
+ [](auto state, asio::io_context& ctx) -> void
+ {
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await nested_post(ctx, asio::deferred);
+ co_yield state.complete(i);
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_nested_post_loop()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ nested_post_loop(ctx, [&](int i){ count = i; });
+ ctx.run();
+ ASIO_CHECK(count == 100);
+}
+
+template <typename CompletionToken>
+auto post_loop_return_1_0(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void()>(
+ asio::experimental::co_composed<void()>(
+ [](auto, asio::io_context& ctx) -> void
+ {
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_return {};
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_post_loop_return_1_0()
+{
+ asio::io_context ctx(1);
+ bool done = false;
+ post_loop_return_1_0(ctx, [&]{ done = true; });
+ ctx.run();
+ ASIO_CHECK(done);
+}
+
+template <typename CompletionToken>
+auto post_loop_return_1_1(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void(int)>(
+ asio::experimental::co_composed<void(int)>(
+ [](auto, asio::io_context& ctx) -> void
+ {
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_return {i};
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_post_loop_return_1_1()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ post_loop_return_1_1(ctx, [&](int i){ count = i; });
+ ctx.run();
+ ASIO_CHECK(count == 100);
+}
+
+template <typename CompletionToken>
+auto post_loop_return_1_2(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void(int, char)>(
+ asio::experimental::co_composed<void(int, char)>(
+ [](auto, asio::io_context& ctx) -> void
+ {
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_return {i, 'A'};
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_post_loop_return_1_2()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ char ch = 0;
+ post_loop_return_1_2(ctx, [&](int i, char c){ count = i, ch = c; });
+ ctx.run();
+ ASIO_CHECK(count == 100);
+ ASIO_CHECK(ch == 'A');
+}
+
+template <typename CompletionToken>
+auto post_loop_return_2(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<CompletionToken, void(), void(int)>(
+ asio::experimental::co_composed<void(), void(int)>(
+ [](auto, asio::io_context& ctx) -> void
+ {
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_return {i};
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_post_loop_return_2()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ post_loop_return_2(ctx, [&](int i = 0){ count = i; });
+ ctx.run();
+ ASIO_CHECK(count == 100);
+}
+
+template <typename CompletionToken>
+auto complete_on_cancel(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<
+ CompletionToken, void(asio::error_code, int)>(
+ asio::experimental::co_composed<
+ void(asio::error_code, int)>(
+ [](auto state, asio::io_context& ctx) -> void
+ {
+ state.on_cancellation_complete_with(
+ asio::error::invalid_argument, 42);
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_return {asio::error::eof, i};
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_complete_on_cancel()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ asio::error_code ec;
+ asio::cancellation_signal cancel;
+
+ complete_on_cancel(ctx,
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ });
+
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::eof);
+ ASIO_CHECK(count == 100);
+
+ complete_on_cancel(ctx,
+ asio::bind_cancellation_slot(cancel.slot(),
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ }));
+
+ ctx.restart();
+ ctx.run_one();
+ cancel.emit(asio::cancellation_type::all);
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::invalid_argument);
+ ASIO_CHECK(count == 42);
+
+ complete_on_cancel(ctx,
+ asio::bind_cancellation_slot(cancel.slot(),
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ }));
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::eof);
+ ASIO_CHECK(count == 100);
+}
+
+template <typename CompletionToken>
+auto complete_with_default_on_cancel(
+ asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<
+ CompletionToken, void(asio::error_code, int)>(
+ asio::experimental::co_composed<
+ void(asio::error_code, int)>(
+ [](auto, asio::io_context& ctx) -> void
+ {
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_return {asio::error::eof, i};
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_complete_with_default_on_cancel()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ asio::error_code ec;
+ asio::cancellation_signal cancel;
+
+ complete_with_default_on_cancel(ctx,
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ });
+
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::eof);
+ ASIO_CHECK(count == 100);
+
+ complete_with_default_on_cancel(ctx,
+ asio::bind_cancellation_slot(cancel.slot(),
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ }));
+
+ ctx.restart();
+ ctx.run_one();
+ cancel.emit(asio::cancellation_type::all);
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::operation_aborted);
+ ASIO_CHECK(count == 0);
+
+ complete_with_default_on_cancel(ctx,
+ asio::bind_cancellation_slot(cancel.slot(),
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ }));
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::eof);
+ ASIO_CHECK(count == 100);
+}
+
+template <typename CompletionToken>
+auto throw_on_cancel(asio::io_context& ctx, CompletionToken&& token)
+{
+ return asio::async_initiate<
+ CompletionToken, void(asio::error_code, int)>(
+ asio::experimental::co_composed<
+ void(asio::error_code, int)>(
+ [](auto state, asio::io_context& ctx) -> void
+ {
+ try
+ {
+ state.throw_if_cancelled(true);
+ int i = 0;
+ for (; i < 100; ++i)
+ co_await asio::post(ctx, asio::deferred);
+ co_return {asio::error::eof, i};
+ }
+ catch (...)
+ {
+ co_return {asio::error::invalid_argument, 42};
+ }
+ }, ctx), token, std::ref(ctx));
+}
+
+void test_throw_on_cancel()
+{
+ asio::io_context ctx(1);
+ int count = 0;
+ asio::error_code ec;
+ asio::cancellation_signal cancel;
+
+ throw_on_cancel(ctx,
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ });
+
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::eof);
+ ASIO_CHECK(count == 100);
+
+ throw_on_cancel(ctx,
+ asio::bind_cancellation_slot(cancel.slot(),
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ }));
+
+ ctx.restart();
+ ctx.run_one();
+ cancel.emit(asio::cancellation_type::all);
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::invalid_argument);
+ ASIO_CHECK(count == 42);
+
+ throw_on_cancel(ctx,
+ asio::bind_cancellation_slot(cancel.slot(),
+ [&](asio::error_code e, int i)
+ {
+ ec = e;
+ count = i;
+ }));
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(ec == asio::error::eof);
+ ASIO_CHECK(count == 100);
+}
+
+ASIO_TEST_SUITE
+(
+ "experimental/co_composed",
+ ASIO_TEST_CASE(test_throw_first)
+ ASIO_TEST_CASE(test_throw_after_await)
+ ASIO_TEST_CASE(test_throw_in_first_suspend)
+ ASIO_TEST_CASE(test_throw_in_suspend_after_await)
+ ASIO_TEST_CASE(test_post_loop)
+ ASIO_TEST_CASE(test_nested_post_loop)
+ ASIO_TEST_CASE(test_post_loop_return_1_0)
+ ASIO_TEST_CASE(test_post_loop_return_1_1)
+ ASIO_TEST_CASE(test_post_loop_return_1_2)
+ ASIO_TEST_CASE(test_post_loop_return_2)
+ ASIO_TEST_CASE(test_complete_on_cancel)
+ ASIO_TEST_CASE(test_complete_with_default_on_cancel)
+ ASIO_TEST_CASE(test_throw_on_cancel)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/concurrent_channel.cpp b/3rdparty/asio/src/tests/unit/experimental/concurrent_channel.cpp
new file mode 100644
index 00000000000..e64e9051638
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/concurrent_channel.cpp
@@ -0,0 +1,165 @@
+//
+// experimental/concurrent_channel.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/concurrent_channel.hpp"
+
+#include <utility>
+#include "asio/error.hpp"
+#include "asio/io_context.hpp"
+#include "../unit_test.hpp"
+
+using namespace asio;
+using namespace asio::experimental;
+
+void unbuffered_concurrent_channel_test()
+{
+ io_context ctx;
+
+ concurrent_channel<void(asio::error_code, std::string)> ch1(ctx);
+
+ ASIO_CHECK(ch1.is_open());
+ ASIO_CHECK(!ch1.ready());
+
+ bool b1 = ch1.try_send(asio::error::eof, "hello");
+
+ ASIO_CHECK(!b1);
+
+ std::string s1 = "abcdefghijklmnopqrstuvwxyz";
+ bool b2 = ch1.try_send(asio::error::eof, std::move(s1));
+
+ ASIO_CHECK(!b2);
+ ASIO_CHECK(!s1.empty());
+
+ asio::error_code ec1;
+ std::string s2;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s2 = std::move(s);
+ });
+
+ bool b3 = ch1.try_send(asio::error::eof, std::move(s1));
+
+ ASIO_CHECK(b3);
+ ASIO_CHECK(s1.empty());
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s2 == "abcdefghijklmnopqrstuvwxyz");
+
+ bool b4 = ch1.try_receive([](asio::error_code, std::string){});
+
+ ASIO_CHECK(!b4);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s3 = "zyxwvutsrqponmlkjihgfedcba";
+ ch1.async_send(asio::error::eof, std::move(s3),
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ });
+
+ asio::error_code ec3;
+ std::string s4;
+ bool b5 = ch1.try_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec3 = ec;
+ s4 = s;
+ });
+
+ ASIO_CHECK(b5);
+ ASIO_CHECK(ec3 == asio::error::eof);
+ ASIO_CHECK(s4 == "zyxwvutsrqponmlkjihgfedcba");
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(!ec2);
+};
+
+void buffered_concurrent_channel_test()
+{
+ io_context ctx;
+
+ concurrent_channel<void(asio::error_code, std::string)> ch1(ctx, 1);
+
+ ASIO_CHECK(ch1.is_open());
+ ASIO_CHECK(!ch1.ready());
+
+ bool b1 = ch1.try_send(asio::error::eof, "hello");
+
+ ASIO_CHECK(b1);
+
+ std::string s1 = "abcdefghijklmnopqrstuvwxyz";
+ bool b2 = ch1.try_send(asio::error::eof, std::move(s1));
+
+ ASIO_CHECK(!b2);
+ ASIO_CHECK(!s1.empty());
+
+ asio::error_code ec1;
+ std::string s2;
+ ch1.async_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec1 = ec;
+ s2 = std::move(s);
+ });
+
+ ctx.run();
+
+ ASIO_CHECK(ec1 == asio::error::eof);
+ ASIO_CHECK(s2 == "hello");
+
+ bool b4 = ch1.try_receive([](asio::error_code, std::string){});
+
+ ASIO_CHECK(!b4);
+
+ asio::error_code ec2 = asio::error::would_block;
+ std::string s3 = "zyxwvutsrqponmlkjihgfedcba";
+ ch1.async_send(asio::error::eof, std::move(s3),
+ [&](asio::error_code ec)
+ {
+ ec2 = ec;
+ });
+
+ asio::error_code ec3;
+ std::string s4;
+ bool b5 = ch1.try_receive(
+ [&](asio::error_code ec, std::string s)
+ {
+ ec3 = ec;
+ s4 = s;
+ });
+
+ ASIO_CHECK(b5);
+ ASIO_CHECK(ec3 == asio::error::eof);
+ ASIO_CHECK(s4 == "zyxwvutsrqponmlkjihgfedcba");
+
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(!ec2);
+};
+
+ASIO_TEST_SUITE
+(
+ "experimental/concurrent_channel",
+ ASIO_TEST_CASE(unbuffered_concurrent_channel_test)
+ ASIO_TEST_CASE(buffered_concurrent_channel_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/allocator.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/allocator.cpp
new file mode 100644
index 00000000000..845906df853
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/allocator.cpp
@@ -0,0 +1,113 @@
+//
+// experimental/coro/partial.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/coro.hpp"
+
+#include <vector>
+#include "asio/io_context.hpp"
+#include "../../unit_test.hpp"
+
+namespace exp = asio::experimental;
+
+namespace coro {
+
+template<typename Value = void>
+struct tracked_allocator
+{
+ using value_type = Value;
+ std::vector<std::pair<void*, std::size_t>> & allocs, &deallocs;
+
+ tracked_allocator(std::vector<std::pair<void*, std::size_t>> & allocs,
+ std::vector<std::pair<void*, std::size_t>> & deallocs) : allocs(allocs), deallocs(deallocs) {}
+
+
+ template<typename T>
+ tracked_allocator(const tracked_allocator<T> & a) : allocs(a.allocs), deallocs(a.deallocs) {}
+
+ value_type* allocate(std::size_t n)
+ {
+ auto p = new char[n * sizeof(Value)];
+ allocs.emplace_back(p, n);
+ return reinterpret_cast<value_type*>(p);
+ }
+
+ void deallocate(void* p, std::size_t n)
+ {
+ deallocs.emplace_back(p, n);
+ delete[] static_cast<char*>(p);
+// ASIO_CHECK(allocs.back() == deallocs.back());
+ }
+
+ bool operator==(const tracked_allocator & rhs) const
+ {
+ return &allocs == &rhs.allocs
+ && &deallocs == &rhs.deallocs;
+ }
+};
+
+exp::coro<void, void, asio::any_io_executor, tracked_allocator<void>>
+ alloc_test_impl(asio::io_context & ctx, int, std::allocator_arg_t, tracked_allocator<void> ta, double)
+{
+ co_return ;
+}
+
+void alloc_test()
+{
+ std::vector<std::pair<void*, std::size_t>> allocs, deallocs;
+ asio::io_context ctx;
+ bool ran = false;
+
+ {
+ auto pp = alloc_test_impl(ctx, 42, std::allocator_arg, {allocs, deallocs}, 42.);
+
+ ASIO_CHECK(allocs.size() == 1u);
+ ASIO_CHECK(deallocs.empty());
+
+ pp.async_resume([&](auto e){ran = true; ASIO_CHECK(!e);});
+ ctx.run();
+ ASIO_CHECK(deallocs.size() == 0u);
+ }
+ ctx.restart();
+ ctx.run();
+ ASIO_CHECK(deallocs.size() == 1u);
+ ASIO_CHECK(allocs == deallocs);
+
+ ASIO_CHECK(ran);
+
+ ran = false;
+
+ auto p = asio::experimental::detail::post_coroutine(
+ ctx,
+ asio::bind_allocator(tracked_allocator{allocs, deallocs}, [&]{ran = true;})).handle;
+ ASIO_CHECK(allocs.size() == 2u);
+ ASIO_CHECK(deallocs.size() == 1u);
+ p.resume();
+ ASIO_CHECK(allocs.size() == 3u);
+ ASIO_CHECK(deallocs.size() == 2u);
+ ctx.restart();
+ ctx.run();
+
+ ASIO_CHECK(allocs == deallocs);
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/allocate",
+ ASIO_TEST_CASE(::coro::alloc_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/cancel.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/cancel.cpp
new file mode 100644
index 00000000000..38cf1067908
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/cancel.cpp
@@ -0,0 +1,179 @@
+//
+// experimental/coro/cancel.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/coro.hpp"
+#include <iostream>
+#include "asio/bind_cancellation_slot.hpp"
+#include "asio/io_context.hpp"
+#include "asio/steady_timer.hpp"
+#include "asio/this_coro.hpp"
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+namespace this_coro = asio::this_coro;
+
+namespace coro {
+
+
+auto coro_simple_cancel_impl(asio::io_context& ) noexcept
+ -> asio::experimental::coro<void() noexcept, asio::error_code>
+{
+ ASIO_CHECK(
+ !(co_await this_coro::cancellation_state).cancelled());
+
+ asio::steady_timer timer{
+ co_await this_coro::executor,
+ std::chrono::seconds(1)};
+
+ ASIO_CHECK(
+ !(co_await this_coro::cancellation_state).cancelled());
+
+ auto ec = co_await timer;
+
+ ASIO_CHECK(
+ (co_await this_coro::cancellation_state).cancelled());
+
+ co_return ec;
+}
+
+void coro_simple_cancel()
+{
+ asio::io_context ctx;
+ asio::cancellation_signal sig;
+
+ auto k = coro_simple_cancel_impl(ctx);
+
+ asio::error_code res_ec;
+ k.async_resume(
+ asio::bind_cancellation_slot(sig.slot(),
+ [&](asio::error_code ec) {res_ec = ec;}));
+ asio::post(ctx, [&]{sig.emit(asio::cancellation_type::all);});
+
+ ASIO_CHECK(!res_ec);
+
+ ctx.run();
+
+ ASIO_CHECK(res_ec == asio::error::operation_aborted);
+}
+
+auto coro_throw_cancel_impl(asio::io_context& )
+ -> asio::experimental::coro<void() , void>
+{
+ asio::steady_timer timer{
+ co_await this_coro::executor,
+ std::chrono::seconds(1)};
+ co_await timer;
+}
+
+void coro_throw_cancel()
+{
+ asio::io_context ctx;
+ asio::cancellation_signal sig;
+
+ auto k = coro_throw_cancel_impl(ctx);
+
+ std::exception_ptr res_ex;
+ k.async_resume(
+ asio::bind_cancellation_slot(sig.slot(),
+ [&](std::exception_ptr ex) {res_ex = ex;}));
+ asio::post(ctx, [&]{sig.emit(asio::cancellation_type::all);});
+
+ ASIO_CHECK(!res_ex);
+
+ ctx.run();
+
+ ASIO_CHECK(res_ex);
+ try
+ {
+ if (res_ex)
+ std::rethrow_exception(res_ex);
+ }
+ catch (asio::system_error& se)
+ {
+ ASIO_CHECK(se.code() == asio::error::operation_aborted);
+ }
+}
+
+auto coro_simple_cancel_nested_k(asio::io_context&, int& cnt) noexcept
+ -> asio::experimental::coro<
+ void() noexcept,
+ asio::error_code>
+{
+ asio::steady_timer timer{
+ co_await this_coro::executor,
+ std::chrono::milliseconds(100)};
+
+ ASIO_CHECK(!(co_await this_coro::cancellation_state).cancelled());
+ auto ec = co_await timer;
+ cnt++;
+ ASIO_CHECK((co_await this_coro::cancellation_state).cancelled());
+
+ co_return ec;
+}
+
+auto coro_simple_cancel_nested_kouter(
+ asio::io_context& ctx, int& cnt) noexcept
+ -> asio::experimental::coro<
+ asio::error_code() noexcept,
+ asio::error_code>
+{
+ ASIO_CHECK(cnt == 0);
+ co_yield co_await coro_simple_cancel_nested_k(ctx, cnt);
+ ASIO_CHECK(cnt == 1);
+ auto ec = co_await coro_simple_cancel_nested_k(ctx, cnt);
+ ASIO_CHECK(cnt == 2);
+ co_return ec;
+}
+
+void coro_simple_cancel_nested()
+{
+ asio::io_context ctx;
+ asio::cancellation_signal sig;
+
+ int cnt = 0;
+ auto kouter = coro_simple_cancel_nested_kouter(ctx, cnt);
+
+ asio::error_code res_ec;
+ kouter.async_resume(
+ asio::bind_cancellation_slot(sig.slot(),
+ [&](asio::error_code ec) {res_ec = ec;}));
+ asio::post(ctx, [&]{sig.emit(asio::cancellation_type::all);});
+ ASIO_CHECK(!res_ec);
+ ctx.run();
+ ASIO_CHECK(res_ec == asio::error::operation_aborted);
+
+ ctx.restart();
+ res_ec = {};
+ kouter.async_resume(
+ asio::bind_cancellation_slot(sig.slot(),
+ [&](asio::error_code ec) {res_ec = ec;}));
+ asio::post(ctx, [&]{sig.emit(asio::cancellation_type::all);});
+ ASIO_CHECK(!res_ec);
+ ctx.run();
+ ASIO_CHECK(res_ec == asio::error::operation_aborted);
+ ASIO_CHECK(cnt == 2);
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/cancel",
+ ASIO_TEST_CASE(::coro::coro_simple_cancel)
+ ASIO_TEST_CASE(::coro::coro_throw_cancel)
+ ASIO_TEST_CASE(::coro::coro_simple_cancel_nested)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/co_spawn.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/co_spawn.cpp
new file mode 100644
index 00000000000..8e6586252f2
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/co_spawn.cpp
@@ -0,0 +1,67 @@
+//
+// experimental/coro/co_spawn.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/co_spawn.hpp"
+
+#include <iostream>
+#include "asio/io_context.hpp"
+#include "asio/steady_timer.hpp"
+#include "asio/this_coro.hpp"
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+namespace this_coro = asio::this_coro;
+
+namespace coro {
+
+auto coro_simple_co_spawn_impl(asio::io_context& , bool &done) noexcept
+ -> asio::experimental::coro<void() noexcept, int>
+{
+ asio::steady_timer timer(
+ co_await this_coro::executor,
+ std::chrono::milliseconds(10));
+
+ done = true;
+
+ co_return 42;
+}
+
+void coro_co_spawn()
+{
+ asio::io_context ctx;
+
+ bool done1 = false;
+ bool done2 = false;
+ int res = 0;
+
+ co_spawn(coro_simple_co_spawn_impl(ctx, done1),
+ [&](int r){done2= true; res = r;});
+
+ ctx.run();
+
+ ASIO_CHECK(done1);
+ ASIO_CHECK(done2);
+ ASIO_CHECK(res == 42);
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/co_spawn",
+ ASIO_TEST_CASE(::coro::coro_co_spawn)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/exception.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/exception.cpp
new file mode 100644
index 00000000000..f4d782e9903
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/exception.cpp
@@ -0,0 +1,172 @@
+//
+// experimental/coro/exception.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/coro.hpp"
+
+#include "asio/co_spawn.hpp"
+#include "asio/detached.hpp"
+#include "asio/io_context.hpp"
+#include "asio/use_awaitable.hpp"
+#include "asio/awaitable.hpp"
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+
+namespace coro {
+
+template <typename Func>
+struct on_scope_exit
+{
+ Func func;
+
+ static_assert(noexcept(func()));
+
+ on_scope_exit(const Func &f)
+ : func(static_cast< Func && >(f))
+ {
+ }
+
+ on_scope_exit(Func &&f)
+ : func(f)
+ {
+ }
+
+ on_scope_exit(const on_scope_exit &) = delete;
+
+ ~on_scope_exit()
+ {
+ func();
+ }
+};
+
+asio::experimental::coro<int> throwing_generator(
+ asio::any_io_executor, int &last, bool &destroyed)
+{
+ on_scope_exit x = [&]() noexcept { destroyed = true; };
+ (void)x;
+
+ int i = 0;
+ while (i < 3)
+ co_yield last = ++i;
+
+ throw std::runtime_error("throwing-generator");
+}
+
+asio::awaitable<void> throwing_generator_test()
+{
+ int val = 0;
+ bool destr = false;
+ {
+ auto gi = throwing_generator(
+ co_await asio::this_coro::executor,
+ val, destr);
+ bool caught = false;
+ try
+ {
+ for (int i = 0; i < 10; i++)
+ {
+ ASIO_CHECK(val == i);
+ const auto next = co_await gi.async_resume(asio::use_awaitable);
+ ASIO_CHECK(next);
+ ASIO_CHECK(val == *next);
+ ASIO_CHECK(val == i + 1);
+ }
+ }
+ catch (std::runtime_error &err)
+ {
+ caught = true;
+ using std::operator ""sv;
+ ASIO_CHECK(err.what() == "throwing-generator"sv);
+ }
+ ASIO_CHECK(val == 3);
+ ASIO_CHECK(caught);
+ }
+ ASIO_CHECK(destr);
+};
+
+void run_throwing_generator_test()
+{
+ asio::io_context ctx;
+ asio::co_spawn(ctx, throwing_generator_test(), asio::detached);
+ ctx.run();
+}
+
+asio::experimental::coro<int(int)> throwing_stacked(
+ asio::any_io_executor exec, int &val,
+ bool &destroyed_inner, bool &destroyed)
+{
+ ASIO_CHECK((co_await asio::this_coro::throw_if_cancelled()));
+
+ on_scope_exit x = [&]() noexcept { destroyed = true; };
+ (void)x;
+
+ auto gen = throwing_generator(exec, val, destroyed_inner);
+ while (auto next = co_await gen) // 1, 2, 4, 8, ...
+ ASIO_CHECK(42 ==(co_yield *next)); // offset is delayed by one cycle
+}
+
+asio::awaitable<void> throwing_generator_stacked_test()
+{
+ int val = 0;
+ bool destr = false, destr_inner = false;
+ {
+ auto gi = throwing_stacked(
+ co_await asio::this_coro::executor,
+ val, destr, destr_inner);
+ bool caught = false;
+ try
+ {
+ for (int i = 0; i < 10; i++)
+ {
+ ASIO_CHECK(val == i);
+ const auto next =
+ co_await gi.async_resume(42, asio::use_awaitable);
+ ASIO_CHECK(next);
+ ASIO_CHECK(val == *next);
+ ASIO_CHECK(val == i + 1);
+ }
+ }
+ catch (std::runtime_error &err)
+ {
+ caught = true;
+ using std::operator ""sv;
+ ASIO_CHECK(err.what() == "throwing-generator"sv);
+ }
+ ASIO_CHECK(val == 3);
+ ASIO_CHECK(caught);
+ }
+ ASIO_CHECK(destr);
+ ASIO_CHECK(destr_inner);
+};
+
+void run_throwing_generator_stacked_test()
+{
+ asio::io_context ctx;
+ asio::co_spawn(ctx,
+ throwing_generator_stacked_test,
+ asio::detached);
+ ctx.run();
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/exception",
+ ASIO_TEST_CASE(::coro::run_throwing_generator_stacked_test)
+ ASIO_TEST_CASE(::coro::run_throwing_generator_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/executor.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/executor.cpp
new file mode 100644
index 00000000000..e0893da2e50
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/executor.cpp
@@ -0,0 +1,116 @@
+//
+// experimental/coro/executor.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/coro.hpp"
+
+#include "asio/thread_pool.hpp"
+#include "asio/io_context.hpp"
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+
+namespace coro {
+
+#define ASIO_CHECKPOINT() \
+ ASIO_TEST_IOSTREAM << __FILE__ << "(" << __LINE__ << "): " \
+ << asio::detail::test_name() << ": " \
+ << "Checkpoint" << std::endl;
+
+template <typename T>
+void different_execs()
+{
+ asio::thread_pool th_ctx{1u};
+ asio::io_context ctx;
+
+ auto o = std::make_optional(
+ asio::prefer(th_ctx.get_executor(),
+ asio::execution::outstanding_work.tracked));
+
+ static bool ran_inner = false, ran_outer = false;
+
+ struct c_inner_t
+ {
+ auto operator()(asio::any_io_executor e) -> asio::experimental::coro<T>
+ {
+ auto p = e.target<asio::thread_pool::executor_type>();
+ ASIO_CHECKPOINT();
+ ASIO_CHECK(p);
+ ASIO_CHECK(p->running_in_this_thread());
+ ran_inner = true;
+ co_return;
+ };
+
+ };
+
+ c_inner_t c_inner;
+
+ struct c_outer_t
+ {
+
+ auto operator()(asio::any_io_executor e, int,
+ asio::experimental::coro<T> tp)
+ -> asio::experimental::coro<void>
+ {
+ auto p = e.target<asio::io_context::executor_type>();
+
+ ASIO_CHECK(p);
+ ASIO_CHECK(p->running_in_this_thread());
+ ASIO_CHECKPOINT();
+
+ co_await tp;
+
+ ASIO_CHECKPOINT();
+ ASIO_CHECK(p->running_in_this_thread());
+
+ ran_outer = true;
+ };
+ };
+
+ c_outer_t c_outer;
+
+ bool ran = false;
+ std::exception_ptr ex;
+
+ auto c = c_outer(ctx.get_executor(), 10, c_inner(th_ctx.get_executor()));
+ c.async_resume(
+ [&](std::exception_ptr e)
+ {
+ ASIO_CHECK(!e);
+ ASIO_CHECKPOINT();
+ ran = true;
+ });
+
+ ASIO_CHECK(!ran);
+ ctx.run();
+ o.reset();
+ ASIO_CHECK(ran);
+ ASIO_CHECK(ran_inner);
+ ASIO_CHECK(ran_outer);
+ ASIO_CHECK(!ex);
+
+ th_ctx.stop();
+ th_ctx.join();
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/partial",
+ ASIO_TEST_CASE(::coro::different_execs<void>)
+ ASIO_TEST_CASE(::coro::different_execs<int()>)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/partial.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/partial.cpp
new file mode 100644
index 00000000000..651b8292204
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/partial.cpp
@@ -0,0 +1,45 @@
+//
+// experimental/coro/partial.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/coro.hpp"
+
+#include "asio/io_context.hpp"
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+
+namespace coro {
+
+void partial()
+{
+ asio::io_context ctx;
+ bool ran = false;
+ auto p = detail::post_coroutine(ctx, [&]{ran = true;}).handle;
+ ASIO_CHECK(!ran);
+ p.resume();
+ ASIO_CHECK(!ran);
+ ctx.run();
+ ASIO_CHECK(ran);
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/partial",
+ ASIO_TEST_CASE(::coro::partial)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/simple_test.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/simple_test.cpp
new file mode 100644
index 00000000000..5eac0688548
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/simple_test.cpp
@@ -0,0 +1,264 @@
+//
+// experimental/coro/simple_test.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/coro.hpp"
+
+#include "asio/co_spawn.hpp"
+#include "asio/detached.hpp"
+#include "asio/io_context.hpp"
+#include "asio/use_awaitable.hpp"
+#include <iostream>
+#include <vector>
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+
+namespace asio {
+namespace experimental {
+
+template struct coro<void(), void, any_io_executor>;
+template struct coro<int(), void, any_io_executor>;
+template struct coro<void(), int, any_io_executor>;
+template struct coro<int(int), void, any_io_executor>;
+template struct coro<int(), int, any_io_executor>;
+template struct coro<int(int), int, any_io_executor>;
+
+template struct coro<void() noexcept, void, any_io_executor>;
+template struct coro<int() noexcept, void, any_io_executor>;
+template struct coro<void() noexcept, int, any_io_executor>;
+template struct coro<int(int) noexcept, void, any_io_executor>;
+template struct coro<int() noexcept, int, any_io_executor>;
+template struct coro<int(int) noexcept, int, any_io_executor>;
+
+} // namespace experimental
+} // namespace asio
+
+namespace coro {
+
+template <typename Func>
+struct on_scope_exit
+{
+ Func func;
+
+ static_assert(noexcept(func()));
+
+ on_scope_exit(const Func &f)
+ : func(static_cast< Func && >(f))
+ {
+ }
+
+ on_scope_exit(Func &&f)
+ : func(f)
+ {
+ }
+
+ on_scope_exit(const on_scope_exit &) = delete;
+
+ ~on_scope_exit()
+ {
+ func();
+ }
+};
+
+asio::experimental::coro<int> generator_impl(
+ asio::any_io_executor, int& last, bool& destroyed)
+{
+ on_scope_exit x = [&]() noexcept { destroyed = true; };
+ (void)x;
+
+ int i = 0;
+ while (true)
+ co_yield last = ++i;
+}
+
+asio::awaitable<void> generator_test()
+{
+ int val = 0;
+ bool destr = false;
+ {
+ auto gi = generator_impl(
+ co_await asio::this_coro::executor, val, destr);
+
+ for (int i = 0; i < 10; i++)
+ {
+ ASIO_CHECK(val == i);
+ const auto next = co_await gi.async_resume(asio::use_awaitable);
+ ASIO_CHECK(next);
+ ASIO_CHECK(val == *next);
+ ASIO_CHECK(val == i + 1);
+ }
+
+ ASIO_CHECK(!destr);
+ }
+ ASIO_CHECK(destr);
+};
+
+void run_generator_test()
+{
+ asio::io_context ctx;
+ asio::co_spawn(ctx, generator_test, asio::detached);
+ ctx.run();
+}
+
+asio::experimental::coro<void, int> task_test(asio::io_context&)
+{
+ co_return 42;
+}
+
+asio::experimental::coro<void, int> task_throw(asio::io_context&)
+{
+ throw std::logic_error(__func__);
+ co_return 42;
+}
+
+void run_task_test()
+{
+ asio::io_context ctx;
+
+ bool tt1 = false;
+ bool tt2 = false;
+ bool tt3 = false;
+ bool tt4 = false;
+ auto tt = task_test(ctx);
+ tt.async_resume(
+ [&](std::exception_ptr pt, int i)
+ {
+ tt1 = true;
+ ASIO_CHECK(!pt);
+ ASIO_CHECK(i == 42);
+ tt.async_resume(
+ [&](std::exception_ptr pt, int)
+ {
+ tt2 = true;
+ ASIO_CHECK(pt);
+ });
+ });
+
+ auto tt_2 = task_throw(ctx);
+
+ tt_2.async_resume(
+ [&](std::exception_ptr pt, int)
+ {
+ tt3 = true;
+ ASIO_CHECK(pt);
+ tt.async_resume(
+ [&](std::exception_ptr pt, int)
+ {
+ tt4 = true;
+ ASIO_CHECK(pt);
+ });
+ });
+
+ ctx.run();
+
+ ASIO_CHECK(tt1);
+ ASIO_CHECK(tt2);
+ ASIO_CHECK(tt3);
+ ASIO_CHECK(tt4);
+}
+
+asio::experimental::coro<char> completion_generator_test_impl(
+ asio::any_io_executor, int limit)
+{
+ for (int i = 0; i < limit; i++)
+ co_yield i;
+}
+
+asio::awaitable<void> completion_generator_test()
+{
+ std::vector<int> res;
+ auto g = completion_generator_test_impl(
+ co_await asio::this_coro::executor, 10);
+
+ ASIO_CHECK(g.is_open());
+ while (auto val = co_await g.async_resume(asio::use_awaitable))
+ res.push_back(*val);
+
+ ASIO_CHECK(!g.is_open());
+ ASIO_CHECK((res == std::vector{0,1,2,3,4,5,6,7,8,9}));
+};
+
+
+void run_completion_generator_test()
+{
+ asio::io_context ctx;
+ asio::co_spawn(ctx, completion_generator_test, asio::detached);
+ ctx.run();
+}
+
+asio::experimental::coro<int(int)>
+symmetrical_test_impl(asio::any_io_executor)
+{
+ int i = 0;
+ while (true)
+ i = (co_yield i) + i;
+}
+
+asio::awaitable<void> symmetrical_test()
+{
+ auto g = symmetrical_test_impl(co_await asio::this_coro::executor);
+
+ ASIO_CHECK(g.is_open());
+
+ ASIO_CHECK(0 == (co_await g.async_resume(0,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(1 == (co_await g.async_resume(1,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(3 == (co_await g.async_resume(2,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(6 == (co_await g.async_resume(3,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(10 == (co_await g.async_resume(4,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(15 == (co_await g.async_resume(5,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(21 == (co_await g.async_resume(6,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(28 == (co_await g.async_resume(7,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(36 == (co_await g.async_resume(8,
+ asio::use_awaitable)).value_or(-1));
+
+ ASIO_CHECK(45 == (co_await g.async_resume(9,
+ asio::use_awaitable)).value_or(-1));
+};
+
+void run_symmetrical_test()
+{
+ asio::io_context ctx;
+ asio::co_spawn(ctx, symmetrical_test, asio::detached);
+ ctx.run();
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/simple_test",
+ ASIO_TEST_CASE(::coro::run_generator_test)
+ ASIO_TEST_CASE(::coro::run_task_test)
+ ASIO_TEST_CASE(::coro::run_symmetrical_test)
+ ASIO_TEST_CASE(::coro::run_completion_generator_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/stack_test.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/stack_test.cpp
new file mode 100644
index 00000000000..9177161afcf
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/stack_test.cpp
@@ -0,0 +1,83 @@
+//
+// experimental/coro/stack_test.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/coro.hpp"
+
+#include "asio/detached.hpp"
+#include "asio/io_context.hpp"
+#include <iostream>
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+
+namespace coro {
+
+asio::experimental::coro<int()>
+ stack_generator(asio::any_io_executor, int i = 1)
+{
+ for (;;)
+ {
+ co_yield i;
+ i *= 2;
+ }
+}
+
+asio::experimental::coro<int(int)>
+stack_accumulate(asio::any_io_executor exec)
+{
+ auto gen = stack_generator(exec);
+ int offset = 0;
+ while (auto next = co_await gen) // 1, 2, 4, 8, ...
+ offset = co_yield *next + offset; // offset is delayed by one cycle
+}
+
+asio::experimental::coro<int>
+main_stack_coro(asio::io_context&, bool & done)
+{
+ auto g = stack_accumulate(co_await asio::this_coro::executor);
+
+ ASIO_CHECK(g.is_open());
+ ASIO_CHECK(1 == (co_await g(1000)).value_or(-1));
+ ASIO_CHECK(2002 == (co_await g(2000)).value_or(-1));
+ ASIO_CHECK(3004 == (co_await g(3000)).value_or(-1));
+ ASIO_CHECK(4008 == (co_await g(4000)).value_or(-1));
+ ASIO_CHECK(5016 == (co_await g(5000)).value_or(-1));
+ ASIO_CHECK(6032 == (co_await g(6000)).value_or(-1));
+ ASIO_CHECK(7064 == (co_await g(7000)).value_or(-1));
+ ASIO_CHECK(8128 == (co_await g(8000)).value_or(-1));
+ ASIO_CHECK(9256 == (co_await g(9000)).value_or(-1));
+ ASIO_CHECK(511 == (co_await g(-1)).value_or(-1));
+ done = true;
+}
+
+void stack_test()
+{
+ bool done = false;
+ asio::io_context ctx;
+ auto k = main_stack_coro(ctx, done);
+ k.async_resume(asio::detached);
+ ctx.run();
+ ASIO_CHECK(done);
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/stack_test",
+ ASIO_TEST_CASE(::coro::stack_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/coro/use_coro.cpp b/3rdparty/asio/src/tests/unit/experimental/coro/use_coro.cpp
new file mode 100644
index 00000000000..f2cb7adfcdd
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/coro/use_coro.cpp
@@ -0,0 +1,77 @@
+//
+// experimental/coro/use_coro.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/use_coro.hpp"
+
+#include "asio/steady_timer.hpp"
+#include <iostream>
+#include "../../unit_test.hpp"
+
+using namespace asio::experimental;
+
+namespace coro {
+
+asio::experimental::coro<void(), int>
+awaiter(asio::any_io_executor exec)
+{
+ asio::steady_timer timer{exec};
+ co_await timer.async_wait(use_coro);
+ co_return 42;
+}
+
+asio::experimental::coro<void() noexcept, int>
+awaiter_noexcept(asio::any_io_executor exec)
+{
+ asio::steady_timer timer{exec};
+ auto ec = co_await timer.async_wait(asio::deferred);
+ ASIO_CHECK(ec == asio::error_code{});
+ co_return 42;
+}
+
+void stack_test2()
+{
+ bool done = false;
+ asio::io_context ctx;
+
+ auto k = awaiter(ctx.get_executor());
+ auto k2 = awaiter_noexcept(ctx.get_executor());
+
+ k.async_resume(
+ [&](std::exception_ptr ex, int res)
+ {
+ ASIO_CHECK(!ex);
+ ASIO_CHECK(res == 42);
+ done = true;
+ });
+
+ k2.async_resume([&](int res)
+ {
+ ASIO_CHECK(res == 42);
+ done = true;
+ });
+
+ ctx.run();
+ ASIO_CHECK(done);
+}
+
+} // namespace coro
+
+ASIO_TEST_SUITE
+(
+ "coro/use_coro",
+ ASIO_TEST_CASE(::coro::stack_test2)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/parallel_group.cpp b/3rdparty/asio/src/tests/unit/experimental/parallel_group.cpp
new file mode 100644
index 00000000000..c91c95f157d
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/parallel_group.cpp
@@ -0,0 +1,25 @@
+//
+// experimental/parallel_group.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/parallel_group.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "experimental/parallel_group",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/experimental/promise.cpp b/3rdparty/asio/src/tests/unit/experimental/promise.cpp
new file mode 100644
index 00000000000..67923a4c726
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/experimental/promise.cpp
@@ -0,0 +1,226 @@
+//
+// promise.cpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2021-2023 Klemens D. Morgenstern
+// (klemens dot morgenstern at gmx dot net)
+//
+// 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/experimental/promise.hpp"
+
+#include "asio/append.hpp"
+#include "asio/bind_cancellation_slot.hpp"
+#include "asio/compose.hpp"
+#include "asio/deferred.hpp"
+#include "asio/experimental/use_promise.hpp"
+#include "asio/steady_timer.hpp"
+#include "../unit_test.hpp"
+
+namespace promise {
+
+void promise_tester()
+{
+ using namespace asio;
+ using namespace std::chrono;
+
+ io_context ctx;
+
+ steady_timer timer1{ctx}, timer2{ctx};
+
+ const auto started_when = steady_clock::now();
+ timer1.expires_at(started_when + milliseconds(5000));
+ timer2.expires_at(started_when + milliseconds(1000));
+ auto p1 = timer1.async_wait(experimental::use_promise);
+
+ steady_clock::time_point completed_when;
+ asio::error_code ec;
+ bool called = false;
+
+ p1([&](asio::error_code ec_)
+ {
+ ec = ec_;
+ called = true;
+ completed_when = steady_clock::now();
+ });
+
+ steady_clock::time_point timer2_done;
+ timer2.async_wait(
+ [&](asio::error_code)
+ {
+ timer2_done = steady_clock::now();
+ p1.cancel();
+ });
+
+ ctx.run();
+
+ static_assert(
+ asio::is_async_operation<decltype(p1)>::value,
+ "promise is async_op");
+
+ ASIO_CHECK(timer2_done + milliseconds(1) > started_when);
+ ASIO_CHECK(completed_when > timer2_done);
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == error::operation_aborted);
+
+ timer1.expires_after(milliseconds(0));
+ auto p2 = timer1.async_wait(
+ asio::append(experimental::use_promise, 123));
+
+ ec = asio::error::would_block;
+ called = false;
+
+ p2([&](asio::error_code ec_, int i)
+ {
+ ASIO_CHECK(i == 123);
+ ec = ec_;
+ called = true;
+ });
+
+ ASIO_CHECK(ec == asio::error::would_block);
+ ASIO_CHECK(!called);
+
+ ctx.restart();
+ ctx.run();
+
+ static_assert(
+ asio::is_async_operation<decltype(p2)>::value,
+ "promise is async_op");
+
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(called);
+}
+
+void promise_slot_tester()
+{
+ using namespace asio;
+ using namespace std::chrono;
+
+ io_context ctx;
+
+ steady_timer timer1{ctx}, timer2{ctx};
+
+ const auto started_when = steady_clock::now();
+ timer1.expires_at(started_when + milliseconds(2500));
+ timer2.expires_at(started_when + milliseconds(1000));
+ auto p = timer1.async_wait(experimental::use_promise);
+
+ steady_clock::time_point completed_when;
+ asio::error_code ec;
+ bool called = false;
+
+ asio::cancellation_signal sig;
+
+ p(asio::bind_cancellation_slot(
+ sig.slot(),
+ [&](asio::error_code ec_)
+ {
+ ec = ec_;
+ called = true;
+ completed_when = steady_clock::now();
+ }));
+
+ steady_clock::time_point timer2_done;
+ timer2.async_wait(
+ [&](asio::error_code)
+ {
+ timer2_done = steady_clock::now();
+ sig.emit(asio::cancellation_type::all);
+ });
+
+ ctx.run();
+
+ static_assert(
+ asio::is_async_operation<decltype(p)>::value,
+ "promise is async_op");
+
+ ASIO_CHECK(timer2_done + milliseconds(1) > started_when);
+ ASIO_CHECK(completed_when > timer2_done);
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == error::operation_aborted);
+}
+
+void early_completion()
+{
+ using namespace asio;
+ using namespace std::chrono;
+
+ io_context ctx;
+ auto p = asio::post(ctx, asio::experimental::use_promise);
+ ctx.run();
+
+ ASIO_CHECK(p.completed());
+
+ bool completed = false;
+ p([&]{completed = true;});
+ ASIO_CHECK(!completed);
+ ctx.restart();
+ ctx.run();
+ ASIO_CHECK(completed);
+}
+
+struct test_cancel_impl_op
+{
+ asio::steady_timer & tim;
+ asio::error_code &ec;
+ template<typename Self>
+ void operator()(Self& self)
+ {
+ tim.async_wait(std::forward<Self>(self));
+ }
+
+ template<typename Self>
+ void operator()(Self& self, asio::error_code ec_)
+ {
+ ec = ec_;
+ self.complete(ec_);
+ }
+};
+
+template <typename CompletionToken>
+ASIO_INITFN_AUTO_RESULT_TYPE(
+ CompletionToken, void(asio::error_code))
+test_cancel_impl(asio::steady_timer & tim,
+ asio::error_code &ec,
+ CompletionToken&& token)
+{
+ return asio::async_compose<CompletionToken, void(asio::error_code)>(
+ test_cancel_impl_op{tim, ec}, token, tim);
+}
+
+void test_cancel()
+{
+ asio::io_context ctx;
+ asio::steady_timer tim{ctx, std::chrono::seconds(10)};
+ asio::error_code ec;
+
+ {
+ auto p = test_cancel_impl(
+ tim, ec, asio::experimental::use_promise);
+ }
+
+ ctx.run();
+
+ ASIO_CHECK_MESSAGE(
+ ec == asio::error::operation_aborted,
+ ec.message());
+}
+
+} // namespace promise
+
+ASIO_TEST_SUITE
+(
+ "promise",
+ ASIO_TEST_CASE(promise::promise_tester)
+ ASIO_TEST_CASE(promise::promise_slot_tester)
+ ASIO_TEST_CASE(promise::early_completion)
+ ASIO_TEST_CASE(promise::test_cancel)
+)
diff --git a/3rdparty/asio/src/tests/unit/file_base.cpp b/3rdparty/asio/src/tests/unit/file_base.cpp
new file mode 100644
index 00000000000..9f517fd8e37
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/file_base.cpp
@@ -0,0 +1,25 @@
+//
+// file_base.cpp
+// ~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/post.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "file_base",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/generic/.gitignore b/3rdparty/asio/src/tests/unit/generic/.gitignore
deleted file mode 100644
index c0571443308..00000000000
--- a/3rdparty/asio/src/tests/unit/generic/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*.ilk
-*.manifest
-*.pdb
-*.tds
-basic_endpoint
-datagram_protocol
-raw_protocol
-seq_packet_protocol
-stream_protocol
diff --git a/3rdparty/asio/src/tests/unit/generic/basic_endpoint.cpp b/3rdparty/asio/src/tests/unit/generic/basic_endpoint.cpp
index ef6d2b1b82f..c02f32b8c73 100644
--- a/3rdparty/asio/src/tests/unit/generic/basic_endpoint.cpp
+++ b/3rdparty/asio/src/tests/unit/generic/basic_endpoint.cpp
@@ -2,7 +2,7 @@
// generic/basic_endpoint.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/generic/datagram_protocol.cpp b/3rdparty/asio/src/tests/unit/generic/datagram_protocol.cpp
index 32f636ba0c7..23957a7a15d 100644
--- a/3rdparty/asio/src/tests/unit/generic/datagram_protocol.cpp
+++ b/3rdparty/asio/src/tests/unit/generic/datagram_protocol.cpp
@@ -2,7 +2,7 @@
// generic/datagram_protocol.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -20,6 +20,7 @@
#include "asio/io_context.hpp"
#include "asio/ip/udp.hpp"
#include "../unit_test.hpp"
+#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -65,6 +66,7 @@ void test()
socket_base::message_flags in_flags = 0;
socket_base::send_buffer_size socket_option;
socket_base::bytes_readable io_control_command;
+ archetypes::immediate_handler immediate;
asio::error_code ec;
// basic_datagram_socket constructors.
@@ -78,33 +80,21 @@ void test()
dp::socket socket4(ioc, dp(af_inet, ipproto_udp), native_socket1);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#if defined(ASIO_HAS_MOVE)
dp::socket socket5(std::move(socket4));
asio::ip::udp::socket udp_socket(ioc);
dp::socket socket6(std::move(udp_socket));
-#endif // defined(ASIO_HAS_MOVE)
// basic_datagram_socket operators.
-#if defined(ASIO_HAS_MOVE)
socket1 = dp::socket(ioc);
socket1 = std::move(socket2);
socket1 = asio::ip::udp::socket(ioc);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
dp::socket::executor_type ex = socket1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = socket1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
// basic_socket functions.
dp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
@@ -151,6 +141,7 @@ void test()
socket1.connect(dp::endpoint(), ec);
socket1.async_connect(dp::endpoint(), connect_handler);
+ socket1.async_connect(dp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -162,10 +153,14 @@ void test()
socket1.io_control(io_control_command, ec);
dp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
dp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
dp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
dp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -188,6 +183,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
+ socket1.async_send(buffer(mutable_char_buffer), immediate);
+ socket1.async_send(buffer(const_char_buffer), immediate);
+ socket1.async_send(null_buffers(), immediate);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
socket1.send_to(buffer(mutable_char_buffer),
dp::endpoint());
@@ -220,6 +221,18 @@ void test()
dp::endpoint(), in_flags, send_handler);
socket1.async_send_to(null_buffers(),
dp::endpoint(), in_flags, send_handler);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ dp::endpoint(), immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ dp::endpoint(), immediate);
+ socket1.async_send_to(null_buffers(),
+ dp::endpoint(), immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ dp::endpoint(), in_flags, immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ dp::endpoint(), in_flags, immediate);
+ socket1.async_send_to(null_buffers(),
+ dp::endpoint(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -233,6 +246,10 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler);
socket1.async_receive(null_buffers(), in_flags, receive_handler);
+ socket1.async_receive(buffer(mutable_char_buffer), immediate);
+ socket1.async_receive(null_buffers(), immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_receive(null_buffers(), in_flags, immediate);
dp::endpoint endpoint;
socket1.receive_from(buffer(mutable_char_buffer), endpoint);
@@ -250,6 +267,14 @@ void test()
endpoint, in_flags, receive_handler);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler);
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, immediate);
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, in_flags, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, in_flags, immediate);
}
catch (std::exception&)
{
@@ -263,5 +288,5 @@ void test()
ASIO_TEST_SUITE
(
"generic/datagram_protocol",
- ASIO_TEST_CASE(generic_datagram_protocol_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(generic_datagram_protocol_socket_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/generic/raw_protocol.cpp b/3rdparty/asio/src/tests/unit/generic/raw_protocol.cpp
index 92c0efa899f..d20ef5ba870 100644
--- a/3rdparty/asio/src/tests/unit/generic/raw_protocol.cpp
+++ b/3rdparty/asio/src/tests/unit/generic/raw_protocol.cpp
@@ -2,7 +2,7 @@
// generic/raw_protocol.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -20,6 +20,7 @@
#include "asio/io_context.hpp"
#include "asio/ip/icmp.hpp"
#include "../unit_test.hpp"
+#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -65,6 +66,7 @@ void test()
socket_base::message_flags in_flags = 0;
socket_base::send_buffer_size socket_option;
socket_base::bytes_readable io_control_command;
+ archetypes::immediate_handler immediate;
asio::error_code ec;
// basic_raw_socket constructors.
@@ -78,33 +80,21 @@ void test()
rp::socket socket4(ioc, rp(af_inet, ipproto_icmp), native_socket1);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#if defined(ASIO_HAS_MOVE)
rp::socket socket5(std::move(socket4));
asio::ip::icmp::socket icmp_socket(ioc);
rp::socket socket6(std::move(icmp_socket));
-#endif // defined(ASIO_HAS_MOVE)
// basic_datagram_socket operators.
-#if defined(ASIO_HAS_MOVE)
socket1 = rp::socket(ioc);
socket1 = std::move(socket2);
socket1 = asio::ip::icmp::socket(ioc);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
rp::socket::executor_type ex = socket1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = socket1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
// basic_socket functions.
rp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
@@ -151,6 +141,7 @@ void test()
socket1.connect(rp::endpoint(), ec);
socket1.async_connect(rp::endpoint(), connect_handler);
+ socket1.async_connect(rp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -162,10 +153,14 @@ void test()
socket1.io_control(io_control_command, ec);
rp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
rp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
rp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
rp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -188,6 +183,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
+ socket1.async_send(buffer(mutable_char_buffer), immediate);
+ socket1.async_send(buffer(const_char_buffer), immediate);
+ socket1.async_send(null_buffers(), immediate);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
socket1.send_to(buffer(mutable_char_buffer),
rp::endpoint());
@@ -220,6 +221,18 @@ void test()
rp::endpoint(), in_flags, send_handler);
socket1.async_send_to(null_buffers(),
rp::endpoint(), in_flags, send_handler);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ rp::endpoint(), immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ rp::endpoint(), immediate);
+ socket1.async_send_to(null_buffers(),
+ rp::endpoint(), immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ rp::endpoint(), in_flags, immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ rp::endpoint(), in_flags, immediate);
+ socket1.async_send_to(null_buffers(),
+ rp::endpoint(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -233,6 +246,11 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler);
socket1.async_receive(null_buffers(), in_flags, receive_handler);
+ socket1.async_receive(buffer(mutable_char_buffer), immediate);
+ socket1.async_receive(null_buffers(), immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags,
+ immediate);
+ socket1.async_receive(null_buffers(), in_flags, immediate);
rp::endpoint endpoint;
socket1.receive_from(buffer(mutable_char_buffer), endpoint);
@@ -250,6 +268,14 @@ void test()
endpoint, in_flags, receive_handler);
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler);
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, immediate);
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, in_flags, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, in_flags, immediate);
}
catch (std::exception&)
{
@@ -263,5 +289,5 @@ void test()
ASIO_TEST_SUITE
(
"generic/raw_protocol",
- ASIO_TEST_CASE(generic_raw_protocol_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(generic_raw_protocol_socket_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/generic/seq_packet_protocol.cpp b/3rdparty/asio/src/tests/unit/generic/seq_packet_protocol.cpp
index e66012649b4..587445b1f05 100644
--- a/3rdparty/asio/src/tests/unit/generic/seq_packet_protocol.cpp
+++ b/3rdparty/asio/src/tests/unit/generic/seq_packet_protocol.cpp
@@ -2,7 +2,7 @@
// generic/seq_packet_protocol.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -19,6 +19,7 @@
#include <cstring>
#include "asio/io_context.hpp"
#include "../unit_test.hpp"
+#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -64,6 +65,7 @@ void test()
socket_base::message_flags out_flags = 0;
socket_base::send_buffer_size socket_option;
socket_base::bytes_readable io_control_command;
+ archetypes::immediate_handler immediate;
asio::error_code ec;
// basic_seq_packet_socket constructors.
@@ -77,30 +79,18 @@ void test()
spp::socket socket4(ioc, spp(af_inet, 0), native_socket1);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#if defined(ASIO_HAS_MOVE)
spp::socket socket5(std::move(socket4));
-#endif // defined(ASIO_HAS_MOVE)
// basic_seq_packet_socket operators.
-#if defined(ASIO_HAS_MOVE)
socket1 = spp::socket(ioc);
socket1 = std::move(socket2);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
spp::socket::executor_type ex = socket1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = socket1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
// basic_socket functions.
spp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
@@ -147,6 +137,7 @@ void test()
socket1.connect(spp::endpoint(), ec);
socket1.async_connect(spp::endpoint(), connect_handler);
+ socket1.async_connect(spp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -158,10 +149,14 @@ void test()
socket1.io_control(io_control_command, ec);
spp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
spp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
spp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
spp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -178,6 +173,9 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer), out_flags);
socket1.receive(null_buffers(), out_flags);
@@ -192,6 +190,11 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
out_flags, receive_handler);
socket1.async_receive(null_buffers(), in_flags, out_flags, receive_handler);
+ socket1.async_receive(buffer(mutable_char_buffer), out_flags, immediate);
+ socket1.async_receive(null_buffers(), out_flags, immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags,
+ out_flags, immediate);
+ socket1.async_receive(null_buffers(), in_flags, out_flags, immediate);
}
catch (std::exception&)
{
@@ -205,5 +208,5 @@ void test()
ASIO_TEST_SUITE
(
"generic/seq_packet_protocol",
- ASIO_TEST_CASE(generic_seq_packet_protocol_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(generic_seq_packet_protocol_socket_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/generic/stream_protocol.cpp b/3rdparty/asio/src/tests/unit/generic/stream_protocol.cpp
index 796206917c6..dedf6d76cee 100644
--- a/3rdparty/asio/src/tests/unit/generic/stream_protocol.cpp
+++ b/3rdparty/asio/src/tests/unit/generic/stream_protocol.cpp
@@ -2,7 +2,7 @@
// generic/stream_protocol.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -20,6 +20,7 @@
#include "asio/io_context.hpp"
#include "asio/ip/tcp.hpp"
#include "../unit_test.hpp"
+#include "../archetypes/async_result.hpp"
#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
# define generic cpp_generic
@@ -73,6 +74,7 @@ void test()
socket_base::message_flags in_flags = 0;
socket_base::keep_alive socket_option;
socket_base::bytes_readable io_control_command;
+ archetypes::immediate_handler immediate;
asio::error_code ec;
// basic_stream_socket constructors.
@@ -88,33 +90,21 @@ void test()
#endif // defined(ASIO_WINDOWS_RUNTIME)
sp::socket socket4(ioc, sp(af_inet, ipproto_tcp), native_socket1);
-#if defined(ASIO_HAS_MOVE)
sp::socket socket5(std::move(socket4));
asio::ip::tcp::socket tcp_socket(ioc);
sp::socket socket6(std::move(tcp_socket));
-#endif // defined(ASIO_HAS_MOVE)
// basic_stream_socket operators.
-#if defined(ASIO_HAS_MOVE)
socket1 = sp::socket(ioc);
socket1 = std::move(socket2);
socket1 = asio::ip::tcp::socket(ioc);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
sp::socket::executor_type ex = socket1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = socket1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
// basic_socket functions.
sp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
@@ -167,6 +157,7 @@ void test()
socket1.connect(sp::endpoint(), ec);
socket1.async_connect(sp::endpoint(), connect_handler);
+ socket1.async_connect(sp::endpoint(), immediate);
socket1.set_option(socket_option);
socket1.set_option(socket_option, ec);
@@ -178,10 +169,14 @@ void test()
socket1.io_control(io_control_command, ec);
sp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
sp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
sp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
sp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -204,6 +199,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
socket1.async_send(null_buffers(), in_flags, send_handler);
+ socket1.async_send(buffer(mutable_char_buffer), immediate);
+ socket1.async_send(buffer(const_char_buffer), immediate);
+ socket1.async_send(null_buffers(), immediate);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -217,6 +218,11 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler);
socket1.async_receive(null_buffers(), in_flags, receive_handler);
+ socket1.async_receive(buffer(mutable_char_buffer), immediate);
+ socket1.async_receive(null_buffers(), immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags,
+ immediate);
+ socket1.async_receive(null_buffers(), in_flags, immediate);
socket1.write_some(buffer(mutable_char_buffer));
socket1.write_some(buffer(const_char_buffer));
@@ -228,6 +234,9 @@ void test()
socket1.async_write_some(buffer(mutable_char_buffer), write_some_handler);
socket1.async_write_some(buffer(const_char_buffer), write_some_handler);
socket1.async_write_some(null_buffers(), write_some_handler);
+ socket1.async_write_some(buffer(mutable_char_buffer), immediate);
+ socket1.async_write_some(buffer(const_char_buffer), immediate);
+ socket1.async_write_some(null_buffers(), immediate);
socket1.read_some(buffer(mutable_char_buffer));
socket1.read_some(buffer(mutable_char_buffer), ec);
@@ -235,6 +244,8 @@ void test()
socket1.async_read_some(buffer(mutable_char_buffer), read_some_handler);
socket1.async_read_some(null_buffers(), read_some_handler);
+ socket1.async_read_some(buffer(mutable_char_buffer), immediate);
+ socket1.async_read_some(null_buffers(), immediate);
}
catch (std::exception&)
{
@@ -248,5 +259,5 @@ void test()
ASIO_TEST_SUITE
(
"generic/stream_protocol",
- ASIO_TEST_CASE(generic_stream_protocol_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(generic_stream_protocol_socket_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/high_resolution_timer.cpp b/3rdparty/asio/src/tests/unit/high_resolution_timer.cpp
index 894bd746474..b8dd448c321 100644
--- a/3rdparty/asio/src/tests/unit/high_resolution_timer.cpp
+++ b/3rdparty/asio/src/tests/unit/high_resolution_timer.cpp
@@ -2,7 +2,7 @@
// high_resolution_timer.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/io_context.cpp b/3rdparty/asio/src/tests/unit/io_context.cpp
index 530d1390e02..4341fb62e1e 100644
--- a/3rdparty/asio/src/tests/unit/io_context.cpp
+++ b/3rdparty/asio/src/tests/unit/io_context.cpp
@@ -2,7 +2,7 @@
// io_context.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,6 +16,7 @@
// Test that header file is self-contained.
#include "asio/io_context.hpp"
+#include <functional>
#include <sstream>
#include "asio/bind_executor.hpp"
#include "asio/dispatch.hpp"
@@ -29,24 +30,13 @@
# include "asio/steady_timer.hpp"
#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
using namespace asio;
-
-#if defined(ASIO_HAS_BOOST_BIND)
-namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
-#endif
#if defined(ASIO_HAS_BOOST_DATE_TIME)
typedef deadline_timer timer;
namespace chronons = boost::posix_time;
-#elif defined(ASIO_HAS_CHRONO)
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
typedef steady_timer timer;
namespace chronons = asio::chrono;
#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
@@ -354,9 +344,223 @@ void io_context_service_test()
ASIO_CHECK(!asio::has_service<test_service>(ioc3));
}
+void io_context_executor_query_test()
+{
+ io_context ioc;
+
+ ASIO_CHECK(
+ &asio::query(ioc.get_executor(),
+ asio::execution::context)
+ == &ioc);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::blocking)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::blocking.possibly)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::outstanding_work)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::outstanding_work.untracked)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::relationship)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::relationship.fork)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::mapping)
+ == asio::execution::mapping.thread);
+
+ ASIO_CHECK(
+ asio::query(ioc.get_executor(),
+ asio::execution::allocator)
+ == std::allocator<void>());
+}
+
+void io_context_executor_execute_test()
+{
+ io_context ioc;
+ int count = 0;
+
+ ioc.get_executor().execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.possibly
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.never
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ ASIO_CHECK(!ioc.stopped());
+
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.tracked
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.fork
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::prefer(
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator(std::allocator<void>())
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::prefer(
+ asio::require(ioc.get_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+}
+
ASIO_TEST_SUITE
(
"io_context",
ASIO_TEST_CASE(io_context_test)
ASIO_TEST_CASE(io_context_service_test)
+ ASIO_TEST_CASE(io_context_executor_query_test)
+ ASIO_TEST_CASE(io_context_executor_execute_test)
)
diff --git a/3rdparty/asio/src/tests/unit/io_context_strand.cpp b/3rdparty/asio/src/tests/unit/io_context_strand.cpp
new file mode 100644
index 00000000000..be03eb40dd2
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/io_context_strand.cpp
@@ -0,0 +1,316 @@
+//
+// io_context_strand.cpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/io_context_strand.hpp"
+
+#include <functional>
+#include <sstream>
+#include "asio/io_context.hpp"
+#include "asio/dispatch.hpp"
+#include "asio/post.hpp"
+#include "asio/thread.hpp"
+#include "unit_test.hpp"
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/deadline_timer.hpp"
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+# include "asio/steady_timer.hpp"
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+using namespace asio;
+
+namespace bindns = std;
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef deadline_timer timer;
+namespace chronons = boost::posix_time;
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+typedef steady_timer timer;
+namespace chronons = asio::chrono;
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void increment_without_lock(io_context::strand* s, int* count)
+{
+ ASIO_CHECK(!s->running_in_this_thread());
+
+ int original_count = *count;
+
+ dispatch(*s, bindns::bind(increment, count));
+
+ // No other functions are currently executing through the locking dispatcher,
+ // so the previous call to dispatch should have successfully nested.
+ ASIO_CHECK(*count == original_count + 1);
+}
+
+void increment_with_lock(io_context::strand* s, int* count)
+{
+ ASIO_CHECK(s->running_in_this_thread());
+
+ int original_count = *count;
+
+ dispatch(*s, bindns::bind(increment, count));
+
+ // The current function already holds the strand's lock, so the
+ // previous call to dispatch should have successfully nested.
+ ASIO_CHECK(*count == original_count + 1);
+}
+
+void sleep_increment(io_context* ioc, int* count)
+{
+ timer t(*ioc, chronons::seconds(2));
+ t.wait();
+
+ ++(*count);
+}
+
+void increment_by_a(int* count, int a)
+{
+ (*count) += a;
+}
+
+void increment_by_a_b(int* count, int a, int b)
+{
+ (*count) += a + b;
+}
+
+void increment_by_a_b_c(int* count, int a, int b, int c)
+{
+ (*count) += a + b + c;
+}
+
+void increment_by_a_b_c_d(int* count, int a, int b, int c, int d)
+{
+ (*count) += a + b + c + d;
+}
+
+void start_sleep_increments(io_context* ioc, io_context::strand* s, int* count)
+{
+ // Give all threads a chance to start.
+ timer t(*ioc, chronons::seconds(2));
+ t.wait();
+
+ // Start three increments.
+ post(*s, bindns::bind(sleep_increment, ioc, count));
+ post(*s, bindns::bind(sleep_increment, ioc, count));
+ post(*s, bindns::bind(sleep_increment, ioc, count));
+}
+
+void throw_exception()
+{
+ throw 1;
+}
+
+void io_context_run(io_context* ioc)
+{
+ ioc->run();
+}
+
+void strand_test()
+{
+ io_context ioc;
+ io_context::strand s(ioc);
+ int count = 0;
+
+ post(ioc, bindns::bind(increment_without_lock, &s, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ post(s, bindns::bind(increment_with_lock, &s, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ post(ioc, bindns::bind(start_sleep_increments, &ioc, &s, &count));
+ thread thread1(bindns::bind(io_context_run, &ioc));
+ thread thread2(bindns::bind(io_context_run, &ioc));
+
+ // Check all events run one after another even though there are two threads.
+ timer timer1(ioc, chronons::seconds(3));
+ timer1.wait();
+ ASIO_CHECK(count == 0);
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+ timer1.expires_at(timer1.expires_at() + chronons::seconds(2));
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+ timer1.expires_at(timer1.expiry() + chronons::seconds(2));
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+ timer1.wait();
+ ASIO_CHECK(count == 1);
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+ timer1.expires_at(timer1.expires_at() + chronons::seconds(2));
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+ timer1.expires_at(timer1.expiry() + chronons::seconds(2));
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+ timer1.wait();
+ ASIO_CHECK(count == 2);
+
+ thread1.join();
+ thread2.join();
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 3);
+
+ count = 0;
+ int exception_count = 0;
+ ioc.restart();
+ post(s, throw_exception);
+ post(s, bindns::bind(increment, &count));
+ post(s, bindns::bind(increment, &count));
+ post(s, throw_exception);
+ post(s, bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+ ASIO_CHECK(exception_count == 0);
+
+ for (;;)
+ {
+ try
+ {
+ ioc.run();
+ break;
+ }
+ catch (int)
+ {
+ ++exception_count;
+ }
+ }
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 3);
+ ASIO_CHECK(exception_count == 2);
+
+ count = 0;
+ ioc.restart();
+
+ // Check for clean shutdown when handlers posted through an orphaned strand
+ // are abandoned.
+ {
+ io_context::strand s2(ioc);
+ post(s2, bindns::bind(increment, &count));
+ post(s2, bindns::bind(increment, &count));
+ post(s2, bindns::bind(increment, &count));
+ }
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+}
+
+void strand_wrap_test()
+{
+#if !defined(ASIO_NO_DEPRECATED)
+ io_context ioc;
+ io_context::strand s(ioc);
+ int count = 0;
+
+ s.wrap(bindns::bind(increment, &count))();
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.restart();
+ ioc.run();
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ s.wrap(increment)(&count);
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.restart();
+ ioc.run();
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ s.wrap(increment_by_a)(&count, 1);
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.restart();
+ ioc.run();
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ s.wrap(increment_by_a_b)(&count, 1, 2);
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.restart();
+ ioc.run();
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 3);
+
+ count = 0;
+ s.wrap(increment_by_a_b_c)(&count, 1, 2, 3);
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.restart();
+ ioc.run();
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 6);
+
+ count = 0;
+ s.wrap(increment_by_a_b_c_d)(&count, 1, 2, 3, 4);
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(count == 0);
+
+ ioc.restart();
+ ioc.run();
+
+ // The run() calls will not return until all work has finished.
+ ASIO_CHECK(count == 10);
+#endif // !defined(ASIO_NO_DEPRECATED)
+}
+
+ASIO_TEST_SUITE
+(
+ "strand",
+ ASIO_TEST_CASE(strand_test)
+ ASIO_TEST_CASE(strand_wrap_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ip/.gitignore b/3rdparty/asio/src/tests/unit/ip/.gitignore
deleted file mode 100644
index 087ad80f192..00000000000
--- a/3rdparty/asio/src/tests/unit/ip/.gitignore
+++ /dev/null
@@ -1,28 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*.ilk
-*.manifest
-*.pdb
-*.tds
-address
-address_v4*
-address_v6*
-basic_endpoint
-basic_resolver
-basic_resolver_entry
-basic_resolver_iterator
-basic_resolver_query
-host_name
-icmp
-multicast
-network_v4
-network_v6
-resolver_query_base
-resolver_service
-tcp
-udp
-unicast
-v6_only
diff --git a/3rdparty/asio/src/tests/unit/ip/address.cpp b/3rdparty/asio/src/tests/unit/ip/address.cpp
index e0b61d92b8d..a13a343c8e9 100644
--- a/3rdparty/asio/src/tests/unit/ip/address.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/address.cpp
@@ -2,7 +2,7 @@
// address.cpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -108,15 +108,15 @@ void test()
addr1 = ip::make_address("127.0.0.1", ec);
addr1 = ip::make_address(string_value);
addr1 = ip::make_address(string_value, ec);
-#if defined(ASIO_HAS_STD_STRING_VIEW)
-# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
- std::experimental::string_view string_view_value("127.0.0.1");
-# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+#if defined(ASIO_HAS_STRING_VIEW)
+# if defined(ASIO_HAS_STD_STRING_VIEW)
std::string_view string_view_value("127.0.0.1");
+# elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ std::experimental::string_view string_view_value("127.0.0.1");
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
addr1 = ip::make_address(string_view_value);
addr1 = ip::make_address(string_view_value, ec);
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#endif // defined(ASIO_HAS_STRING_VIEW)
// address I/O.
@@ -127,6 +127,9 @@ void test()
std::wostringstream wos;
wos << addr1;
#endif // !defined(BOOST_NO_STD_WSTREAMBUF)
+
+ std::size_t hash1 = std::hash<ip::address>()(addr1);
+ (void)hash1;
}
catch (std::exception&)
{
@@ -140,5 +143,5 @@ void test()
ASIO_TEST_SUITE
(
"ip/address",
- ASIO_TEST_CASE(ip_address_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_address_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/address_v4.cpp b/3rdparty/asio/src/tests/unit/ip/address_v4.cpp
index e65f12b06a1..6fb361b9544 100644
--- a/3rdparty/asio/src/tests/unit/ip/address_v4.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/address_v4.cpp
@@ -2,7 +2,7 @@
// address_v4.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -132,15 +132,15 @@ void test()
addr1 = ip::make_address_v4("127.0.0.1", ec);
addr1 = ip::make_address_v4(string_value);
addr1 = ip::make_address_v4(string_value, ec);
-#if defined(ASIO_HAS_STD_STRING_VIEW)
-# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
- std::experimental::string_view string_view_value("127.0.0.1");
-# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+#if defined(ASIO_HAS_STRING_VIEW)
+# if defined(ASIO_HAS_STD_STRING_VIEW)
std::string_view string_view_value("127.0.0.1");
+# elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ std::experimental::string_view string_view_value("127.0.0.1");
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
addr1 = ip::make_address_v4(string_view_value);
addr1 = ip::make_address_v4(string_view_value, ec);
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#endif // defined(ASIO_HAS_STRING_VIEW)
// address_v4 I/O.
@@ -151,6 +151,11 @@ void test()
std::wostringstream wos;
wos << addr1;
#endif // !defined(BOOST_NO_STD_WSTREAMBUF)
+
+#if defined(ASIO_HAS_STD_HASH)
+ std::size_t hash1 = std::hash<ip::address_v4>()(addr1);
+ (void)hash1;
+#endif // defined(ASIO_HAS_STD_HASH)
}
catch (std::exception&)
{
@@ -319,6 +324,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/address_v4",
- ASIO_TEST_CASE(ip_address_v4_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_address_v4_compile::test)
ASIO_TEST_CASE(ip_address_v4_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/address_v4_iterator.cpp b/3rdparty/asio/src/tests/unit/ip/address_v4_iterator.cpp
index f8917220d12..8b651b52582 100644
--- a/3rdparty/asio/src/tests/unit/ip/address_v4_iterator.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/address_v4_iterator.cpp
@@ -2,7 +2,7 @@
// address_v4_iterator.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/address_v4_range.cpp b/3rdparty/asio/src/tests/unit/ip/address_v4_range.cpp
index 0eb652d0699..1b36744cb53 100644
--- a/3rdparty/asio/src/tests/unit/ip/address_v4_range.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/address_v4_range.cpp
@@ -2,7 +2,7 @@
// address_v4_range.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/address_v6.cpp b/3rdparty/asio/src/tests/unit/ip/address_v6.cpp
index b73f65c1b2e..026c5fa4f9a 100644
--- a/3rdparty/asio/src/tests/unit/ip/address_v6.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/address_v6.cpp
@@ -2,7 +2,7 @@
// address_v6.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -144,15 +144,15 @@ void test()
addr1 = ip::make_address_v6("0::0", ec);
addr1 = ip::make_address_v6(string_value);
addr1 = ip::make_address_v6(string_value, ec);
-#if defined(ASIO_HAS_STD_STRING_VIEW)
-# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
- std::experimental::string_view string_view_value("0::0");
-# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+#if defined(ASIO_HAS_STRING_VIEW)
+# if defined(ASIO_HAS_STD_STRING_VIEW)
std::string_view string_view_value("0::0");
+# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ std::experimental::string_view string_view_value("0::0");
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
addr1 = ip::make_address_v6(string_view_value);
addr1 = ip::make_address_v6(string_view_value, ec);
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#endif // defined(ASIO_HAS_STRING_VIEW)
// address_v6 IPv4-mapped conversion.
#if defined(ASIO_NO_DEPRECATED)
@@ -170,6 +170,11 @@ void test()
std::wostringstream wos;
wos << addr1;
#endif // !defined(BOOST_NO_STD_WSTREAMBUF)
+
+#if defined(ASIO_HAS_STD_HASH)
+ std::size_t hash1 = std::hash<ip::address_v6>()(addr1);
+ (void)hash1;
+#endif // defined(ASIO_HAS_STD_HASH)
}
catch (std::exception&)
{
@@ -404,6 +409,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/address_v6",
- ASIO_TEST_CASE(ip_address_v6_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_address_v6_compile::test)
ASIO_TEST_CASE(ip_address_v6_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/address_v6_iterator.cpp b/3rdparty/asio/src/tests/unit/ip/address_v6_iterator.cpp
index 16b040c7142..ef62dc645c2 100644
--- a/3rdparty/asio/src/tests/unit/ip/address_v6_iterator.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/address_v6_iterator.cpp
@@ -2,7 +2,7 @@
// address_v6_iterator.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/address_v6_range.cpp b/3rdparty/asio/src/tests/unit/ip/address_v6_range.cpp
index 76169234620..b0477214d7e 100644
--- a/3rdparty/asio/src/tests/unit/ip/address_v6_range.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/address_v6_range.cpp
@@ -2,7 +2,7 @@
// address_v6_range.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/basic_endpoint.cpp b/3rdparty/asio/src/tests/unit/ip/basic_endpoint.cpp
index e363ef55661..d4aadb6febc 100644
--- a/3rdparty/asio/src/tests/unit/ip/basic_endpoint.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/basic_endpoint.cpp
@@ -2,7 +2,7 @@
// basic_endpoint.cpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/basic_resolver.cpp b/3rdparty/asio/src/tests/unit/ip/basic_resolver.cpp
index afe06f5e178..698a2bad25f 100644
--- a/3rdparty/asio/src/tests/unit/ip/basic_resolver.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/basic_resolver.cpp
@@ -2,7 +2,7 @@
// basic_resolver.cpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/basic_resolver_entry.cpp b/3rdparty/asio/src/tests/unit/ip/basic_resolver_entry.cpp
index 2bebc825610..7de5b6fc2c0 100644
--- a/3rdparty/asio/src/tests/unit/ip/basic_resolver_entry.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/basic_resolver_entry.cpp
@@ -2,7 +2,7 @@
// basic_resolver_entry.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/basic_resolver_iterator.cpp b/3rdparty/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
index 9745e9eae00..df7a54a79af 100644
--- a/3rdparty/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
@@ -2,7 +2,7 @@
// basic_resolver_iterator.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/basic_resolver_query.cpp b/3rdparty/asio/src/tests/unit/ip/basic_resolver_query.cpp
index 5fc5be4b150..6d10e449482 100644
--- a/3rdparty/asio/src/tests/unit/ip/basic_resolver_query.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/basic_resolver_query.cpp
@@ -2,7 +2,7 @@
// basic_resolver_query.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/host_name.cpp b/3rdparty/asio/src/tests/unit/ip/host_name.cpp
index 64dad204cdf..6972cbf6f4a 100644
--- a/3rdparty/asio/src/tests/unit/ip/host_name.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/host_name.cpp
@@ -2,7 +2,7 @@
// host_name.cpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -51,5 +51,5 @@ void test()
ASIO_TEST_SUITE
(
"ip/host_name",
- ASIO_TEST_CASE(ip_host_name_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_host_name_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/icmp.cpp b/3rdparty/asio/src/tests/unit/ip/icmp.cpp
index 4a4f5e843f3..ec60267b30f 100644
--- a/3rdparty/asio/src/tests/unit/ip/icmp.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/icmp.cpp
@@ -2,7 +2,7 @@
// icmp.cpp
// ~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -21,7 +21,6 @@
#include "asio/placeholders.hpp"
#include "../unit_test.hpp"
#include "../archetypes/async_result.hpp"
-#include "../archetypes/deprecated_async_result.hpp"
#include "../archetypes/gettable_socket_option.hpp"
#include "../archetypes/io_control_command.hpp"
#include "../archetypes/settable_socket_option.hpp"
@@ -39,33 +38,27 @@ struct connect_handler
{
connect_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
connect_handler(connect_handler&&) {}
private:
connect_handler(const connect_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct send_handler
{
send_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
send_handler(send_handler&&) {}
private:
send_handler(const send_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct receive_handler
{
receive_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
receive_handler(receive_handler&&) {}
private:
receive_handler(const receive_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
void test()
@@ -76,6 +69,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
socket_base::message_flags in_flags = 0;
@@ -86,10 +80,8 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
+ archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
-#if !defined(ASIO_NO_DEPRECATED)
- archetypes::deprecated_lazy_handler dlazy;
-#endif // !defined(ASIO_NO_DEPRECATED)
asio::error_code ec;
// basic_datagram_socket constructors.
@@ -105,24 +97,26 @@ void test()
ip::icmp::socket socket6(ioc, ip::icmp::v4(), native_socket1);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#if defined(ASIO_HAS_MOVE)
- ip::icmp::socket socket7(std::move(socket6));
-#endif // defined(ASIO_HAS_MOVE)
+ ip::icmp::socket socket7(ioc_ex);
+ ip::icmp::socket socket8(ioc_ex, ip::icmp::v4());
+ ip::icmp::socket socket9(ioc_ex, ip::icmp::v6());
+ ip::icmp::socket socket10(ioc_ex, ip::icmp::endpoint(ip::icmp::v4(), 0));
+ ip::icmp::socket socket11(ioc_ex, ip::icmp::endpoint(ip::icmp::v6(), 0));
+#if !defined(ASIO_WINDOWS_RUNTIME)
+ ip::icmp::socket::native_handle_type native_socket2
+ = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ ip::icmp::socket socket12(ioc_ex, ip::icmp::v4(), native_socket2);
+#endif // !defined(ASIO_WINDOWS_RUNTIME)
+
+ ip::icmp::socket socket13(std::move(socket6));
// basic_datagram_socket operators.
-#if defined(ASIO_HAS_MOVE)
socket1 = ip::icmp::socket(ioc);
socket1 = std::move(socket2);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
ip::icmp::socket::executor_type ex = socket1.get_executor();
(void)ex;
@@ -131,9 +125,9 @@ void test()
ip::icmp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
(void)lowest_layer;
- const ip::icmp::socket& socket8 = socket1;
+ const ip::icmp::socket& socket14 = socket1;
const ip::icmp::socket::lowest_layer_type& lowest_layer2
- = socket8.lowest_layer();
+ = socket14.lowest_layer();
(void)lowest_layer2;
socket1.open(ip::icmp::v4());
@@ -142,12 +136,12 @@ void test()
socket1.open(ip::icmp::v6(), ec);
#if !defined(ASIO_WINDOWS_RUNTIME)
- ip::icmp::socket::native_handle_type native_socket2
- = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- socket1.assign(ip::icmp::v4(), native_socket2);
ip::icmp::socket::native_handle_type native_socket3
= ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- socket1.assign(ip::icmp::v4(), native_socket3, ec);
+ socket1.assign(ip::icmp::v4(), native_socket3);
+ ip::icmp::socket::native_handle_type native_socket4
+ = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ socket1.assign(ip::icmp::v4(), native_socket4, ec);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
bool is_open = socket1.is_open();
@@ -156,9 +150,12 @@ void test()
socket1.close();
socket1.close(ec);
- ip::icmp::socket::native_handle_type native_socket4
+ socket1.release();
+ socket1.release(ec);
+
+ ip::icmp::socket::native_handle_type native_socket5
= socket1.native_handle();
- (void)native_socket4;
+ (void)native_socket5;
socket1.cancel();
socket1.cancel(ec);
@@ -187,18 +184,12 @@ void test()
connect_handler());
socket1.async_connect(ip::icmp::endpoint(ip::icmp::v6(), 0),
connect_handler());
+ socket1.async_connect(ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
+ socket1.async_connect(ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
int i1 = socket1.async_connect(ip::icmp::endpoint(ip::icmp::v4(), 0), lazy);
(void)i1;
int i2 = socket1.async_connect(ip::icmp::endpoint(ip::icmp::v6(), 0), lazy);
(void)i2;
-#if !defined(ASIO_NO_DEPRECATED)
- double d1 = socket1.async_connect(
- ip::icmp::endpoint(ip::icmp::v4(), 0), dlazy);
- (void)d1;
- double d2 = socket1.async_connect(
- ip::icmp::endpoint(ip::icmp::v6(), 0), dlazy);
- (void)d2;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.set_option(settable_socket_option1);
socket1.set_option(settable_socket_option1, ec);
@@ -228,10 +219,14 @@ void test()
socket1.native_non_blocking(false, ec);
ip::icmp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
ip::icmp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
ip::icmp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
ip::icmp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -254,6 +249,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler());
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler());
socket1.async_send(null_buffers(), in_flags, send_handler());
+ socket1.async_send(buffer(mutable_char_buffer), immediate);
+ socket1.async_send(buffer(const_char_buffer), immediate);
+ socket1.async_send(null_buffers(), immediate);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
int i3 = socket1.async_send(buffer(mutable_char_buffer), lazy);
(void)i3;
int i4 = socket1.async_send(buffer(const_char_buffer), lazy);
@@ -266,21 +267,6 @@ void test()
(void)i7;
int i8 = socket1.async_send(null_buffers(), in_flags, lazy);
(void)i8;
-#if !defined(ASIO_NO_DEPRECATED)
- double d3 = socket1.async_send(buffer(mutable_char_buffer), dlazy);
- (void)d3;
- double d4 = socket1.async_send(buffer(const_char_buffer), dlazy);
- (void)d4;
- double d5 = socket1.async_send(null_buffers(), dlazy);
- (void)d5;
- double d6 = socket1.async_send(
- buffer(mutable_char_buffer), in_flags, dlazy);
- (void)d6;
- double d7 = socket1.async_send(buffer(const_char_buffer), in_flags, dlazy);
- (void)d7;
- double d8 = socket1.async_send(null_buffers(), in_flags, dlazy);
- (void)d8;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.send_to(buffer(mutable_char_buffer),
ip::icmp::endpoint(ip::icmp::v4(), 0));
@@ -343,6 +329,30 @@ void test()
ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, send_handler());
socket1.async_send_to(null_buffers(),
ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, send_handler());
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::icmp::endpoint(ip::icmp::v4(), 0), immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::icmp::endpoint(ip::icmp::v6(), 0), immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, immediate);
int i9 = socket1.async_send_to(buffer(mutable_char_buffer),
ip::icmp::endpoint(ip::icmp::v4(), 0), lazy);
(void)i9;
@@ -379,44 +389,6 @@ void test()
int i20 = socket1.async_send_to(null_buffers(),
ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, lazy);
(void)i20;
-#if !defined(ASIO_NO_DEPRECATED)
- double d9 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::icmp::endpoint(ip::icmp::v4(), 0), dlazy);
- (void)d9;
- double d10 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::icmp::endpoint(ip::icmp::v6(), 0), dlazy);
- (void)d10;
- double d11 = socket1.async_send_to(buffer(const_char_buffer),
- ip::icmp::endpoint(ip::icmp::v4(), 0), dlazy);
- (void)d11;
- double d12 = socket1.async_send_to(buffer(const_char_buffer),
- ip::icmp::endpoint(ip::icmp::v6(), 0), dlazy);
- (void)d12;
- double d13 = socket1.async_send_to(null_buffers(),
- ip::icmp::endpoint(ip::icmp::v4(), 0), dlazy);
- (void)d13;
- double d14 = socket1.async_send_to(null_buffers(),
- ip::icmp::endpoint(ip::icmp::v6(), 0), dlazy);
- (void)d14;
- double d15 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, dlazy);
- (void)d15;
- double d16 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, dlazy);
- (void)d16;
- double d17 = socket1.async_send_to(buffer(const_char_buffer),
- ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, dlazy);
- (void)d17;
- double d18 = socket1.async_send_to(buffer(const_char_buffer),
- ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, dlazy);
- (void)d18;
- double d19 = socket1.async_send_to(null_buffers(),
- ip::icmp::endpoint(ip::icmp::v4(), 0), in_flags, dlazy);
- (void)d19;
- double d20 = socket1.async_send_to(null_buffers(),
- ip::icmp::endpoint(ip::icmp::v6(), 0), in_flags, dlazy);
- (void)d20;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -430,6 +402,10 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler());
socket1.async_receive(null_buffers(), in_flags, receive_handler());
+ socket1.async_receive(buffer(mutable_char_buffer), immediate);
+ socket1.async_receive(null_buffers(), immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_receive(null_buffers(), in_flags, immediate);
int i21 = socket1.async_receive(buffer(mutable_char_buffer), lazy);
(void)i21;
int i22 = socket1.async_receive(null_buffers(), lazy);
@@ -439,17 +415,6 @@ void test()
(void)i23;
int i24 = socket1.async_receive(null_buffers(), in_flags, lazy);
(void)i24;
-#if !defined(ASIO_NO_DEPRECATED)
- double d21 = socket1.async_receive(buffer(mutable_char_buffer), dlazy);
- (void)d21;
- double d22 = socket1.async_receive(null_buffers(), dlazy);
- (void)d22;
- double d23 = socket1.async_receive(buffer(mutable_char_buffer),
- in_flags, dlazy);
- (void)d23;
- double d24 = socket1.async_receive(null_buffers(), in_flags, dlazy);
- (void)d24;
-#endif // !defined(ASIO_NO_DEPRECATED)
ip::icmp::endpoint endpoint;
socket1.receive_from(buffer(mutable_char_buffer), endpoint);
@@ -467,6 +432,14 @@ void test()
endpoint, in_flags, receive_handler());
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler());
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, immediate);
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, in_flags, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, in_flags, immediate);
int i25 = socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, lazy);
(void)i25;
@@ -479,20 +452,6 @@ void test()
int i28 = socket1.async_receive_from(null_buffers(),
endpoint, in_flags, lazy);
(void)i28;
-#if !defined(ASIO_NO_DEPRECATED)
- double d25 = socket1.async_receive_from(buffer(mutable_char_buffer),
- endpoint, dlazy);
- (void)d25;
- double d26 = socket1.async_receive_from(null_buffers(),
- endpoint, dlazy);
- (void)d26;
- double d27 = socket1.async_receive_from(buffer(mutable_char_buffer),
- endpoint, in_flags, dlazy);
- (void)d27;
- double d28 = socket1.async_receive_from(null_buffers(),
- endpoint, in_flags, dlazy);
- (void)d28;
-#endif // !defined(ASIO_NO_DEPRECATED)
}
catch (std::exception&)
{
@@ -515,11 +474,9 @@ struct resolve_handler
resolve_handler() {}
void operator()(const asio::error_code&,
asio::ip::icmp::resolver::results_type) {}
-#if defined(ASIO_HAS_MOVE)
resolve_handler(resolve_handler&&) {}
private:
resolve_handler(const resolve_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
void test()
@@ -530,10 +487,8 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
archetypes::lazy_handler lazy;
-#if !defined(ASIO_NO_DEPRECATED)
- archetypes::deprecated_lazy_handler dlazy;
-#endif // !defined(ASIO_NO_DEPRECATED)
asio::error_code ec;
#if !defined(ASIO_NO_DEPRECATED)
ip::icmp::resolver::query q(ip::icmp::v4(), "localhost", "0");
@@ -543,25 +498,17 @@ void test()
// basic_resolver constructors.
ip::icmp::resolver resolver(ioc);
+ ip::icmp::resolver resolver2(ioc_ex);
-#if defined(ASIO_HAS_MOVE)
- ip::icmp::resolver resolver2(std::move(resolver));
-#endif // defined(ASIO_HAS_MOVE)
+ ip::icmp::resolver resolver3(std::move(resolver));
// basic_resolver operators.
-#if defined(ASIO_HAS_MOVE)
resolver = ip::icmp::resolver(ioc);
- resolver = std::move(resolver2);
-#endif // defined(ASIO_HAS_MOVE)
+ resolver = std::move(resolver3);
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = resolver.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
ip::icmp::resolver::executor_type ex = resolver.get_executor();
(void)ex;
@@ -617,55 +564,30 @@ void test()
resolver.async_resolve(q, resolve_handler());
int i1 = resolver.async_resolve(q, lazy);
(void)i1;
- double d1 = resolver.async_resolve(q, dlazy);
- (void)d1;
#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve("", "", resolve_handler());
int i2 = resolver.async_resolve("", "", lazy);
(void)i2;
-#if !defined(ASIO_NO_DEPRECATED)
- double d2 = resolver.async_resolve("", "", dlazy);
- (void)d2;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve("", "",
ip::icmp::resolver::flags(), resolve_handler());
int i3 = resolver.async_resolve("", "",
ip::icmp::resolver::flags(), lazy);
(void)i3;
-#if !defined(ASIO_NO_DEPRECATED)
- double d3 = resolver.async_resolve("", "",
- ip::icmp::resolver::flags(), dlazy);
- (void)d3;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
resolver.async_resolve(ip::icmp::v4(), "", "", resolve_handler());
int i4 = resolver.async_resolve(ip::icmp::v4(), "", "", lazy);
(void)i4;
-#if !defined(ASIO_NO_DEPRECATED)
- double d4 = resolver.async_resolve(ip::icmp::v4(), "", "", dlazy);
- (void)d4;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(ip::icmp::v4(),
"", "", ip::icmp::resolver::flags(), resolve_handler());
int i5 = resolver.async_resolve(ip::icmp::v4(),
"", "", ip::icmp::resolver::flags(), lazy);
(void)i5;
-#if !defined(ASIO_NO_DEPRECATED)
- double d5 = resolver.async_resolve(ip::icmp::v4(),
- "", "", ip::icmp::resolver::flags(), dlazy);
- (void)d5;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(e, resolve_handler());
int i6 = resolver.async_resolve(e, lazy);
(void)i6;
-#if !defined(ASIO_NO_DEPRECATED)
- double d6 = resolver.async_resolve(e, dlazy);
- (void)d6;
-#endif // !defined(ASIO_NO_DEPRECATED)
}
catch (std::exception&)
{
@@ -679,6 +601,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/icmp",
- ASIO_TEST_CASE(ip_icmp_socket_compile::test)
- ASIO_TEST_CASE(ip_icmp_resolver_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_icmp_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_icmp_resolver_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/multicast.cpp b/3rdparty/asio/src/tests/unit/ip/multicast.cpp
index a3cff0b778b..4f0b3f45e14 100644
--- a/3rdparty/asio/src/tests/unit/ip/multicast.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/multicast.cpp
@@ -2,7 +2,7 @@
// multicast.cpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -358,6 +358,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/multicast",
- ASIO_TEST_CASE(ip_multicast_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_multicast_compile::test)
ASIO_TEST_CASE(ip_multicast_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/network_v4.cpp b/3rdparty/asio/src/tests/unit/ip/network_v4.cpp
index 7d07ffd6928..0b7a7a9c783 100644
--- a/3rdparty/asio/src/tests/unit/ip/network_v4.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/network_v4.cpp
@@ -2,7 +2,7 @@
// network_v4.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -95,15 +95,15 @@ void test()
net1 = ip::make_network_v4("10.0.0.0/8", ec);
net1 = ip::make_network_v4(s1);
net1 = ip::make_network_v4(s1, ec);
-#if defined(ASIO_HAS_STD_STRING_VIEW)
-# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
- std::experimental::string_view string_view_value("10.0.0.0/8");
-# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+#if defined(ASIO_HAS_STRING_VIEW)
+# if defined(ASIO_HAS_STD_STRING_VIEW)
std::string_view string_view_value("10.0.0.0/8");
+# elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ std::experimental::string_view string_view_value("10.0.0.0/8");
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
net1 = ip::make_network_v4(string_view_value);
net1 = ip::make_network_v4(string_view_value, ec);
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#endif // defined(ASIO_HAS_STRING_VIEW)
// network_v4 I/O.
@@ -220,6 +220,19 @@ void test()
ASIO_CHECK(make_network_v4("192.168.77.100/24").network() == make_address_v4("192.168.77.0"));
ASIO_CHECK(make_network_v4("192.168.77.128/25").network() == make_address_v4("192.168.77.128"));
+ // construct network from invalid string
+ asio::error_code ec;
+ make_network_v4("10.0.0.256/24", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v4("10.0.0.0/33", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v4("10.0.0.0/-1", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v4("10.0.0.0/", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v4("10.0.0.0", ec);
+ ASIO_CHECK(!!ec);
+
// prefix length
ASIO_CHECK(make_network_v4("193.99.144.80/24").prefix_length() == 24);
ASIO_CHECK(network_v4(make_address_v4("193.99.144.80"), 24).prefix_length() == 24);
@@ -296,6 +309,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/network_v4",
- ASIO_TEST_CASE(ip_network_v4_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_network_v4_compile::test)
ASIO_TEST_CASE(ip_network_v4_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/network_v6.cpp b/3rdparty/asio/src/tests/unit/ip/network_v6.cpp
index c7e458f08f1..d80b1d447b6 100644
--- a/3rdparty/asio/src/tests/unit/ip/network_v6.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/network_v6.cpp
@@ -2,7 +2,7 @@
// network_v6.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -87,15 +87,15 @@ void test()
net1 = ip::make_network_v6("10.0.0.0/8", ec);
net1 = ip::make_network_v6(s1);
net1 = ip::make_network_v6(s1, ec);
-#if defined(ASIO_HAS_STD_STRING_VIEW)
-# if defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
- std::experimental::string_view string_view_value("0::0/8");
-# else // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+#if defined(ASIO_HAS_STRING_VIEW)
+# if defined(ASIO_HAS_STD_STRING_VIEW)
std::string_view string_view_value("0::0/8");
+# elif defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ std::experimental::string_view string_view_value("0::0/8");
# endif // defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
net1 = ip::make_network_v6(string_view_value);
net1 = ip::make_network_v6(string_view_value, ec);
-#endif // defined(ASIO_HAS_STD_STRING_VIEW)
+#endif // defined(ASIO_STD_STRING_VIEW)
// network_v6 I/O.
@@ -153,6 +153,19 @@ void test()
ASIO_CHECK(make_network_v6("2001:370::10:7344/64").network() == make_address_v6("2001:370::"));
ASIO_CHECK(make_network_v6("2001:370::10:7344/27").network() == make_address_v6("2001:360::"));
+ // construct network from invalid string
+ asio::error_code ec;
+ make_network_v6("a:b/24", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v6("2001:370::10:7344/129", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v6("2001:370::10:7344/-1", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v6("2001:370::10:7344/", ec);
+ ASIO_CHECK(!!ec);
+ make_network_v6("2001:370::10:7344", ec);
+ ASIO_CHECK(!!ec);
+
// prefix length
ASIO_CHECK(make_network_v6("2001:370::10:7344/128").prefix_length() == 128);
ASIO_CHECK(network_v6(make_address_v6("2001:370::10:7344"), 27).prefix_length() == 27);
@@ -220,6 +233,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/network_v6",
- ASIO_TEST_CASE(ip_network_v6_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_network_v6_compile::test)
ASIO_TEST_CASE(ip_network_v6_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/resolver_query_base.cpp b/3rdparty/asio/src/tests/unit/ip/resolver_query_base.cpp
index d9bbd325583..b38f5091b53 100644
--- a/3rdparty/asio/src/tests/unit/ip/resolver_query_base.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/resolver_query_base.cpp
@@ -2,7 +2,7 @@
// resolver_query_base.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/tcp.cpp b/3rdparty/asio/src/tests/unit/ip/tcp.cpp
index 22cee2aa042..2bbdc3a1071 100644
--- a/3rdparty/asio/src/tests/unit/ip/tcp.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/tcp.cpp
@@ -2,7 +2,7 @@
// tcp.cpp
// ~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -20,12 +20,12 @@
#include "asio/ip/tcp.hpp"
#include <cstring>
+#include <functional>
#include "asio/io_context.hpp"
#include "asio/read.hpp"
#include "asio/write.hpp"
#include "../unit_test.hpp"
#include "../archetypes/async_result.hpp"
-#include "../archetypes/deprecated_async_result.hpp"
#include "../archetypes/gettable_socket_option.hpp"
#include "../archetypes/io_control_command.hpp"
#include "../archetypes/settable_socket_option.hpp"
@@ -36,12 +36,6 @@
# include <array>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
//------------------------------------------------------------------------------
// ip_tcp_compile test
@@ -71,6 +65,9 @@ void test()
(void)static_cast<bool>(no_delay1);
(void)static_cast<bool>(!no_delay1);
(void)static_cast<bool>(no_delay1.value());
+
+ ip::tcp::endpoint ep;
+ (void)static_cast<std::size_t>(std::hash<ip::tcp::endpoint>()(ep));
}
catch (std::exception&)
{
@@ -142,66 +139,54 @@ struct connect_handler
{
connect_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
connect_handler(connect_handler&&) {}
private:
connect_handler(const connect_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct wait_handler
{
wait_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
wait_handler(wait_handler&&) {}
private:
wait_handler(const wait_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct send_handler
{
send_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
send_handler(send_handler&&) {}
private:
send_handler(const send_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct receive_handler
{
receive_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
receive_handler(receive_handler&&) {}
private:
receive_handler(const receive_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct write_some_handler
{
write_some_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
write_some_handler(write_some_handler&&) {}
private:
write_some_handler(const write_some_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct read_some_handler
{
read_some_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
read_some_handler(read_some_handler&&) {}
private:
read_some_handler(const read_some_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
void test()
@@ -218,6 +203,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
array<asio::mutable_buffer, 2> mutable_buffers = {{
@@ -234,10 +220,8 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
+ archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
-#if !defined(ASIO_NO_DEPRECATED)
- archetypes::deprecated_lazy_handler dlazy;
-#endif // !defined(ASIO_NO_DEPRECATED)
asio::error_code ec;
// basic_stream_socket constructors.
@@ -253,24 +237,26 @@ void test()
ip::tcp::socket socket6(ioc, ip::tcp::v4(), native_socket1);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#if defined(ASIO_HAS_MOVE)
- ip::tcp::socket socket7(std::move(socket5));
-#endif // defined(ASIO_HAS_MOVE)
+ ip::tcp::socket socket7(ioc_ex);
+ ip::tcp::socket socket8(ioc_ex, ip::tcp::v4());
+ ip::tcp::socket socket9(ioc_ex, ip::tcp::v6());
+ ip::tcp::socket socket10(ioc_ex, ip::tcp::endpoint(ip::tcp::v4(), 0));
+ ip::tcp::socket socket11(ioc_ex, ip::tcp::endpoint(ip::tcp::v6(), 0));
+#if !defined(ASIO_WINDOWS_RUNTIME)
+ ip::tcp::socket::native_handle_type native_socket2
+ = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ ip::tcp::socket socket12(ioc_ex, ip::tcp::v4(), native_socket2);
+#endif // !defined(ASIO_WINDOWS_RUNTIME)
+
+ ip::tcp::socket socket13(std::move(socket5));
// basic_stream_socket operators.
-#if defined(ASIO_HAS_MOVE)
socket1 = ip::tcp::socket(ioc);
socket1 = std::move(socket2);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
ip::tcp::socket::executor_type ex = socket1.get_executor();
(void)ex;
@@ -279,9 +265,9 @@ void test()
ip::tcp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
(void)lowest_layer;
- const ip::tcp::socket& socket8 = socket1;
+ const ip::tcp::socket& socket14 = socket1;
const ip::tcp::socket::lowest_layer_type& lowest_layer2
- = socket8.lowest_layer();
+ = socket14.lowest_layer();
(void)lowest_layer2;
socket1.open(ip::tcp::v4());
@@ -290,12 +276,12 @@ void test()
socket1.open(ip::tcp::v6(), ec);
#if !defined(ASIO_WINDOWS_RUNTIME)
- ip::tcp::socket::native_handle_type native_socket2
- = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- socket1.assign(ip::tcp::v4(), native_socket2);
ip::tcp::socket::native_handle_type native_socket3
= ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- socket1.assign(ip::tcp::v4(), native_socket3, ec);
+ socket1.assign(ip::tcp::v4(), native_socket3);
+ ip::tcp::socket::native_handle_type native_socket4
+ = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ socket1.assign(ip::tcp::v4(), native_socket4, ec);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
bool is_open = socket1.is_open();
@@ -304,9 +290,12 @@ void test()
socket1.close();
socket1.close(ec);
- ip::tcp::socket::native_handle_type native_socket4
+ socket1.release();
+ socket1.release(ec);
+
+ ip::tcp::socket::native_handle_type native_socket5
= socket1.native_handle();
- (void)native_socket4;
+ (void)native_socket5;
socket1.cancel();
socket1.cancel(ec);
@@ -335,18 +324,12 @@ void test()
connect_handler());
socket1.async_connect(ip::tcp::endpoint(ip::tcp::v6(), 0),
connect_handler());
+ socket1.async_connect(ip::tcp::endpoint(ip::tcp::v4(), 0), immediate);
+ socket1.async_connect(ip::tcp::endpoint(ip::tcp::v6(), 0), immediate);
int i1 = socket1.async_connect(ip::tcp::endpoint(ip::tcp::v4(), 0), lazy);
(void)i1;
int i2 = socket1.async_connect(ip::tcp::endpoint(ip::tcp::v6(), 0), lazy);
(void)i2;
-#if !defined(ASIO_NO_DEPRECATED)
- double d1 = socket1.async_connect(
- ip::tcp::endpoint(ip::tcp::v4(), 0), dlazy);
- (void)d1;
- double d2 = socket1.async_connect(
- ip::tcp::endpoint(ip::tcp::v6(), 0), dlazy);
- (void)d2;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.set_option(settable_socket_option1);
socket1.set_option(settable_socket_option1, ec);
@@ -376,10 +359,14 @@ void test()
socket1.native_non_blocking(false, ec);
ip::tcp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
ip::tcp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
ip::tcp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
ip::tcp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -388,12 +375,9 @@ void test()
socket1.wait(socket_base::wait_write, ec);
socket1.async_wait(socket_base::wait_read, wait_handler());
+ socket1.async_wait(socket_base::wait_read, immediate);
int i3 = socket1.async_wait(socket_base::wait_write, lazy);
(void)i3;
-#if !defined(ASIO_NO_DEPRECATED)
- double d3 = socket1.async_wait(socket_base::wait_write, dlazy);
- (void)d3;
-#endif // !defined(ASIO_NO_DEPRECATED)
// basic_stream_socket functions.
@@ -423,6 +407,16 @@ void test()
socket1.async_send(mutable_buffers, in_flags, send_handler());
socket1.async_send(const_buffers, in_flags, send_handler());
socket1.async_send(null_buffers(), in_flags, send_handler());
+ socket1.async_send(buffer(mutable_char_buffer), immediate);
+ socket1.async_send(buffer(const_char_buffer), immediate);
+ socket1.async_send(mutable_buffers, immediate);
+ socket1.async_send(const_buffers, immediate);
+ socket1.async_send(null_buffers(), immediate);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(mutable_buffers, in_flags, immediate);
+ socket1.async_send(const_buffers, in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
int i4 = socket1.async_send(buffer(mutable_char_buffer), lazy);
(void)i4;
int i5 = socket1.async_send(buffer(const_char_buffer), lazy);
@@ -443,29 +437,6 @@ void test()
(void)i12;
int i13 = socket1.async_send(null_buffers(), in_flags, lazy);
(void)i13;
-#if !defined(ASIO_NO_DEPRECATED)
- double d4 = socket1.async_send(buffer(mutable_char_buffer), dlazy);
- (void)d4;
- double d5 = socket1.async_send(buffer(const_char_buffer), dlazy);
- (void)d5;
- double d6 = socket1.async_send(mutable_buffers, dlazy);
- (void)d6;
- double d7 = socket1.async_send(const_buffers, dlazy);
- (void)d7;
- double d8 = socket1.async_send(null_buffers(), dlazy);
- (void)d8;
- double d9 = socket1.async_send(
- buffer(mutable_char_buffer), in_flags, dlazy);
- (void)d9;
- double d10 = socket1.async_send(buffer(const_char_buffer), in_flags, dlazy);
- (void)d10;
- double d11 = socket1.async_send(mutable_buffers, in_flags, dlazy);
- (void)d11;
- double d12 = socket1.async_send(const_buffers, in_flags, dlazy);
- (void)d12;
- double d13 = socket1.async_send(null_buffers(), in_flags, dlazy);
- (void)d13;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(mutable_buffers);
@@ -484,6 +455,12 @@ void test()
receive_handler());
socket1.async_receive(mutable_buffers, in_flags, receive_handler());
socket1.async_receive(null_buffers(), in_flags, receive_handler());
+ socket1.async_receive(buffer(mutable_char_buffer), immediate);
+ socket1.async_receive(mutable_buffers, immediate);
+ socket1.async_receive(null_buffers(), immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_receive(mutable_buffers, in_flags, immediate);
+ socket1.async_receive(null_buffers(), in_flags, immediate);
int i14 = socket1.async_receive(buffer(mutable_char_buffer), lazy);
(void)i14;
int i15 = socket1.async_receive(mutable_buffers, lazy);
@@ -497,21 +474,6 @@ void test()
(void)i18;
int i19 = socket1.async_receive(null_buffers(), in_flags, lazy);
(void)i19;
-#if !defined(ASIO_NO_DEPRECATED)
- double d14 = socket1.async_receive(buffer(mutable_char_buffer), dlazy);
- (void)d14;
- double d15 = socket1.async_receive(mutable_buffers, dlazy);
- (void)d15;
- double d16 = socket1.async_receive(null_buffers(), dlazy);
- (void)d16;
- double d17 = socket1.async_receive(buffer(mutable_char_buffer), in_flags,
- dlazy);
- (void)d17;
- double d18 = socket1.async_receive(mutable_buffers, in_flags, dlazy);
- (void)d18;
- double d19 = socket1.async_receive(null_buffers(), in_flags, dlazy);
- (void)d19;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.write_some(buffer(mutable_char_buffer));
socket1.write_some(buffer(const_char_buffer));
@@ -529,6 +491,11 @@ void test()
socket1.async_write_some(mutable_buffers, write_some_handler());
socket1.async_write_some(const_buffers, write_some_handler());
socket1.async_write_some(null_buffers(), write_some_handler());
+ socket1.async_write_some(buffer(mutable_char_buffer), immediate);
+ socket1.async_write_some(buffer(const_char_buffer), immediate);
+ socket1.async_write_some(mutable_buffers, immediate);
+ socket1.async_write_some(const_buffers, immediate);
+ socket1.async_write_some(null_buffers(), immediate);
int i20 = socket1.async_write_some(buffer(mutable_char_buffer), lazy);
(void)i20;
int i21 = socket1.async_write_some(buffer(const_char_buffer), lazy);
@@ -539,18 +506,6 @@ void test()
(void)i23;
int i24 = socket1.async_write_some(null_buffers(), lazy);
(void)i24;
-#if !defined(ASIO_NO_DEPRECATED)
- double d20 = socket1.async_write_some(buffer(mutable_char_buffer), dlazy);
- (void)d20;
- double d21 = socket1.async_write_some(buffer(const_char_buffer), dlazy);
- (void)d21;
- double d22 = socket1.async_write_some(mutable_buffers, dlazy);
- (void)d22;
- double d23 = socket1.async_write_some(const_buffers, dlazy);
- (void)d23;
- double d24 = socket1.async_write_some(null_buffers(), dlazy);
- (void)d24;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.read_some(buffer(mutable_char_buffer));
socket1.read_some(mutable_buffers);
@@ -562,20 +517,15 @@ void test()
socket1.async_read_some(buffer(mutable_char_buffer), read_some_handler());
socket1.async_read_some(mutable_buffers, read_some_handler());
socket1.async_read_some(null_buffers(), read_some_handler());
+ socket1.async_read_some(buffer(mutable_char_buffer), immediate);
+ socket1.async_read_some(mutable_buffers, immediate);
+ socket1.async_read_some(null_buffers(), immediate);
int i25 = socket1.async_read_some(buffer(mutable_char_buffer), lazy);
(void)i25;
int i26 = socket1.async_read_some(mutable_buffers, lazy);
(void)i26;
int i27 = socket1.async_read_some(null_buffers(), lazy);
(void)i27;
-#if !defined(ASIO_NO_DEPRECATED)
- double d25 = socket1.async_read_some(buffer(mutable_char_buffer), dlazy);
- (void)d25;
- double d26 = socket1.async_read_some(mutable_buffers, dlazy);
- (void)d26;
- double d27 = socket1.async_read_some(null_buffers(), dlazy);
- (void)d27;
-#endif // !defined(ASIO_NO_DEPRECATED)
}
catch (std::exception&)
{
@@ -649,13 +599,9 @@ void test()
using namespace asio;
namespace ip = asio::ip;
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
io_context ioc;
@@ -761,25 +707,20 @@ struct wait_handler
{
wait_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
wait_handler(wait_handler&&) {}
private:
wait_handler(const wait_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct accept_handler
{
accept_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
accept_handler(accept_handler&&) {}
private:
accept_handler(const accept_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
-#if defined(ASIO_HAS_MOVE)
struct move_accept_handler
{
move_accept_handler() {}
@@ -789,7 +730,17 @@ struct move_accept_handler
private:
move_accept_handler(const move_accept_handler&) {}
};
-#endif // defined(ASIO_HAS_MOVE)
+
+struct move_accept_ioc_handler
+{
+ move_accept_ioc_handler() {}
+ void operator()(const asio::error_code&,
+ asio::basic_stream_socket<asio::ip::tcp,
+ asio::io_context::executor_type>) {}
+ move_accept_ioc_handler(move_accept_handler&&) {}
+private:
+ move_accept_ioc_handler(const move_accept_handler&) {}
+};
void test()
{
@@ -799,7 +750,10 @@ void test()
try
{
io_context ioc;
- ip::tcp::socket peer_socket(ioc);
+ const io_context::executor_type ioc_ex = ioc.get_executor();
+ ip::tcp::socket peer_socket1(ioc);
+ asio::basic_stream_socket<ip::tcp,
+ io_context::executor_type> peer_socket2(ioc);
ip::tcp::endpoint peer_endpoint;
archetypes::settable_socket_option<void> settable_socket_option1;
archetypes::settable_socket_option<int> settable_socket_option2;
@@ -808,10 +762,8 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
+ archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
-#if !defined(ASIO_NO_DEPRECATED)
- archetypes::deprecated_lazy_handler dlazy;
-#endif // !defined(ASIO_NO_DEPRECATED)
asio::error_code ec;
// basic_socket_acceptor constructors.
@@ -827,24 +779,26 @@ void test()
ip::tcp::acceptor acceptor6(ioc, ip::tcp::v4(), native_acceptor1);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#if defined(ASIO_HAS_MOVE)
- ip::tcp::acceptor acceptor7(std::move(acceptor5));
-#endif // defined(ASIO_HAS_MOVE)
+ ip::tcp::acceptor acceptor7(ioc_ex);
+ ip::tcp::acceptor acceptor8(ioc_ex, ip::tcp::v4());
+ ip::tcp::acceptor acceptor9(ioc_ex, ip::tcp::v6());
+ ip::tcp::acceptor acceptor10(ioc_ex, ip::tcp::endpoint(ip::tcp::v4(), 0));
+ ip::tcp::acceptor acceptor11(ioc_ex, ip::tcp::endpoint(ip::tcp::v6(), 0));
+#if !defined(ASIO_WINDOWS_RUNTIME)
+ ip::tcp::acceptor::native_handle_type native_acceptor2
+ = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ ip::tcp::acceptor acceptor12(ioc_ex, ip::tcp::v4(), native_acceptor2);
+#endif // !defined(ASIO_WINDOWS_RUNTIME)
+
+ ip::tcp::acceptor acceptor13(std::move(acceptor5));
// basic_socket_acceptor operators.
-#if defined(ASIO_HAS_MOVE)
acceptor1 = ip::tcp::acceptor(ioc);
acceptor1 = std::move(acceptor2);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = acceptor1.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
ip::tcp::acceptor::executor_type ex = acceptor1.get_executor();
(void)ex;
@@ -856,12 +810,12 @@ void test()
acceptor1.open(ip::tcp::v6(), ec);
#if !defined(ASIO_WINDOWS_RUNTIME)
- ip::tcp::acceptor::native_handle_type native_acceptor2
- = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- acceptor1.assign(ip::tcp::v4(), native_acceptor2);
ip::tcp::acceptor::native_handle_type native_acceptor3
= ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- acceptor1.assign(ip::tcp::v4(), native_acceptor3, ec);
+ acceptor1.assign(ip::tcp::v4(), native_acceptor3);
+ ip::tcp::acceptor::native_handle_type native_acceptor4
+ = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ acceptor1.assign(ip::tcp::v4(), native_acceptor4, ec);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
bool is_open = acceptor1.is_open();
@@ -870,9 +824,12 @@ void test()
acceptor1.close();
acceptor1.close(ec);
- ip::tcp::acceptor::native_handle_type native_acceptor4
+ acceptor1.release();
+ acceptor1.release(ec);
+
+ ip::tcp::acceptor::native_handle_type native_acceptor5
= acceptor1.native_handle();
- (void)native_acceptor4;
+ (void)native_acceptor5;
acceptor1.cancel();
acceptor1.cancel(ec);
@@ -910,51 +867,74 @@ void test()
acceptor1.native_non_blocking(false, ec);
ip::tcp::endpoint endpoint1 = acceptor1.local_endpoint();
+ (void)endpoint1;
ip::tcp::endpoint endpoint2 = acceptor1.local_endpoint(ec);
+ (void)endpoint2;
acceptor1.wait(socket_base::wait_read);
acceptor1.wait(socket_base::wait_write, ec);
acceptor1.async_wait(socket_base::wait_read, wait_handler());
+ acceptor1.async_wait(socket_base::wait_read, immediate);
int i1 = acceptor1.async_wait(socket_base::wait_write, lazy);
(void)i1;
-#if !defined(ASIO_NO_DEPRECATED)
- double d1 = acceptor1.async_wait(socket_base::wait_write, dlazy);
- (void)d1;
-#endif // !defined(ASIO_NO_DEPRECATED)
- acceptor1.accept(peer_socket);
- acceptor1.accept(peer_socket, ec);
- acceptor1.accept(peer_socket, peer_endpoint);
- acceptor1.accept(peer_socket, peer_endpoint, ec);
-
-#if defined(ASIO_HAS_MOVE)
- peer_socket = acceptor1.accept();
- peer_socket = acceptor1.accept(ioc);
- peer_socket = acceptor1.accept(peer_endpoint);
- peer_socket = acceptor1.accept(ioc, peer_endpoint);
- (void)peer_socket;
-#endif // defined(ASIO_HAS_MOVE)
-
- acceptor1.async_accept(peer_socket, accept_handler());
- acceptor1.async_accept(peer_socket, peer_endpoint, accept_handler());
- int i2 = acceptor1.async_accept(peer_socket, lazy);
+ acceptor1.accept(peer_socket1);
+ acceptor1.accept(peer_socket1, ec);
+ acceptor1.accept(peer_socket1, peer_endpoint);
+ acceptor1.accept(peer_socket1, peer_endpoint, ec);
+
+ acceptor1.accept(peer_socket2);
+ acceptor1.accept(peer_socket2, ec);
+ acceptor1.accept(peer_socket2, peer_endpoint);
+ acceptor1.accept(peer_socket2, peer_endpoint, ec);
+
+ peer_socket1 = acceptor1.accept();
+ peer_socket1 = acceptor1.accept(ioc);
+ peer_socket1 = acceptor1.accept(ioc_ex);
+ peer_socket1 = acceptor1.accept(peer_endpoint);
+ peer_socket1 = acceptor1.accept(ioc, peer_endpoint);
+ peer_socket1 = acceptor1.accept(ioc_ex, peer_endpoint);
+ (void)peer_socket1;
+
+ peer_socket2 = acceptor1.accept(ioc);
+ peer_socket2 = acceptor1.accept(ioc_ex);
+ peer_socket2 = acceptor1.accept(ioc, peer_endpoint);
+ peer_socket2 = acceptor1.accept(ioc_ex, peer_endpoint);
+ (void)peer_socket2;
+
+ acceptor1.async_accept(peer_socket1, accept_handler());
+ acceptor1.async_accept(peer_socket1, peer_endpoint, accept_handler());
+ acceptor1.async_accept(peer_socket1, immediate);
+ acceptor1.async_accept(peer_socket1, peer_endpoint, immediate);
+ int i2 = acceptor1.async_accept(peer_socket1, lazy);
(void)i2;
- int i3 = acceptor1.async_accept(peer_socket, peer_endpoint, lazy);
+ int i3 = acceptor1.async_accept(peer_socket1, peer_endpoint, lazy);
(void)i3;
-#if !defined(ASIO_NO_DEPRECATED)
- double d2 = acceptor1.async_accept(peer_socket, dlazy);
- (void)d2;
- double d3 = acceptor1.async_accept(peer_socket, peer_endpoint, dlazy);
- (void)d3;
-#endif // !defined(ASIO_NO_DEPRECATED)
-#if defined(ASIO_HAS_MOVE)
+ acceptor1.async_accept(peer_socket2, accept_handler());
+ acceptor1.async_accept(peer_socket2, peer_endpoint, accept_handler());
+ acceptor1.async_accept(peer_socket2, immediate);
+ acceptor1.async_accept(peer_socket2, peer_endpoint, immediate);
+ int i4 = acceptor1.async_accept(peer_socket2, lazy);
+ (void)i4;
+ int i5 = acceptor1.async_accept(peer_socket2, peer_endpoint, lazy);
+ (void)i5;
+
acceptor1.async_accept(move_accept_handler());
acceptor1.async_accept(ioc, move_accept_handler());
+ acceptor1.async_accept(ioc_ex, move_accept_handler());
+ acceptor1.async_accept(ioc_ex, move_accept_ioc_handler());
acceptor1.async_accept(peer_endpoint, move_accept_handler());
acceptor1.async_accept(ioc, peer_endpoint, move_accept_handler());
-#endif // defined(ASIO_HAS_MOVE)
+ acceptor1.async_accept(ioc_ex, peer_endpoint, move_accept_handler());
+ acceptor1.async_accept(ioc_ex, peer_endpoint, move_accept_ioc_handler());
+ acceptor1.async_accept(immediate);
+ acceptor1.async_accept(ioc, immediate);
+ acceptor1.async_accept(ioc_ex, immediate);
+ acceptor1.async_accept(peer_endpoint, immediate);
+ acceptor1.async_accept(ioc, peer_endpoint, immediate);
+ acceptor1.async_accept(ioc_ex, peer_endpoint, immediate);
}
catch (std::exception&)
{
@@ -1056,13 +1036,23 @@ struct resolve_handler
resolve_handler() {}
void operator()(const asio::error_code&,
asio::ip::tcp::resolver::results_type) {}
-#if defined(ASIO_HAS_MOVE)
resolve_handler(resolve_handler&&) {}
private:
resolve_handler(const resolve_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
+#if !defined(ASIO_NO_DEPRECATED)
+struct legacy_resolve_handler
+{
+ legacy_resolve_handler() {}
+ void operator()(const asio::error_code&,
+ asio::ip::tcp::resolver::iterator) {}
+ legacy_resolve_handler(legacy_resolve_handler&&) {}
+private:
+ legacy_resolve_handler(const legacy_resolve_handler&);
+};
+#endif // !defined(ASIO_NO_DEPRECATED)
+
void test()
{
using namespace asio;
@@ -1071,10 +1061,8 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
archetypes::lazy_handler lazy;
-#if !defined(ASIO_NO_DEPRECATED)
- archetypes::deprecated_lazy_handler dlazy;
-#endif // !defined(ASIO_NO_DEPRECATED)
asio::error_code ec;
#if !defined(ASIO_NO_DEPRECATED)
ip::tcp::resolver::query q(ip::tcp::v4(), "localhost", "0");
@@ -1084,25 +1072,17 @@ void test()
// basic_resolver constructors.
ip::tcp::resolver resolver(ioc);
+ ip::tcp::resolver resolver2(ioc_ex);
-#if defined(ASIO_HAS_MOVE)
- ip::tcp::resolver resolver2(std::move(resolver));
-#endif // defined(ASIO_HAS_MOVE)
+ ip::tcp::resolver resolver3(std::move(resolver));
// basic_resolver operators.
-#if defined(ASIO_HAS_MOVE)
resolver = ip::tcp::resolver(ioc);
- resolver = std::move(resolver2);
-#endif // defined(ASIO_HAS_MOVE)
+ resolver = std::move(resolver3);
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = resolver.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
ip::tcp::resolver::executor_type ex = resolver.get_executor();
(void)ex;
@@ -1156,57 +1136,51 @@ void test()
#if !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(q, resolve_handler());
+ resolver.async_resolve(q, legacy_resolve_handler());
int i1 = resolver.async_resolve(q, lazy);
(void)i1;
- double d1 = resolver.async_resolve(q, dlazy);
- (void)d1;
#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve("", "", resolve_handler());
- int i2 = resolver.async_resolve("", "", lazy);
- (void)i2;
#if !defined(ASIO_NO_DEPRECATED)
- double d2 = resolver.async_resolve("", "", dlazy);
- (void)d2;
+ resolver.async_resolve("", "", legacy_resolve_handler());
#endif // !defined(ASIO_NO_DEPRECATED)
+ int i2 = resolver.async_resolve("", "", lazy);
+ (void)i2;
resolver.async_resolve("", "",
ip::tcp::resolver::flags(), resolve_handler());
+#if !defined(ASIO_NO_DEPRECATED)
+ resolver.async_resolve("", "",
+ ip::tcp::resolver::flags(), legacy_resolve_handler());
+#endif // !defined(ASIO_NO_DEPRECATED)
int i3 = resolver.async_resolve("", "",
ip::tcp::resolver::flags(), lazy);
(void)i3;
-#if !defined(ASIO_NO_DEPRECATED)
- double d3 = resolver.async_resolve("", "",
- ip::tcp::resolver::flags(), dlazy);
- (void)d3;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(ip::tcp::v4(), "", "", resolve_handler());
- int i4 = resolver.async_resolve(ip::tcp::v4(), "", "", lazy);
- (void)i4;
#if !defined(ASIO_NO_DEPRECATED)
- double d4 = resolver.async_resolve(ip::tcp::v4(), "", "", dlazy);
- (void)d4;
+ resolver.async_resolve(ip::tcp::v4(), "", "", legacy_resolve_handler());
#endif // !defined(ASIO_NO_DEPRECATED)
+ int i4 = resolver.async_resolve(ip::tcp::v4(), "", "", lazy);
+ (void)i4;
resolver.async_resolve(ip::tcp::v4(),
"", "", ip::tcp::resolver::flags(), resolve_handler());
+#if !defined(ASIO_NO_DEPRECATED)
+ resolver.async_resolve(ip::tcp::v4(),
+ "", "", ip::tcp::resolver::flags(), legacy_resolve_handler());
+#endif // !defined(ASIO_NO_DEPRECATED)
int i5 = resolver.async_resolve(ip::tcp::v4(),
"", "", ip::tcp::resolver::flags(), lazy);
(void)i5;
-#if !defined(ASIO_NO_DEPRECATED)
- double d5 = resolver.async_resolve(ip::tcp::v4(),
- "", "", ip::tcp::resolver::flags(), dlazy);
- (void)d5;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(e, resolve_handler());
- int i6 = resolver.async_resolve(e, lazy);
- (void)i6;
#if !defined(ASIO_NO_DEPRECATED)
- double d6 = resolver.async_resolve(e, dlazy);
- (void)d6;
+ resolver.async_resolve(e, legacy_resolve_handler());
#endif // !defined(ASIO_NO_DEPRECATED)
+ int i6 = resolver.async_resolve(e, lazy);
+ (void)i6;
}
catch (std::exception&)
{
@@ -1241,9 +1215,7 @@ void test()
const ip::basic_resolver_entry<ip::tcp> entry1;
ip::basic_resolver_entry<ip::tcp> entry2(endpoint, host_name, service_name);
ip::basic_resolver_entry<ip::tcp> entry3(entry1);
-#if defined(ASIO_HAS_MOVE)
ip::basic_resolver_entry<ip::tcp> entry4(std::move(entry2));
-#endif // defined(ASIO_HAS_MOVE)
// basic_resolver_entry functions.
@@ -1304,19 +1276,15 @@ void test()
ip::tcp::iostream ios1;
-#if defined(ASIO_HAS_MOVE)
ip::tcp::iostream ios2(std::move(sock));
-#endif // defined(ASIO_HAS_MOVE)
ip::tcp::iostream ios3("hostname", "service");
// basic_socket_iostream operators.
-#if defined(ASIO_HAS_MOVE)
ios1 = ip::tcp::iostream();
ios2 = std::move(ios1);
-#endif // defined(ASIO_HAS_MOVE)
// basic_socket_iostream members.
@@ -1326,14 +1294,10 @@ void test()
(void)static_cast<std::streambuf*>(ios1.rdbuf());
-#if defined(ASIO_ENABLE_OLD_SERVICES)
- basic_socket<ip::tcp, stream_socket_service<ip::tcp> >& sref = ios1.socket();
-#else // defined(ASIO_ENABLE_OLD_SERVICES)
basic_socket<ip::tcp>& sref = ios1.socket();
-#endif // defined(ASIO_ENABLE_OLD_SERVICES)
(void)sref;
- error_code ec = ios1.error();
+ asio::error_code ec = ios1.error();
(void)ec;
ip::tcp::iostream::time_point tp = ios1.expiry();
@@ -1341,7 +1305,7 @@ void test()
ios1.expires_at(tp);
- ip::tcp::iostream::duration d;
+ ip::tcp::iostream::duration d = ip::tcp::iostream::duration();
ios1.expires_after(d);
// iostream operators.
@@ -1359,14 +1323,14 @@ void test()
ASIO_TEST_SUITE
(
"ip/tcp",
- ASIO_TEST_CASE(ip_tcp_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_tcp_compile::test)
ASIO_TEST_CASE(ip_tcp_runtime::test)
- ASIO_TEST_CASE(ip_tcp_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_tcp_socket_compile::test)
ASIO_TEST_CASE(ip_tcp_socket_runtime::test)
- ASIO_TEST_CASE(ip_tcp_acceptor_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_tcp_acceptor_compile::test)
ASIO_TEST_CASE(ip_tcp_acceptor_runtime::test)
- ASIO_TEST_CASE(ip_tcp_resolver_compile::test)
- ASIO_TEST_CASE(ip_tcp_resolver_entry_compile::test)
- ASIO_TEST_CASE(ip_tcp_resolver_entry_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_tcp_resolver_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_tcp_resolver_entry_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_tcp_resolver_entry_compile::test)
ASIO_COMPILE_TEST_CASE(ip_tcp_iostream_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/udp.cpp b/3rdparty/asio/src/tests/unit/ip/udp.cpp
index 48f9276ce4b..ae67f9c9c73 100644
--- a/3rdparty/asio/src/tests/unit/ip/udp.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/udp.cpp
@@ -2,7 +2,7 @@
// udp.cpp
// ~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,20 +17,14 @@
#include "asio/ip/udp.hpp"
#include <cstring>
+#include <functional>
#include "asio/io_context.hpp"
#include "../unit_test.hpp"
#include "../archetypes/async_result.hpp"
-#include "../archetypes/deprecated_async_result.hpp"
#include "../archetypes/gettable_socket_option.hpp"
#include "../archetypes/io_control_command.hpp"
#include "../archetypes/settable_socket_option.hpp"
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
//------------------------------------------------------------------------------
// ip_udp_socket_compile test
@@ -44,44 +38,36 @@ struct connect_handler
{
connect_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
connect_handler(connect_handler&&) {}
private:
connect_handler(const connect_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct wait_handler
{
wait_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
wait_handler(wait_handler&&) {}
private:
wait_handler(const wait_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct send_handler
{
send_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
send_handler(send_handler&&) {}
private:
send_handler(const send_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct receive_handler
{
receive_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
receive_handler(receive_handler&&) {}
private:
receive_handler(const receive_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
void test()
@@ -92,6 +78,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
socket_base::message_flags in_flags = 0;
@@ -102,10 +89,8 @@ void test()
archetypes::gettable_socket_option<int> gettable_socket_option2;
archetypes::gettable_socket_option<double> gettable_socket_option3;
archetypes::io_control_command io_control_command;
+ archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
-#if !defined(ASIO_NO_DEPRECATED)
- archetypes::deprecated_lazy_handler dlazy;
-#endif // !defined(ASIO_NO_DEPRECATED)
asio::error_code ec;
// basic_datagram_socket constructors.
@@ -121,24 +106,26 @@ void test()
ip::udp::socket socket6(ioc, ip::udp::v4(), native_socket1);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#if defined(ASIO_HAS_MOVE)
- ip::udp::socket socket7(std::move(socket6));
-#endif // defined(ASIO_HAS_MOVE)
+ ip::udp::socket socket7(ioc_ex);
+ ip::udp::socket socket8(ioc_ex, ip::udp::v4());
+ ip::udp::socket socket9(ioc_ex, ip::udp::v6());
+ ip::udp::socket socket10(ioc_ex, ip::udp::endpoint(ip::udp::v4(), 0));
+ ip::udp::socket socket11(ioc_ex, ip::udp::endpoint(ip::udp::v6(), 0));
+#if !defined(ASIO_WINDOWS_RUNTIME)
+ ip::udp::socket::native_handle_type native_socket2
+ = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ ip::udp::socket socket12(ioc_ex, ip::udp::v4(), native_socket2);
+#endif // !defined(ASIO_WINDOWS_RUNTIME)
+
+ ip::udp::socket socket13(std::move(socket6));
// basic_datagram_socket operators.
-#if defined(ASIO_HAS_MOVE)
socket1 = ip::udp::socket(ioc);
socket1 = std::move(socket2);
-#endif // defined(ASIO_HAS_MOVE)
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
ip::udp::socket::executor_type ex = socket1.get_executor();
(void)ex;
@@ -147,9 +134,9 @@ void test()
ip::udp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
(void)lowest_layer;
- const ip::udp::socket& socket8 = socket1;
+ const ip::udp::socket& socket14 = socket1;
const ip::udp::socket::lowest_layer_type& lowest_layer2
- = socket8.lowest_layer();
+ = socket14.lowest_layer();
(void)lowest_layer2;
socket1.open(ip::udp::v4());
@@ -158,12 +145,12 @@ void test()
socket1.open(ip::udp::v6(), ec);
#if !defined(ASIO_WINDOWS_RUNTIME)
- ip::udp::socket::native_handle_type native_socket2
- = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- socket1.assign(ip::udp::v4(), native_socket2);
ip::udp::socket::native_handle_type native_socket3
= ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- socket1.assign(ip::udp::v4(), native_socket3, ec);
+ socket1.assign(ip::udp::v4(), native_socket3);
+ ip::udp::socket::native_handle_type native_socket4
+ = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ socket1.assign(ip::udp::v4(), native_socket4, ec);
#endif // !defined(ASIO_WINDOWS_RUNTIME)
bool is_open = socket1.is_open();
@@ -172,9 +159,12 @@ void test()
socket1.close();
socket1.close(ec);
- ip::udp::socket::native_handle_type native_socket4
+ socket1.release();
+ socket1.release(ec);
+
+ ip::udp::socket::native_handle_type native_socket5
= socket1.native_handle();
- (void)native_socket4;
+ (void)native_socket5;
socket1.cancel();
socket1.cancel(ec);
@@ -203,18 +193,12 @@ void test()
connect_handler());
socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0),
connect_handler());
+ socket1.async_connect(ip::udp::endpoint(ip::udp::v4(), 0), immediate);
+ socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0), immediate);
int i1 = socket1.async_connect(ip::udp::endpoint(ip::udp::v4(), 0), lazy);
(void)i1;
int i2 = socket1.async_connect(ip::udp::endpoint(ip::udp::v6(), 0), lazy);
(void)i2;
-#if !defined(ASIO_NO_DEPRECATED)
- double d1 = socket1.async_connect(
- ip::udp::endpoint(ip::udp::v4(), 0), dlazy);
- (void)d1;
- double d2 = socket1.async_connect(
- ip::udp::endpoint(ip::udp::v6(), 0), dlazy);
- (void)d2;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.set_option(settable_socket_option1);
socket1.set_option(settable_socket_option1, ec);
@@ -244,10 +228,14 @@ void test()
socket1.native_non_blocking(false, ec);
ip::udp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
ip::udp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
ip::udp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
ip::udp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -256,12 +244,9 @@ void test()
socket1.wait(socket_base::wait_write, ec);
socket1.async_wait(socket_base::wait_read, wait_handler());
+ socket1.async_wait(socket_base::wait_read, immediate);
int i3 = socket1.async_wait(socket_base::wait_write, lazy);
(void)i3;
-#if !defined(ASIO_NO_DEPRECATED)
- double d3 = socket1.async_wait(socket_base::wait_write, dlazy);
- (void)d3;
-#endif // !defined(ASIO_NO_DEPRECATED)
// basic_datagram_socket functions.
@@ -281,6 +266,12 @@ void test()
socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler());
socket1.async_send(buffer(const_char_buffer), in_flags, send_handler());
socket1.async_send(null_buffers(), in_flags, send_handler());
+ socket1.async_send(buffer(mutable_char_buffer), immediate);
+ socket1.async_send(buffer(const_char_buffer), immediate);
+ socket1.async_send(null_buffers(), immediate);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
int i4 = socket1.async_send(buffer(mutable_char_buffer), lazy);
(void)i4;
int i5 = socket1.async_send(buffer(const_char_buffer), lazy);
@@ -293,21 +284,6 @@ void test()
(void)i8;
int i9 = socket1.async_send(null_buffers(), in_flags, lazy);
(void)i9;
-#if !defined(ASIO_NO_DEPRECATED)
- double d4 = socket1.async_send(buffer(mutable_char_buffer), dlazy);
- (void)d4;
- double d5 = socket1.async_send(buffer(const_char_buffer), dlazy);
- (void)d5;
- double d6 = socket1.async_send(null_buffers(), dlazy);
- (void)d6;
- double d7 = socket1.async_send(
- buffer(mutable_char_buffer), in_flags, dlazy);
- (void)d7;
- double d8 = socket1.async_send(buffer(const_char_buffer), in_flags, dlazy);
- (void)d8;
- double d9 = socket1.async_send(null_buffers(), in_flags, dlazy);
- (void)d9;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.send_to(buffer(mutable_char_buffer),
ip::udp::endpoint(ip::udp::v4(), 0));
@@ -370,6 +346,30 @@ void test()
ip::udp::endpoint(ip::udp::v4(), 0), in_flags, send_handler());
socket1.async_send_to(null_buffers(),
ip::udp::endpoint(ip::udp::v6(), 0), in_flags, send_handler());
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::udp::endpoint(ip::udp::v4(), 0), immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::udp::endpoint(ip::udp::v6(), 0), immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::udp::endpoint(ip::udp::v4(), 0), immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::udp::endpoint(ip::udp::v6(), 0), immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::udp::endpoint(ip::udp::v4(), 0), immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::udp::endpoint(ip::udp::v6(), 0), immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::udp::endpoint(ip::udp::v4(), 0), in_flags, immediate);
+ socket1.async_send_to(buffer(mutable_char_buffer),
+ ip::udp::endpoint(ip::udp::v6(), 0), in_flags, immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::udp::endpoint(ip::udp::v4(), 0), in_flags, immediate);
+ socket1.async_send_to(buffer(const_char_buffer),
+ ip::udp::endpoint(ip::udp::v6(), 0), in_flags, immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::udp::endpoint(ip::udp::v4(), 0), in_flags, immediate);
+ socket1.async_send_to(null_buffers(),
+ ip::udp::endpoint(ip::udp::v6(), 0), in_flags, immediate);
int i10 = socket1.async_send_to(buffer(mutable_char_buffer),
ip::udp::endpoint(ip::udp::v4(), 0), lazy);
(void)i10;
@@ -406,44 +406,6 @@ void test()
int i21 = socket1.async_send_to(null_buffers(),
ip::udp::endpoint(ip::udp::v6(), 0), in_flags, lazy);
(void)i21;
-#if !defined(ASIO_NO_DEPRECATED)
- double d10 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::udp::endpoint(ip::udp::v4(), 0), dlazy);
- (void)d10;
- double d11 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::udp::endpoint(ip::udp::v6(), 0), dlazy);
- (void)d11;
- double d12 = socket1.async_send_to(buffer(const_char_buffer),
- ip::udp::endpoint(ip::udp::v4(), 0), dlazy);
- (void)d12;
- double d13 = socket1.async_send_to(buffer(const_char_buffer),
- ip::udp::endpoint(ip::udp::v6(), 0), dlazy);
- (void)d13;
- double d14 = socket1.async_send_to(null_buffers(),
- ip::udp::endpoint(ip::udp::v4(), 0), dlazy);
- (void)d14;
- double d15 = socket1.async_send_to(null_buffers(),
- ip::udp::endpoint(ip::udp::v6(), 0), dlazy);
- (void)d15;
- double d16 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::udp::endpoint(ip::udp::v4(), 0), in_flags, dlazy);
- (void)d16;
- double d17 = socket1.async_send_to(buffer(mutable_char_buffer),
- ip::udp::endpoint(ip::udp::v6(), 0), in_flags, dlazy);
- (void)d17;
- double d18 = socket1.async_send_to(buffer(const_char_buffer),
- ip::udp::endpoint(ip::udp::v4(), 0), in_flags, dlazy);
- (void)d18;
- double d19 = socket1.async_send_to(buffer(const_char_buffer),
- ip::udp::endpoint(ip::udp::v6(), 0), in_flags, dlazy);
- (void)d19;
- double d20 = socket1.async_send_to(null_buffers(),
- ip::udp::endpoint(ip::udp::v4(), 0), in_flags, dlazy);
- (void)d20;
- double d21 = socket1.async_send_to(null_buffers(),
- ip::udp::endpoint(ip::udp::v6(), 0), in_flags, dlazy);
- (void)d21;
-#endif // !defined(ASIO_NO_DEPRECATED)
socket1.receive(buffer(mutable_char_buffer));
socket1.receive(null_buffers());
@@ -457,6 +419,10 @@ void test()
socket1.async_receive(buffer(mutable_char_buffer), in_flags,
receive_handler());
socket1.async_receive(null_buffers(), in_flags, receive_handler());
+ socket1.async_receive(buffer(mutable_char_buffer), immediate);
+ socket1.async_receive(null_buffers(), immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_receive(null_buffers(), in_flags, immediate);
int i22 = socket1.async_receive(buffer(mutable_char_buffer), lazy);
(void)i22;
int i23 = socket1.async_receive(null_buffers(), lazy);
@@ -466,17 +432,6 @@ void test()
(void)i24;
int i25 = socket1.async_receive(null_buffers(), in_flags, lazy);
(void)i25;
-#if !defined(ASIO_NO_DEPRECATED)
- double d22 = socket1.async_receive(buffer(mutable_char_buffer), dlazy);
- (void)d22;
- double d23 = socket1.async_receive(null_buffers(), dlazy);
- (void)d23;
- double d24 = socket1.async_receive(buffer(mutable_char_buffer),
- in_flags, dlazy);
- (void)d24;
- double d25 = socket1.async_receive(null_buffers(), in_flags, dlazy);
- (void)d25;
-#endif // !defined(ASIO_NO_DEPRECATED)
ip::udp::endpoint endpoint;
socket1.receive_from(buffer(mutable_char_buffer), endpoint);
@@ -494,6 +449,14 @@ void test()
endpoint, in_flags, receive_handler());
socket1.async_receive_from(null_buffers(),
endpoint, in_flags, receive_handler());
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, immediate);
+ socket1.async_receive_from(buffer(mutable_char_buffer),
+ endpoint, in_flags, immediate);
+ socket1.async_receive_from(null_buffers(),
+ endpoint, in_flags, immediate);
int i26 = socket1.async_receive_from(buffer(mutable_char_buffer),
endpoint, lazy);
(void)i26;
@@ -506,20 +469,6 @@ void test()
int i29 = socket1.async_receive_from(null_buffers(),
endpoint, in_flags, lazy);
(void)i29;
-#if !defined(ASIO_NO_DEPRECATED)
- double d26 = socket1.async_receive_from(buffer(mutable_char_buffer),
- endpoint, dlazy);
- (void)d26;
- double d27 = socket1.async_receive_from(null_buffers(),
- endpoint, dlazy);
- (void)d27;
- double d28 = socket1.async_receive_from(buffer(mutable_char_buffer),
- endpoint, in_flags, dlazy);
- (void)d28;
- double d29 = socket1.async_receive_from(null_buffers(),
- endpoint, in_flags, dlazy);
- (void)d29;
-#endif // !defined(ASIO_NO_DEPRECATED)
}
catch (std::exception&)
{
@@ -556,13 +505,9 @@ void test()
using namespace asio;
namespace ip = asio::ip;
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
io_context ioc;
@@ -613,11 +558,9 @@ struct resolve_handler
resolve_handler() {}
void operator()(const asio::error_code&,
asio::ip::udp::resolver::results_type) {}
-#if defined(ASIO_HAS_MOVE)
resolve_handler(resolve_handler&&) {}
private:
resolve_handler(const resolve_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
void test()
@@ -628,10 +571,8 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
archetypes::lazy_handler lazy;
-#if !defined(ASIO_NO_DEPRECATED)
- archetypes::deprecated_lazy_handler dlazy;
-#endif // !defined(ASIO_NO_DEPRECATED)
asio::error_code ec;
#if !defined(ASIO_NO_DEPRECATED)
ip::udp::resolver::query q(ip::udp::v4(), "localhost", "0");
@@ -641,25 +582,17 @@ void test()
// basic_resolver constructors.
ip::udp::resolver resolver(ioc);
+ ip::udp::resolver resolver2(ioc_ex);
-#if defined(ASIO_HAS_MOVE)
- ip::udp::resolver resolver2(std::move(resolver));
-#endif // defined(ASIO_HAS_MOVE)
+ ip::udp::resolver resolver3(std::move(resolver));
// basic_resolver operators.
-#if defined(ASIO_HAS_MOVE)
resolver = ip::udp::resolver(ioc);
- resolver = std::move(resolver2);
-#endif // defined(ASIO_HAS_MOVE)
+ resolver = std::move(resolver3);
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = resolver.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
ip::udp::resolver::executor_type ex = resolver.get_executor();
(void)ex;
@@ -715,55 +648,31 @@ void test()
resolver.async_resolve(q, resolve_handler());
int i1 = resolver.async_resolve(q, lazy);
(void)i1;
- double d1 = resolver.async_resolve(q, dlazy);
- (void)d1;
#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve("", "", resolve_handler());
int i2 = resolver.async_resolve("", "", lazy);
(void)i2;
-#if !defined(ASIO_NO_DEPRECATED)
- double d2 = resolver.async_resolve("", "", dlazy);
- (void)d2;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve("", "",
ip::udp::resolver::flags(), resolve_handler());
int i3 = resolver.async_resolve("", "",
ip::udp::resolver::flags(), lazy);
(void)i3;
-#if !defined(ASIO_NO_DEPRECATED)
- double d3 = resolver.async_resolve("", "",
- ip::udp::resolver::flags(), dlazy);
- (void)d3;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(ip::udp::v4(), "", "", resolve_handler());
int i4 = resolver.async_resolve(ip::udp::v4(), "", "", lazy);
(void)i4;
-#if !defined(ASIO_NO_DEPRECATED)
- double d4 = resolver.async_resolve(ip::udp::v4(), "", "", dlazy);
- (void)d4;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(ip::udp::v4(),
"", "", ip::udp::resolver::flags(), resolve_handler());
int i5 = resolver.async_resolve(ip::udp::v4(),
"", "", ip::udp::resolver::flags(), lazy);
(void)i5;
-#if !defined(ASIO_NO_DEPRECATED)
- double d5 = resolver.async_resolve(ip::udp::v4(),
- "", "", ip::udp::resolver::flags(), dlazy);
- (void)d5;
-#endif // !defined(ASIO_NO_DEPRECATED)
resolver.async_resolve(e, resolve_handler());
int i6 = resolver.async_resolve(e, lazy);
(void)i6;
-#if !defined(ASIO_NO_DEPRECATED)
- double d6 = resolver.async_resolve(e, dlazy);
- (void)d6;
-#endif // !defined(ASIO_NO_DEPRECATED)
}
catch (std::exception&)
{
@@ -777,7 +686,7 @@ void test()
ASIO_TEST_SUITE
(
"ip/udp",
- ASIO_TEST_CASE(ip_udp_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_udp_socket_compile::test)
ASIO_TEST_CASE(ip_udp_socket_runtime::test)
- ASIO_TEST_CASE(ip_udp_resolver_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_udp_resolver_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/unicast.cpp b/3rdparty/asio/src/tests/unit/ip/unicast.cpp
index 669e2727ceb..db3497f6e1c 100644
--- a/3rdparty/asio/src/tests/unit/ip/unicast.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/unicast.cpp
@@ -2,7 +2,7 @@
// unicast.cpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -166,6 +166,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/unicast",
- ASIO_TEST_CASE(ip_unicast_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_unicast_compile::test)
ASIO_TEST_CASE(ip_unicast_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ip/v6_only.cpp b/3rdparty/asio/src/tests/unit/ip/v6_only.cpp
index 951540f889b..ba37fdb3954 100644
--- a/3rdparty/asio/src/tests/unit/ip/v6_only.cpp
+++ b/3rdparty/asio/src/tests/unit/ip/v6_only.cpp
@@ -2,7 +2,7 @@
// v6_only.cpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -130,6 +130,6 @@ void test()
ASIO_TEST_SUITE
(
"ip/v6_only",
- ASIO_TEST_CASE(ip_v6_only_compile::test)
+ ASIO_COMPILE_TEST_CASE(ip_v6_only_compile::test)
ASIO_TEST_CASE(ip_v6_only_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/is_read_buffered.cpp b/3rdparty/asio/src/tests/unit/is_read_buffered.cpp
index 151e483a020..031cd0fb34d 100644
--- a/3rdparty/asio/src/tests/unit/is_read_buffered.cpp
+++ b/3rdparty/asio/src/tests/unit/is_read_buffered.cpp
@@ -2,7 +2,7 @@
// is_read_buffered.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/is_write_buffered.cpp b/3rdparty/asio/src/tests/unit/is_write_buffered.cpp
index 165f6e74080..df7a9c86d79 100644
--- a/3rdparty/asio/src/tests/unit/is_write_buffered.cpp
+++ b/3rdparty/asio/src/tests/unit/is_write_buffered.cpp
@@ -2,7 +2,7 @@
// is_write_buffered.cpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/local/.gitignore b/3rdparty/asio/src/tests/unit/local/.gitignore
deleted file mode 100644
index f2d0faff70d..00000000000
--- a/3rdparty/asio/src/tests/unit/local/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*.ilk
-*.manifest
-*.pdb
-*.tds
-basic_endpoint
-connect_pair
-datagram_protocol
-stream_protocol
diff --git a/3rdparty/asio/src/tests/unit/local/basic_endpoint.cpp b/3rdparty/asio/src/tests/unit/local/basic_endpoint.cpp
index aa76637ab1e..855888e52c9 100644
--- a/3rdparty/asio/src/tests/unit/local/basic_endpoint.cpp
+++ b/3rdparty/asio/src/tests/unit/local/basic_endpoint.cpp
@@ -2,7 +2,7 @@
// basic_endpoint.cpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/local/connect_pair.cpp b/3rdparty/asio/src/tests/unit/local/connect_pair.cpp
index 31a34af67f6..095a0d89696 100644
--- a/3rdparty/asio/src/tests/unit/local/connect_pair.cpp
+++ b/3rdparty/asio/src/tests/unit/local/connect_pair.cpp
@@ -2,7 +2,7 @@
// connect_pair.cpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -72,5 +72,5 @@ void test()
ASIO_TEST_SUITE
(
"local/connect_pair",
- ASIO_TEST_CASE(local_connect_pair_compile::test)
+ ASIO_COMPILE_TEST_CASE(local_connect_pair_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/local/datagram_protocol.cpp b/3rdparty/asio/src/tests/unit/local/datagram_protocol.cpp
index f685a8220a4..23f677d6723 100644
--- a/3rdparty/asio/src/tests/unit/local/datagram_protocol.cpp
+++ b/3rdparty/asio/src/tests/unit/local/datagram_protocol.cpp
@@ -2,7 +2,7 @@
// datagram_protocol.cpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -52,6 +52,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
socket_base::message_flags in_flags = 0;
@@ -67,12 +68,13 @@ void test()
int native_socket1 = ::socket(AF_UNIX, SOCK_DGRAM, 0);
dp::socket socket4(ioc, dp(), native_socket1);
- // basic_io_object functions.
+ dp::socket socket5(ioc_ex);
+ dp::socket socket6(ioc_ex, dp());
+ dp::socket socket7(ioc_ex, dp::endpoint(""));
+ int native_socket2 = ::socket(AF_UNIX, SOCK_DGRAM, 0);
+ dp::socket socket8(ioc_ex, dp(), native_socket2);
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
+ // basic_io_object functions.
dp::socket::executor_type ex = socket1.get_executor();
(void)ex;
@@ -85,10 +87,10 @@ void test()
socket1.open(dp());
socket1.open(dp(), ec);
- int native_socket2 = ::socket(AF_UNIX, SOCK_DGRAM, 0);
- socket1.assign(dp(), native_socket2);
int native_socket3 = ::socket(AF_UNIX, SOCK_DGRAM, 0);
- socket1.assign(dp(), native_socket3, ec);
+ socket1.assign(dp(), native_socket3);
+ int native_socket4 = ::socket(AF_UNIX, SOCK_DGRAM, 0);
+ socket1.assign(dp(), native_socket4, ec);
bool is_open = socket1.is_open();
(void)is_open;
@@ -96,8 +98,8 @@ void test()
socket1.close();
socket1.close(ec);
- dp::socket::native_handle_type native_socket4 = socket1.native_handle();
- (void)native_socket4;
+ dp::socket::native_handle_type native_socket5 = socket1.native_handle();
+ (void)native_socket5;
socket1.cancel();
socket1.cancel(ec);
@@ -130,10 +132,14 @@ void test()
socket1.io_control(io_control_command, ec);
dp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
dp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
dp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
dp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -232,5 +238,5 @@ void test()
ASIO_TEST_SUITE
(
"local/datagram_protocol",
- ASIO_TEST_CASE(local_datagram_protocol_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(local_datagram_protocol_socket_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/local/seq_packet_protocol.cpp b/3rdparty/asio/src/tests/unit/local/seq_packet_protocol.cpp
new file mode 100644
index 00000000000..00934827aa6
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/local/seq_packet_protocol.cpp
@@ -0,0 +1,209 @@
+//
+// local/seq_packet_protocol.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/local/seq_packet_protocol.hpp"
+
+#include <cstring>
+#include "asio/io_context.hpp"
+#include "../unit_test.hpp"
+#include "../archetypes/async_result.hpp"
+
+#if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
+# define local cpp_local
+#endif
+
+//------------------------------------------------------------------------------
+
+// local_seq_packet_protocol_socket_compile test
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that all public member functions on the class
+// local::seq_packet_socket::socket compile and link correctly. Runtime
+// failures are ignored.
+
+namespace local_seq_packet_protocol_socket_compile {
+
+void connect_handler(const asio::error_code&)
+{
+}
+
+void send_handler(const asio::error_code&, std::size_t)
+{
+}
+
+void receive_handler(const asio::error_code&, std::size_t)
+{
+}
+
+void test()
+{
+ using namespace asio;
+ namespace local = asio::local;
+ typedef local::seq_packet_protocol spp;
+
+ try
+ {
+ io_context ioc;
+ char mutable_char_buffer[128] = "";
+ const char const_char_buffer[128] = "";
+ const socket_base::message_flags in_flags = 0;
+ socket_base::message_flags out_flags = 0;
+ socket_base::send_buffer_size socket_option;
+ socket_base::bytes_readable io_control_command;
+ archetypes::immediate_handler immediate;
+ asio::error_code ec;
+
+ // basic_seq_packet_socket constructors.
+
+ spp::socket socket1(ioc);
+ spp::socket socket2(ioc, spp());
+ spp::socket socket3(ioc, spp::endpoint());
+#if !defined(ASIO_WINDOWS_RUNTIME)
+ spp::socket::native_handle_type native_socket1
+ = ::socket(AF_UNIX, SOCK_SEQPACKET, 0);
+ spp::socket socket4(ioc, spp(), native_socket1);
+#endif // !defined(ASIO_WINDOWS_RUNTIME)
+
+ spp::socket socket5(std::move(socket4));
+
+ // basic_seq_packet_socket operators.
+
+ socket1 = spp::socket(ioc);
+ socket1 = std::move(socket2);
+
+ // basic_io_object functions.
+
+ spp::socket::executor_type ex = socket1.get_executor();
+ (void)ex;
+
+ // basic_socket functions.
+
+ spp::socket::lowest_layer_type& lowest_layer = socket1.lowest_layer();
+ (void)lowest_layer;
+
+ socket1.open(spp());
+ socket1.open(spp(), ec);
+
+#if !defined(ASIO_WINDOWS_RUNTIME)
+ spp::socket::native_handle_type native_socket2
+ = ::socket(AF_UNIX, SOCK_SEQPACKET, 0);
+ socket1.assign(spp(), native_socket2);
+ spp::socket::native_handle_type native_socket3
+ = ::socket(AF_UNIX, SOCK_SEQPACKET, 0);
+ socket1.assign(spp(), native_socket3, ec);
+#endif // !defined(ASIO_WINDOWS_RUNTIME)
+
+ bool is_open = socket1.is_open();
+ (void)is_open;
+
+ socket1.close();
+ socket1.close(ec);
+
+ spp::socket::native_handle_type native_socket4 = socket1.native_handle();
+ (void)native_socket4;
+
+ socket1.cancel();
+ socket1.cancel(ec);
+
+ bool at_mark1 = socket1.at_mark();
+ (void)at_mark1;
+ bool at_mark2 = socket1.at_mark(ec);
+ (void)at_mark2;
+
+ std::size_t available1 = socket1.available();
+ (void)available1;
+ std::size_t available2 = socket1.available(ec);
+ (void)available2;
+
+ socket1.bind(spp::endpoint());
+ socket1.bind(spp::endpoint(), ec);
+
+ socket1.connect(spp::endpoint());
+ socket1.connect(spp::endpoint(), ec);
+
+ socket1.async_connect(spp::endpoint(), connect_handler);
+ socket1.async_connect(spp::endpoint(), immediate);
+
+ socket1.set_option(socket_option);
+ socket1.set_option(socket_option, ec);
+
+ socket1.get_option(socket_option);
+ socket1.get_option(socket_option, ec);
+
+ socket1.io_control(io_control_command);
+ socket1.io_control(io_control_command, ec);
+
+ spp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
+ spp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
+
+ spp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
+ spp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
+
+ socket1.shutdown(socket_base::shutdown_both);
+ socket1.shutdown(socket_base::shutdown_both, ec);
+
+ // basic_seq_packet_socket functions.
+
+ socket1.send(buffer(mutable_char_buffer), in_flags);
+ socket1.send(buffer(const_char_buffer), in_flags);
+ socket1.send(null_buffers(), in_flags);
+ socket1.send(buffer(mutable_char_buffer), in_flags, ec);
+ socket1.send(buffer(const_char_buffer), in_flags, ec);
+ socket1.send(null_buffers(), in_flags, ec);
+
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, send_handler);
+ socket1.async_send(buffer(const_char_buffer), in_flags, send_handler);
+ socket1.async_send(null_buffers(), in_flags, send_handler);
+ socket1.async_send(buffer(mutable_char_buffer), in_flags, immediate);
+ socket1.async_send(buffer(const_char_buffer), in_flags, immediate);
+ socket1.async_send(null_buffers(), in_flags, immediate);
+
+ socket1.receive(buffer(mutable_char_buffer), out_flags);
+ socket1.receive(null_buffers(), out_flags);
+ socket1.receive(buffer(mutable_char_buffer), in_flags, out_flags);
+ socket1.receive(null_buffers(), in_flags, out_flags);
+ socket1.receive(buffer(mutable_char_buffer), in_flags, out_flags, ec);
+ socket1.receive(null_buffers(), in_flags, out_flags, ec);
+
+ socket1.async_receive(buffer(mutable_char_buffer), out_flags,
+ receive_handler);
+ socket1.async_receive(null_buffers(), out_flags, receive_handler);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags,
+ out_flags, receive_handler);
+ socket1.async_receive(null_buffers(), in_flags, out_flags, receive_handler);
+ socket1.async_receive(buffer(mutable_char_buffer), out_flags, immediate);
+ socket1.async_receive(null_buffers(), out_flags, immediate);
+ socket1.async_receive(buffer(mutable_char_buffer), in_flags,
+ out_flags, immediate);
+ socket1.async_receive(null_buffers(), in_flags, out_flags, immediate);
+ }
+ catch (std::exception&)
+ {
+ }
+}
+
+} // namespace local_seq_packet_protocol_socket_compile
+
+//------------------------------------------------------------------------------
+
+ASIO_TEST_SUITE
+(
+ "local/seq_packet_protocol",
+ ASIO_COMPILE_TEST_CASE(local_seq_packet_protocol_socket_compile::test)
+)
diff --git a/3rdparty/asio/src/tests/unit/local/stream_protocol.cpp b/3rdparty/asio/src/tests/unit/local/stream_protocol.cpp
index c22ba410cdb..985d143e412 100644
--- a/3rdparty/asio/src/tests/unit/local/stream_protocol.cpp
+++ b/3rdparty/asio/src/tests/unit/local/stream_protocol.cpp
@@ -2,7 +2,7 @@
// stream_protocol.cpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -60,6 +60,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
socket_base::message_flags in_flags = 0;
@@ -75,12 +76,13 @@ void test()
int native_socket1 = ::socket(AF_UNIX, SOCK_STREAM, 0);
sp::socket socket4(ioc, sp(), native_socket1);
- // basic_io_object functions.
+ sp::socket socket5(ioc_ex);
+ sp::socket socket6(ioc_ex, sp());
+ sp::socket socket7(ioc_ex, sp::endpoint(""));
+ int native_socket2 = ::socket(AF_UNIX, SOCK_STREAM, 0);
+ sp::socket socket8(ioc_ex, sp(), native_socket2);
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = socket1.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
+ // basic_io_object functions.
sp::socket::executor_type ex = socket1.get_executor();
(void)ex;
@@ -93,10 +95,10 @@ void test()
socket1.open(sp());
socket1.open(sp(), ec);
- int native_socket2 = ::socket(AF_UNIX, SOCK_STREAM, 0);
- socket1.assign(sp(), native_socket2);
int native_socket3 = ::socket(AF_UNIX, SOCK_STREAM, 0);
- socket1.assign(sp(), native_socket3, ec);
+ socket1.assign(sp(), native_socket3);
+ int native_socket4 = ::socket(AF_UNIX, SOCK_STREAM, 0);
+ socket1.assign(sp(), native_socket4, ec);
bool is_open = socket1.is_open();
(void)is_open;
@@ -104,8 +106,8 @@ void test()
socket1.close();
socket1.close(ec);
- sp::socket::native_handle_type native_socket4 = socket1.native_handle();
- (void)native_socket4;
+ sp::socket::native_handle_type native_socket5 = socket1.native_handle();
+ (void)native_socket5;
socket1.cancel();
socket1.cancel(ec);
@@ -138,10 +140,14 @@ void test()
socket1.io_control(io_control_command, ec);
sp::endpoint endpoint1 = socket1.local_endpoint();
+ (void)endpoint1;
sp::endpoint endpoint2 = socket1.local_endpoint(ec);
+ (void)endpoint2;
sp::endpoint endpoint3 = socket1.remote_endpoint();
+ (void)endpoint3;
sp::endpoint endpoint4 = socket1.remote_endpoint(ec);
+ (void)endpoint4;
socket1.shutdown(socket_base::shutdown_both);
socket1.shutdown(socket_base::shutdown_both, ec);
@@ -209,5 +215,5 @@ void test()
ASIO_TEST_SUITE
(
"local/stream_protocol",
- ASIO_TEST_CASE(local_stream_protocol_socket_compile::test)
+ ASIO_COMPILE_TEST_CASE(local_stream_protocol_socket_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/packaged_task.cpp b/3rdparty/asio/src/tests/unit/packaged_task.cpp
index bb44c77ce37..90b36d9f335 100644
--- a/3rdparty/asio/src/tests/unit/packaged_task.cpp
+++ b/3rdparty/asio/src/tests/unit/packaged_task.cpp
@@ -2,7 +2,7 @@
// packaged_task.cpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/placeholders.cpp b/3rdparty/asio/src/tests/unit/placeholders.cpp
index 54cf62ffb41..4f27d319b73 100644
--- a/3rdparty/asio/src/tests/unit/placeholders.cpp
+++ b/3rdparty/asio/src/tests/unit/placeholders.cpp
@@ -2,7 +2,7 @@
// placeholders.cpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/posix/.gitignore b/3rdparty/asio/src/tests/unit/posix/.gitignore
deleted file mode 100644
index 2de575abb5a..00000000000
--- a/3rdparty/asio/src/tests/unit/posix/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*.ilk
-*.manifest
-*.pdb
-*.tds
-basic_descriptor
-basic_stream_descriptor
-descriptor
-descriptor_base
-stream_descriptor
-stream_descriptor_service
diff --git a/3rdparty/asio/src/tests/unit/posix/basic_descriptor.cpp b/3rdparty/asio/src/tests/unit/posix/basic_descriptor.cpp
index c193c0f4b0b..f05ed3153cc 100644
--- a/3rdparty/asio/src/tests/unit/posix/basic_descriptor.cpp
+++ b/3rdparty/asio/src/tests/unit/posix/basic_descriptor.cpp
@@ -2,7 +2,7 @@
// basic_descriptor.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/posix/basic_stream_descriptor.cpp b/3rdparty/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
index dd2f31db977..8ea66857eae 100644
--- a/3rdparty/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
+++ b/3rdparty/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
@@ -2,7 +2,7 @@
// basic_stream_descriptor.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/posix/descriptor.cpp b/3rdparty/asio/src/tests/unit/posix/descriptor.cpp
index 6a52e019da6..c08ef8f4963 100644
--- a/3rdparty/asio/src/tests/unit/posix/descriptor.cpp
+++ b/3rdparty/asio/src/tests/unit/posix/descriptor.cpp
@@ -2,7 +2,7 @@
// descriptor.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/posix/descriptor_base.cpp b/3rdparty/asio/src/tests/unit/posix/descriptor_base.cpp
index 6dc61f88d5d..0437c9f852c 100644
--- a/3rdparty/asio/src/tests/unit/posix/descriptor_base.cpp
+++ b/3rdparty/asio/src/tests/unit/posix/descriptor_base.cpp
@@ -2,7 +2,7 @@
// descriptor_base.cpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/posix/stream_descriptor.cpp b/3rdparty/asio/src/tests/unit/posix/stream_descriptor.cpp
index 165db89596f..a8fdc4b2c19 100644
--- a/3rdparty/asio/src/tests/unit/posix/stream_descriptor.cpp
+++ b/3rdparty/asio/src/tests/unit/posix/stream_descriptor.cpp
@@ -2,7 +2,7 @@
// stream_descriptor.cpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -51,36 +51,35 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
posix::descriptor_base::bytes_readable io_control_command;
+ archetypes::immediate_handler immediate;
archetypes::lazy_handler lazy;
asio::error_code ec;
// basic_stream_descriptor constructors.
posix::stream_descriptor descriptor1(ioc);
+ posix::stream_descriptor descriptor2(ioc_ex);
int native_descriptor1 = -1;
- posix::stream_descriptor descriptor2(ioc, native_descriptor1);
+ posix::stream_descriptor descriptor3(ioc, native_descriptor1);
+ posix::stream_descriptor descriptor4(ioc_ex, native_descriptor1);
-#if defined(ASIO_HAS_MOVE)
- posix::stream_descriptor descriptor3(std::move(descriptor2));
-#endif // defined(ASIO_HAS_MOVE)
+ posix::stream_descriptor descriptor5(std::move(descriptor2));
+
+ posix::basic_stream_descriptor<io_context::executor_type> descriptor6(ioc);
+ posix::stream_descriptor descriptor7(std::move(descriptor6));
// basic_stream_descriptor operators.
-#if defined(ASIO_HAS_MOVE)
descriptor1 = posix::stream_descriptor(ioc);
descriptor1 = std::move(descriptor2);
-#endif // defined(ASIO_HAS_MOVE)
+ descriptor1 = std::move(descriptor6);
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = descriptor1.get_io_context();
- (void)ioc_ref;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
posix::stream_descriptor::executor_type ex = descriptor1.get_executor();
(void)ex;
@@ -90,9 +89,9 @@ void test()
= descriptor1.lowest_layer();
(void)lowest_layer;
- const posix::stream_descriptor& descriptor4 = descriptor1;
+ const posix::stream_descriptor& descriptor8 = descriptor1;
const posix::stream_descriptor::lowest_layer_type& lowest_layer2
- = descriptor4.lowest_layer();
+ = descriptor8.lowest_layer();
(void)lowest_layer2;
int native_descriptor2 = -1;
@@ -132,6 +131,7 @@ void test()
descriptor1.wait(posix::descriptor_base::wait_write, ec);
descriptor1.async_wait(posix::descriptor_base::wait_read, &wait_handler);
+ descriptor1.async_wait(posix::descriptor_base::wait_read, immediate);
int i1 = descriptor1.async_wait(posix::descriptor_base::wait_write, lazy);
(void)i1;
@@ -150,6 +150,9 @@ void test()
write_some_handler);
descriptor1.async_write_some(null_buffers(),
write_some_handler);
+ descriptor1.async_write_some(buffer(mutable_char_buffer), immediate);
+ descriptor1.async_write_some(buffer(const_char_buffer), immediate);
+ descriptor1.async_write_some(null_buffers(), immediate);
int i2 = descriptor1.async_write_some(buffer(mutable_char_buffer), lazy);
(void)i2;
int i3 = descriptor1.async_write_some(buffer(const_char_buffer), lazy);
@@ -163,6 +166,8 @@ void test()
descriptor1.async_read_some(buffer(mutable_char_buffer), read_some_handler);
descriptor1.async_read_some(null_buffers(), read_some_handler);
+ descriptor1.async_read_some(buffer(mutable_char_buffer), immediate);
+ descriptor1.async_read_some(null_buffers(), immediate);
int i5 = descriptor1.async_read_some(buffer(mutable_char_buffer), lazy);
(void)i5;
int i6 = descriptor1.async_read_some(null_buffers(), lazy);
@@ -181,5 +186,5 @@ void test()
ASIO_TEST_SUITE
(
"posix/stream_descriptor",
- ASIO_TEST_CASE(posix_stream_descriptor_compile::test)
+ ASIO_COMPILE_TEST_CASE(posix_stream_descriptor_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/post.cpp b/3rdparty/asio/src/tests/unit/post.cpp
index caf8ad53f3a..d2ef2352299 100644
--- a/3rdparty/asio/src/tests/unit/post.cpp
+++ b/3rdparty/asio/src/tests/unit/post.cpp
@@ -2,7 +2,7 @@
// post.cpp
// ~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/prepend.cpp b/3rdparty/asio/src/tests/unit/prepend.cpp
new file mode 100644
index 00000000000..cc26bf9835c
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/prepend.cpp
@@ -0,0 +1,58 @@
+//
+// prepend.cpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/prepend.hpp"
+
+#include "asio/bind_executor.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "asio/system_timer.hpp"
+#include "unit_test.hpp"
+
+void prepend_test()
+{
+ asio::io_context io1;
+ asio::io_context io2;
+ asio::system_timer timer1(io1);
+ int count = 0;
+
+ timer1.expires_after(asio::chrono::seconds(0));
+ timer1.async_wait(
+ asio::prepend(
+ asio::bind_executor(io2.get_executor(),
+ [&count](int a, int b, asio::error_code)
+ {
+ ++count;
+ ASIO_CHECK(a == 123);
+ ASIO_CHECK(b == 321);
+ }), 123, 321));
+
+ ASIO_CHECK(count == 0);
+
+ io1.run();
+
+ ASIO_CHECK(count == 0);
+
+ io2.run();
+
+ ASIO_CHECK(count == 1);
+}
+
+ASIO_TEST_SUITE
+(
+ "prepend",
+ ASIO_TEST_CASE(prepend_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/random_access_file.cpp b/3rdparty/asio/src/tests/unit/random_access_file.cpp
new file mode 100644
index 00000000000..be703cd395e
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/random_access_file.cpp
@@ -0,0 +1,171 @@
+//
+// random_access_file.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/random_access_file.hpp"
+
+#include "archetypes/async_result.hpp"
+#include "asio/io_context.hpp"
+#include "unit_test.hpp"
+
+// random_access_file_compile test
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that all public member functions on the class
+// random_access_file compile and link correctly. Runtime failures are ignored.
+
+namespace random_access_file_compile {
+
+struct write_some_at_handler
+{
+ write_some_at_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ write_some_at_handler(write_some_at_handler&&) {}
+private:
+ write_some_at_handler(const write_some_at_handler&);
+};
+
+struct read_some_at_handler
+{
+ read_some_at_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ read_some_at_handler(read_some_at_handler&&) {}
+private:
+ read_some_at_handler(const read_some_at_handler&);
+};
+
+void test()
+{
+#if defined(ASIO_HAS_FILE)
+ using namespace asio;
+
+ try
+ {
+ io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
+ char mutable_char_buffer[128] = "";
+ const char const_char_buffer[128] = "";
+ archetypes::lazy_handler lazy;
+ asio::error_code ec;
+ const std::string path;
+
+ // basic_random_access_file constructors.
+
+ random_access_file file1(ioc);
+ random_access_file file2(ioc, "", random_access_file::read_only);
+ random_access_file file3(ioc, path, random_access_file::read_only);
+ random_access_file::native_handle_type native_file1 = file1.native_handle();
+ random_access_file file4(ioc, native_file1);
+
+ random_access_file file5(ioc_ex);
+ random_access_file file6(ioc_ex, "", random_access_file::read_only);
+ random_access_file file7(ioc_ex, path, random_access_file::read_only);
+ random_access_file::native_handle_type native_file2 = file1.native_handle();
+ random_access_file file8(ioc_ex, native_file2);
+
+ random_access_file file9(std::move(file8));
+
+ basic_random_access_file<io_context::executor_type> file10(ioc);
+ random_access_file file11(std::move(file10));
+
+ // basic_random_access_file operators.
+
+ file1 = random_access_file(ioc);
+ file1 = std::move(file2);
+ file1 = std::move(file10);
+
+ // basic_io_object functions.
+
+ random_access_file::executor_type ex = file1.get_executor();
+ (void)ex;
+
+ // basic_random_access_file functions.
+
+ file1.open("", random_access_file::read_only);
+ file1.open("", random_access_file::read_only, ec);
+
+ file1.open(path, random_access_file::read_only);
+ file1.open(path, random_access_file::read_only, ec);
+
+ random_access_file::native_handle_type native_file3 = file1.native_handle();
+ file1.assign(native_file3);
+ random_access_file::native_handle_type native_file4 = file1.native_handle();
+ file1.assign(native_file4, ec);
+
+ bool is_open = file1.is_open();
+ (void)is_open;
+
+ file1.close();
+ file1.close(ec);
+
+ random_access_file::native_handle_type native_file5 = file1.native_handle();
+ (void)native_file5;
+
+ random_access_file::native_handle_type native_file6 = file1.release();
+ (void)native_file6;
+ random_access_file::native_handle_type native_file7 = file1.release(ec);
+ (void)native_file7;
+
+ file1.cancel();
+ file1.cancel(ec);
+
+ asio::uint64_t s1 = file1.size();
+ (void)s1;
+ asio::uint64_t s2 = file1.size(ec);
+ (void)s2;
+
+ file1.resize(asio::uint64_t(0));
+ file1.resize(asio::uint64_t(0), ec);
+
+ file1.sync_all();
+ file1.sync_all(ec);
+
+ file1.sync_data();
+ file1.sync_data(ec);
+
+ file1.write_some_at(0, buffer(mutable_char_buffer));
+ file1.write_some_at(0, buffer(const_char_buffer));
+ file1.write_some_at(0, buffer(mutable_char_buffer), ec);
+ file1.write_some_at(0, buffer(const_char_buffer), ec);
+
+ file1.async_write_some_at(0, buffer(mutable_char_buffer),
+ write_some_at_handler());
+ file1.async_write_some_at(0, buffer(const_char_buffer),
+ write_some_at_handler());
+ int i1 = file1.async_write_some_at(0, buffer(mutable_char_buffer), lazy);
+ (void)i1;
+ int i2 = file1.async_write_some_at(0, buffer(const_char_buffer), lazy);
+ (void)i2;
+
+ file1.read_some_at(0, buffer(mutable_char_buffer));
+ file1.read_some_at(0, buffer(mutable_char_buffer), ec);
+
+ file1.async_read_some_at(0, buffer(mutable_char_buffer),
+ read_some_at_handler());
+ int i3 = file1.async_read_some_at(0, buffer(mutable_char_buffer), lazy);
+ (void)i3;
+ }
+ catch (std::exception&)
+ {
+ }
+#endif // defined(ASIO_HAS_FILE)
+}
+
+} // namespace random_access_file_compile
+
+ASIO_TEST_SUITE
+(
+ "random_access_file",
+ ASIO_COMPILE_TEST_CASE(random_access_file_compile::test)
+)
diff --git a/3rdparty/asio/src/tests/unit/read.cpp b/3rdparty/asio/src/tests/unit/read.cpp
index 077c9223667..a268c041d9b 100644
--- a/3rdparty/asio/src/tests/unit/read.cpp
+++ b/3rdparty/asio/src/tests/unit/read.cpp
@@ -2,7 +2,7 @@
// read.cpp
// ~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,7 +16,9 @@
// Test that header file is self-contained.
#include "asio/read.hpp"
+#include <array>
#include <cstring>
+#include <functional>
#include <vector>
#include "archetypes/async_result.hpp"
#include "asio/io_context.hpp"
@@ -24,20 +26,10 @@
#include "asio/streambuf.hpp"
#include "unit_test.hpp"
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
#if defined(ASIO_HAS_BOOST_ARRAY)
#include <boost/array.hpp>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
using namespace std; // For memcmp, memcpy and memset.
class test_stream
@@ -53,7 +45,7 @@ public:
{
}
- executor_type get_executor() ASIO_NOEXCEPT
+ executor_type get_executor() noexcept
{
return io_context_.get_executor();
}
@@ -120,12 +112,13 @@ public:
}
template <typename Mutable_Buffers, typename Handler>
- void async_read_some(const Mutable_Buffers& buffers, Handler handler)
+ void async_read_some(const Mutable_Buffers& buffers,
+ Handler&& handler)
{
size_t bytes_transferred = read_some(buffers);
asio::post(get_executor(),
asio::detail::bind_handler(
- ASIO_MOVE_CAST(Handler)(handler),
+ static_cast<Handler&&>(handler),
asio::error_code(), bytes_transferred));
}
@@ -187,7 +180,8 @@ void test_2_arg_vector_buffers_read()
char read_buf[sizeof(read_data)];
std::vector<asio::mutable_buffer> buffers;
buffers.push_back(asio::buffer(read_buf, 32));
- buffers.push_back(asio::buffer(read_buf) + 32);
+ buffers.push_back(asio::buffer(read_buf, 39) + 32);
+ buffers.push_back(asio::buffer(read_buf) + 39);
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
@@ -210,8 +204,42 @@ void test_2_arg_vector_buffers_read()
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
}
+void test_2_arg_dynamic_string_read()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(read_data));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ size_t bytes_transferred = asio::read(s, sb);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+}
+
void test_2_arg_streambuf_read()
{
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
asio::io_context ioc;
test_stream s(ioc);
asio::streambuf sb(sizeof(read_data));
@@ -238,6 +266,7 @@ void test_2_arg_streambuf_read()
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
void test_3_arg_nothrow_zero_buffers_read()
@@ -292,7 +321,8 @@ void test_3_arg_nothrow_vector_buffers_read()
char read_buf[sizeof(read_data)];
std::vector<asio::mutable_buffer> buffers;
buffers.push_back(asio::buffer(read_buf, 32));
- buffers.push_back(asio::buffer(read_buf) + 32);
+ buffers.push_back(asio::buffer(read_buf, 39) + 32);
+ buffers.push_back(asio::buffer(read_buf) + 39);
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
@@ -319,8 +349,46 @@ void test_3_arg_nothrow_vector_buffers_read()
ASIO_CHECK(!error);
}
+void test_3_arg_nothrow_dynamic_string_read()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(read_data));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ asio::error_code error;
+ size_t bytes_transferred = asio::read(s, sb, error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+}
+
void test_3_arg_nothrow_streambuf_read()
{
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
asio::io_context ioc;
test_stream s(ioc);
asio::streambuf sb(sizeof(read_data));
@@ -351,6 +419,7 @@ void test_3_arg_nothrow_streambuf_read()
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
ASIO_CHECK(!error);
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
bool old_style_transfer_all(const asio::error_code& ec,
@@ -359,11 +428,16 @@ bool old_style_transfer_all(const asio::error_code& ec,
return !!ec;
}
-size_t short_transfer(const asio::error_code& ec,
- size_t /*bytes_transferred*/)
+struct short_transfer
{
- return !!ec ? 0 : 3;
-}
+ short_transfer() {}
+ short_transfer(short_transfer&&) {}
+ size_t operator()(const asio::error_code& ec,
+ size_t /*bytes_transferred*/)
+ {
+ return !!ec ? 0 : 3;
+ }
+};
void test_3_arg_mutable_buffer_read()
{
@@ -556,21 +630,21 @@ void test_3_arg_mutable_buffer_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer);
+ bytes_transferred = asio::read(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer);
+ bytes_transferred = asio::read(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer);
+ bytes_transferred = asio::read(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
}
@@ -582,7 +656,8 @@ void test_3_arg_vector_buffers_read()
char read_buf[sizeof(read_data)];
std::vector<asio::mutable_buffer> buffers;
buffers.push_back(asio::buffer(read_buf, 32));
- buffers.push_back(asio::buffer(read_buf) + 32);
+ buffers.push_back(asio::buffer(read_buf, 39) + 32);
+ buffers.push_back(asio::buffer(read_buf) + 39);
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
@@ -767,27 +842,266 @@ void test_3_arg_vector_buffers_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer);
+ bytes_transferred = asio::read(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer);
+ bytes_transferred = asio::read(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer);
+ bytes_transferred = asio::read(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
}
+void test_3_arg_dynamic_string_read()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(read_data));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ size_t bytes_transferred = asio::read(s, sb,
+ asio::transfer_all());
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_all());
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_all());
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(1));
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(1));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(10));
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(42));
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(42));
+ ASIO_CHECK(bytes_transferred == 50);
+ ASIO_CHECK(sb.size() == 50);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 50));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, old_style_transfer_all);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, old_style_transfer_all);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, old_style_transfer_all);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, short_transfer());
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, short_transfer());
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, short_transfer());
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+}
+
void test_3_arg_streambuf_read()
{
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
asio::io_context ioc;
test_stream s(ioc);
asio::streambuf sb(sizeof(read_data));
@@ -999,7 +1313,7 @@ void test_3_arg_streambuf_read()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
- bytes_transferred = asio::read(s, sb, short_transfer);
+ bytes_transferred = asio::read(s, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
@@ -1007,7 +1321,7 @@ void test_3_arg_streambuf_read()
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
sb.consume(sb.size());
- bytes_transferred = asio::read(s, sb, short_transfer);
+ bytes_transferred = asio::read(s, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
@@ -1015,10 +1329,11 @@ void test_3_arg_streambuf_read()
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
sb.consume(sb.size());
- bytes_transferred = asio::read(s, sb, short_transfer);
+ bytes_transferred = asio::read(s, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
void test_4_arg_mutable_buffer_read()
@@ -1262,7 +1577,7 @@ void test_4_arg_mutable_buffer_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer, error);
+ bytes_transferred = asio::read(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -1271,7 +1586,7 @@ void test_4_arg_mutable_buffer_read()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
- bytes_transferred = asio::read(s, buffers, short_transfer, error);
+ bytes_transferred = asio::read(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -1280,7 +1595,7 @@ void test_4_arg_mutable_buffer_read()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
- bytes_transferred = asio::read(s, buffers, short_transfer, error);
+ bytes_transferred = asio::read(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -1293,7 +1608,8 @@ void test_4_arg_vector_buffers_read()
char read_buf[sizeof(read_data)];
std::vector<asio::mutable_buffer> buffers;
buffers.push_back(asio::buffer(read_buf, 32));
- buffers.push_back(asio::buffer(read_buf) + 32);
+ buffers.push_back(asio::buffer(read_buf, 39) + 32);
+ buffers.push_back(asio::buffer(read_buf) + 39);
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
@@ -1528,7 +1844,7 @@ void test_4_arg_vector_buffers_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read(s, buffers, short_transfer, error);
+ bytes_transferred = asio::read(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -1537,7 +1853,7 @@ void test_4_arg_vector_buffers_read()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
- bytes_transferred = asio::read(s, buffers, short_transfer, error);
+ bytes_transferred = asio::read(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -1546,14 +1862,308 @@ void test_4_arg_vector_buffers_read()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
- bytes_transferred = asio::read(s, buffers, short_transfer, error);
+ bytes_transferred = asio::read(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
ASIO_CHECK(!error);
}
+void test_4_arg_dynamic_string_read()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(read_data));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ asio::error_code error;
+ size_t bytes_transferred = asio::read(s, sb,
+ asio::transfer_all(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_all(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_all(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(1), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(1), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(10), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(42), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_at_least(42), error);
+ ASIO_CHECK(bytes_transferred == 50);
+ ASIO_CHECK(sb.size() == 50);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 50));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ asio::transfer_exactly(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb,
+ old_style_transfer_all, error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ old_style_transfer_all, error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb,
+ old_style_transfer_all, error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bytes_transferred = asio::read(s, sb, short_transfer(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb, short_transfer(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ error = asio::error_code();
+ bytes_transferred = asio::read(s, sb, short_transfer(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(read_data));
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+ ASIO_CHECK(!error);
+}
+
void test_4_arg_streambuf_read()
{
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
asio::io_context ioc;
test_stream s(ioc);
asio::streambuf sb(sizeof(read_data));
@@ -1815,7 +2425,7 @@ void test_4_arg_streambuf_read()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
- bytes_transferred = asio::read(s, sb, short_transfer, error);
+ bytes_transferred = asio::read(s, sb, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
@@ -1825,7 +2435,7 @@ void test_4_arg_streambuf_read()
s.next_read_length(1);
sb.consume(sb.size());
error = asio::error_code();
- bytes_transferred = asio::read(s, sb, short_transfer, error);
+ bytes_transferred = asio::read(s, sb, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
@@ -1835,11 +2445,12 @@ void test_4_arg_streambuf_read()
s.next_read_length(10);
sb.consume(sb.size());
error = asio::error_code();
- bytes_transferred = asio::read(s, sb, short_transfer, error);
+ bytes_transferred = asio::read(s, sb, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
ASIO_CHECK(!error);
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
void async_read_handler(const asio::error_code& e,
@@ -1852,13 +2463,9 @@ void async_read_handler(const asio::error_code& e,
void test_3_arg_mutable_buffer_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -1912,13 +2519,9 @@ void test_3_arg_mutable_buffer_async_read()
void test_3_arg_boost_array_buffers_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -1975,15 +2578,10 @@ void test_3_arg_boost_array_buffers_async_read()
void test_3_arg_std_array_buffers_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_stream s(ioc);
char read_buf[sizeof(read_data)];
@@ -2033,25 +2631,21 @@ void test_3_arg_std_array_buffers_async_read()
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_3_arg_vector_buffers_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
char read_buf[sizeof(read_data)];
std::vector<asio::mutable_buffer> buffers;
buffers.push_back(asio::buffer(read_buf, 32));
- buffers.push_back(asio::buffer(read_buf) + 32);
+ buffers.push_back(asio::buffer(read_buf, 39) + 32);
+ buffers.push_back(asio::buffer(read_buf) + 39);
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
@@ -2097,15 +2691,73 @@ void test_3_arg_vector_buffers_async_read()
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
}
+void test_3_arg_dynamic_string_async_read()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(read_data));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bool called = false;
+ asio::async_read(s, sb,
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb,
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb,
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ int i = asio::async_read(s, sb, archetypes::lazy_handler());
+ ASIO_CHECK(i == 42);
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+}
+
void test_3_arg_streambuf_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -2157,17 +2809,14 @@ void test_3_arg_streambuf_async_read()
ioc.run();
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
void test_4_arg_mutable_buffer_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -2458,7 +3107,7 @@ void test_4_arg_mutable_buffer_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -2470,7 +3119,7 @@ void test_4_arg_mutable_buffer_async_read()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -2482,7 +3131,7 @@ void test_4_arg_mutable_buffer_async_read()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -2493,7 +3142,7 @@ void test_4_arg_mutable_buffer_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read(s, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
@@ -2502,13 +3151,9 @@ void test_4_arg_mutable_buffer_async_read()
void test_4_arg_boost_array_buffers_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -2801,7 +3446,7 @@ void test_4_arg_boost_array_buffers_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -2813,7 +3458,7 @@ void test_4_arg_boost_array_buffers_async_read()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -2825,7 +3470,7 @@ void test_4_arg_boost_array_buffers_async_read()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -2836,7 +3481,7 @@ void test_4_arg_boost_array_buffers_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read(s, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
@@ -2846,15 +3491,10 @@ void test_4_arg_boost_array_buffers_async_read()
void test_4_arg_std_array_buffers_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_stream s(ioc);
char read_buf[sizeof(read_data)];
@@ -3145,7 +3785,7 @@ void test_4_arg_std_array_buffers_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3157,7 +3797,7 @@ void test_4_arg_std_array_buffers_async_read()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3169,7 +3809,7 @@ void test_4_arg_std_array_buffers_async_read()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3180,30 +3820,26 @@ void test_4_arg_std_array_buffers_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read(s, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_4_arg_vector_buffers_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
char read_buf[sizeof(read_data)];
std::vector<asio::mutable_buffer> buffers;
buffers.push_back(asio::buffer(read_buf, 32));
- buffers.push_back(asio::buffer(read_buf) + 32);
+ buffers.push_back(asio::buffer(read_buf, 39) + 32);
+ buffers.push_back(asio::buffer(read_buf) + 39);
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
@@ -3488,7 +4124,7 @@ void test_4_arg_vector_buffers_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3500,7 +4136,7 @@ void test_4_arg_vector_buffers_async_read()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3512,7 +4148,7 @@ void test_4_arg_vector_buffers_async_read()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read(s, buffers, short_transfer,
+ asio::async_read(s, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3523,22 +4159,385 @@ void test_4_arg_vector_buffers_async_read()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read(s, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
}
+void test_4_arg_dynamic_string_async_read()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(read_data));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ bool called = false;
+ asio::async_read(s, sb, asio::transfer_all(),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_all(),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_all(),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(1),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(1),
+ bindns::bind(async_read_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(1),
+ bindns::bind(async_read_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(10),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(10),
+ bindns::bind(async_read_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(10),
+ bindns::bind(async_read_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(42),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(42),
+ bindns::bind(async_read_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_at_least(42),
+ bindns::bind(async_read_handler,
+ _1, _2, 50, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 50);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 50));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(1),
+ bindns::bind(async_read_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(1),
+ bindns::bind(async_read_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(1),
+ bindns::bind(async_read_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 1);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 1));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(10),
+ bindns::bind(async_read_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(10),
+ bindns::bind(async_read_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(10),
+ bindns::bind(async_read_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 10);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 10));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(42),
+ bindns::bind(async_read_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(42),
+ bindns::bind(async_read_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, asio::transfer_exactly(42),
+ bindns::bind(async_read_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == 42);
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), 42));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, old_style_transfer_all,
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, old_style_transfer_all,
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, old_style_transfer_all,
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, short_transfer(),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, short_transfer(),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb.consume(sb.size());
+ called = false;
+ asio::async_read(s, sb, short_transfer(),
+ bindns::bind(async_read_handler,
+ _1, _2, sizeof(read_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+
+ s.reset(read_data, sizeof(read_data));
+ sb.consume(sb.size());
+ int i = asio::async_read(s, sb,
+ short_transfer(), archetypes::lazy_handler());
+ ASIO_CHECK(i == 42);
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(sb.size() == sizeof(read_data));
+ ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data)));
+}
+
void test_4_arg_streambuf_async_read()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -3851,7 +4850,7 @@ void test_4_arg_streambuf_async_read()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
called = false;
- asio::async_read(s, sb, short_transfer,
+ asio::async_read(s, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3864,7 +4863,7 @@ void test_4_arg_streambuf_async_read()
s.next_read_length(1);
sb.consume(sb.size());
called = false;
- asio::async_read(s, sb, short_transfer,
+ asio::async_read(s, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3877,7 +4876,7 @@ void test_4_arg_streambuf_async_read()
s.next_read_length(10);
sb.consume(sb.size());
called = false;
- asio::async_read(s, sb, short_transfer,
+ asio::async_read(s, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -3889,12 +4888,13 @@ void test_4_arg_streambuf_async_read()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
int i = asio::async_read(s, sb,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
ASIO_TEST_SUITE
@@ -3903,25 +4903,31 @@ ASIO_TEST_SUITE
ASIO_TEST_CASE(test_2_arg_zero_buffers_read)
ASIO_TEST_CASE(test_2_arg_mutable_buffer_read)
ASIO_TEST_CASE(test_2_arg_vector_buffers_read)
+ ASIO_TEST_CASE(test_2_arg_dynamic_string_read)
ASIO_TEST_CASE(test_2_arg_streambuf_read)
ASIO_TEST_CASE(test_3_arg_nothrow_zero_buffers_read)
ASIO_TEST_CASE(test_3_arg_nothrow_mutable_buffer_read)
ASIO_TEST_CASE(test_3_arg_nothrow_vector_buffers_read)
+ ASIO_TEST_CASE(test_3_arg_nothrow_dynamic_string_read)
ASIO_TEST_CASE(test_3_arg_nothrow_streambuf_read)
ASIO_TEST_CASE(test_3_arg_mutable_buffer_read)
ASIO_TEST_CASE(test_3_arg_vector_buffers_read)
+ ASIO_TEST_CASE(test_3_arg_dynamic_string_read)
ASIO_TEST_CASE(test_3_arg_streambuf_read)
ASIO_TEST_CASE(test_4_arg_mutable_buffer_read)
ASIO_TEST_CASE(test_4_arg_vector_buffers_read)
+ ASIO_TEST_CASE(test_4_arg_dynamic_string_read)
ASIO_TEST_CASE(test_4_arg_streambuf_read)
ASIO_TEST_CASE(test_3_arg_mutable_buffer_async_read)
ASIO_TEST_CASE(test_3_arg_boost_array_buffers_async_read)
ASIO_TEST_CASE(test_3_arg_std_array_buffers_async_read)
ASIO_TEST_CASE(test_3_arg_vector_buffers_async_read)
+ ASIO_TEST_CASE(test_3_arg_dynamic_string_async_read)
ASIO_TEST_CASE(test_3_arg_streambuf_async_read)
ASIO_TEST_CASE(test_4_arg_mutable_buffer_async_read)
ASIO_TEST_CASE(test_4_arg_vector_buffers_async_read)
ASIO_TEST_CASE(test_4_arg_boost_array_buffers_async_read)
ASIO_TEST_CASE(test_4_arg_std_array_buffers_async_read)
+ ASIO_TEST_CASE(test_4_arg_dynamic_string_async_read)
ASIO_TEST_CASE(test_4_arg_streambuf_async_read)
)
diff --git a/3rdparty/asio/src/tests/unit/read_at.cpp b/3rdparty/asio/src/tests/unit/read_at.cpp
index 5b2f5ebace3..72d21bc3236 100644
--- a/3rdparty/asio/src/tests/unit/read_at.cpp
+++ b/3rdparty/asio/src/tests/unit/read_at.cpp
@@ -2,7 +2,7 @@
// read_at.cpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,27 +16,19 @@
// Test that header file is self-contained.
#include "asio/read_at.hpp"
+#include <array>
#include <cstring>
+#include <functional>
#include "archetypes/async_result.hpp"
#include "asio/io_context.hpp"
#include "asio/post.hpp"
#include "asio/streambuf.hpp"
#include "unit_test.hpp"
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
#if defined(ASIO_HAS_BOOST_ARRAY)
#include <boost/array.hpp>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
using namespace std; // For memcmp, memcpy and memset.
class test_random_access_device
@@ -51,7 +43,7 @@ public:
{
}
- executor_type get_executor() ASIO_NOEXCEPT
+ executor_type get_executor() noexcept
{
return io_context_.get_executor();
}
@@ -125,12 +117,12 @@ public:
template <typename Mutable_Buffers, typename Handler>
void async_read_some_at(asio::uint64_t offset,
- const Mutable_Buffers& buffers, Handler handler)
+ const Mutable_Buffers& buffers, Handler&& handler)
{
size_t bytes_transferred = read_some_at(offset, buffers);
asio::post(get_executor(),
asio::detail::bind_handler(
- ASIO_MOVE_CAST(Handler)(handler),
+ static_cast<Handler&&>(handler),
asio::error_code(), bytes_transferred));
}
@@ -476,11 +468,16 @@ bool old_style_transfer_all(const asio::error_code& ec,
return !!ec;
}
-size_t short_transfer(const asio::error_code& ec,
- size_t /*bytes_transferred*/)
+struct short_transfer
{
- return !!ec ? 0 : 3;
-}
+ short_transfer() {}
+ short_transfer(short_transfer&&) {}
+ size_t operator()(const asio::error_code& ec,
+ size_t /*bytes_transferred*/)
+ {
+ return !!ec ? 0 : 3;
+ }
+};
void test_4_arg_mutable_buffer_read_at()
{
@@ -860,41 +857,41 @@ void test_4_arg_mutable_buffer_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
}
@@ -1278,41 +1275,41 @@ void test_4_arg_vector_buffers_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
- bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
}
@@ -1741,14 +1738,14 @@ void test_4_arg_streambuf_read_at()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
- bytes_transferred = asio::read_at(s, 0, sb, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
- bytes_transferred = asio::read_at(s, 1234, sb, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
@@ -1756,7 +1753,7 @@ void test_4_arg_streambuf_read_at()
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
sb.consume(sb.size());
- bytes_transferred = asio::read_at(s, 0, sb, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
@@ -1764,7 +1761,7 @@ void test_4_arg_streambuf_read_at()
s.reset(read_data, sizeof(read_data));
s.next_read_length(1);
sb.consume(sb.size());
- bytes_transferred = asio::read_at(s, 1234, sb, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
@@ -1772,7 +1769,7 @@ void test_4_arg_streambuf_read_at()
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
sb.consume(sb.size());
- bytes_transferred = asio::read_at(s, 0, sb, short_transfer);
+ bytes_transferred = asio::read_at(s, 0, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
@@ -1780,7 +1777,7 @@ void test_4_arg_streambuf_read_at()
s.reset(read_data, sizeof(read_data));
s.next_read_length(10);
sb.consume(sb.size());
- bytes_transferred = asio::read_at(s, 1234, sb, short_transfer);
+ bytes_transferred = asio::read_at(s, 1234, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
@@ -2258,7 +2255,7 @@ void test_5_arg_mutable_buffer_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
bytes_transferred = asio::read_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2266,7 +2263,7 @@ void test_5_arg_mutable_buffer_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
bytes_transferred = asio::read_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2276,7 +2273,7 @@ void test_5_arg_mutable_buffer_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2286,7 +2283,7 @@ void test_5_arg_mutable_buffer_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2296,7 +2293,7 @@ void test_5_arg_mutable_buffer_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2306,7 +2303,7 @@ void test_5_arg_mutable_buffer_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2785,7 +2782,7 @@ void test_5_arg_vector_buffers_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
bytes_transferred = asio::read_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2793,7 +2790,7 @@ void test_5_arg_vector_buffers_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
bytes_transferred = asio::read_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2803,7 +2800,7 @@ void test_5_arg_vector_buffers_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2813,7 +2810,7 @@ void test_5_arg_vector_buffers_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2823,7 +2820,7 @@ void test_5_arg_vector_buffers_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -2833,7 +2830,7 @@ void test_5_arg_vector_buffers_read_at()
memset(read_buf, 0, sizeof(read_buf));
error = asio::error_code();
bytes_transferred = asio::read_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
ASIO_CHECK(!error);
@@ -3357,7 +3354,7 @@ void test_5_arg_streambuf_read_at()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
bytes_transferred = asio::read_at(s, 0, sb,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
@@ -3366,7 +3363,7 @@ void test_5_arg_streambuf_read_at()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
bytes_transferred = asio::read_at(s, 1234, sb,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
@@ -3377,7 +3374,7 @@ void test_5_arg_streambuf_read_at()
sb.consume(sb.size());
error = asio::error_code();
bytes_transferred = asio::read_at(s, 0, sb,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
@@ -3388,7 +3385,7 @@ void test_5_arg_streambuf_read_at()
sb.consume(sb.size());
error = asio::error_code();
bytes_transferred = asio::read_at(s, 1234, sb,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
@@ -3399,7 +3396,7 @@ void test_5_arg_streambuf_read_at()
sb.consume(sb.size());
error = asio::error_code();
bytes_transferred = asio::read_at(s, 0, sb,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
@@ -3410,7 +3407,7 @@ void test_5_arg_streambuf_read_at()
sb.consume(sb.size());
error = asio::error_code();
bytes_transferred = asio::read_at(s, 1234, sb,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(read_data));
ASIO_CHECK(sb.size() == sizeof(read_data));
ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
@@ -3427,13 +3424,9 @@ void async_read_handler(const asio::error_code& e,
void test_4_arg_mutable_buffer_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -3523,13 +3516,9 @@ void test_4_arg_mutable_buffer_async_read_at()
void test_4_arg_boost_array_buffers_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -3622,15 +3611,10 @@ void test_4_arg_boost_array_buffers_async_read_at()
void test_4_arg_std_array_buffers_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_random_access_device s(ioc);
char read_buf[sizeof(read_data)];
@@ -3716,18 +3700,13 @@ void test_4_arg_std_array_buffers_async_read_at()
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_4_arg_vector_buffers_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -3818,13 +3797,9 @@ void test_4_arg_vector_buffers_async_read_at()
void test_4_arg_streambuf_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -3918,13 +3893,9 @@ void test_4_arg_streambuf_async_read_at()
void test_5_arg_mutable_buffer_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -4537,7 +4508,7 @@ void test_5_arg_mutable_buffer_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -4548,7 +4519,7 @@ void test_5_arg_mutable_buffer_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -4560,7 +4531,7 @@ void test_5_arg_mutable_buffer_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -4572,7 +4543,7 @@ void test_5_arg_mutable_buffer_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -4584,7 +4555,7 @@ void test_5_arg_mutable_buffer_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -4596,7 +4567,7 @@ void test_5_arg_mutable_buffer_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -4607,7 +4578,7 @@ void test_5_arg_mutable_buffer_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read_at(s, 1234, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
@@ -4616,13 +4587,9 @@ void test_5_arg_mutable_buffer_async_read_at()
void test_5_arg_boost_array_buffers_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -5237,7 +5204,7 @@ void test_5_arg_boost_array_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5248,7 +5215,7 @@ void test_5_arg_boost_array_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5260,7 +5227,7 @@ void test_5_arg_boost_array_buffers_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5272,7 +5239,7 @@ void test_5_arg_boost_array_buffers_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5284,7 +5251,7 @@ void test_5_arg_boost_array_buffers_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5296,7 +5263,7 @@ void test_5_arg_boost_array_buffers_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5307,7 +5274,7 @@ void test_5_arg_boost_array_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read_at(s, 1234, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
@@ -5317,15 +5284,10 @@ void test_5_arg_boost_array_buffers_async_read_at()
void test_5_arg_std_array_buffers_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_random_access_device s(ioc);
char read_buf[sizeof(read_data)];
@@ -5938,7 +5900,7 @@ void test_5_arg_std_array_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5949,7 +5911,7 @@ void test_5_arg_std_array_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5961,7 +5923,7 @@ void test_5_arg_std_array_buffers_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5973,7 +5935,7 @@ void test_5_arg_std_array_buffers_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5985,7 +5947,7 @@ void test_5_arg_std_array_buffers_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -5997,7 +5959,7 @@ void test_5_arg_std_array_buffers_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -6008,23 +5970,18 @@ void test_5_arg_std_array_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read_at(s, 1234, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_5_arg_vector_buffers_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -6638,7 +6595,7 @@ void test_5_arg_vector_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -6649,7 +6606,7 @@ void test_5_arg_vector_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -6661,7 +6618,7 @@ void test_5_arg_vector_buffers_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -6673,7 +6630,7 @@ void test_5_arg_vector_buffers_async_read_at()
s.next_read_length(1);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -6685,7 +6642,7 @@ void test_5_arg_vector_buffers_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 0, buffers, short_transfer,
+ asio::async_read_at(s, 0, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -6697,7 +6654,7 @@ void test_5_arg_vector_buffers_async_read_at()
s.next_read_length(10);
memset(read_buf, 0, sizeof(read_buf));
called = false;
- asio::async_read_at(s, 1234, buffers, short_transfer,
+ asio::async_read_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -6708,7 +6665,7 @@ void test_5_arg_vector_buffers_async_read_at()
s.reset(read_data, sizeof(read_data));
memset(read_buf, 0, sizeof(read_buf));
int i = asio::async_read_at(s, 1234, buffers,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
@@ -6717,13 +6674,9 @@ void test_5_arg_vector_buffers_async_read_at()
void test_5_arg_streambuf_async_read_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -7382,7 +7335,7 @@ void test_5_arg_streambuf_async_read_at()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
called = false;
- asio::async_read_at(s, 0, sb, short_transfer,
+ asio::async_read_at(s, 0, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -7394,7 +7347,7 @@ void test_5_arg_streambuf_async_read_at()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
called = false;
- asio::async_read_at(s, 1234, sb, short_transfer,
+ asio::async_read_at(s, 1234, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -7407,7 +7360,7 @@ void test_5_arg_streambuf_async_read_at()
s.next_read_length(1);
sb.consume(sb.size());
called = false;
- asio::async_read_at(s, 0, sb, short_transfer,
+ asio::async_read_at(s, 0, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -7420,7 +7373,7 @@ void test_5_arg_streambuf_async_read_at()
s.next_read_length(1);
sb.consume(sb.size());
called = false;
- asio::async_read_at(s, 1234, sb, short_transfer,
+ asio::async_read_at(s, 1234, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -7433,7 +7386,7 @@ void test_5_arg_streambuf_async_read_at()
s.next_read_length(10);
sb.consume(sb.size());
called = false;
- asio::async_read_at(s, 0, sb, short_transfer,
+ asio::async_read_at(s, 0, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -7446,7 +7399,7 @@ void test_5_arg_streambuf_async_read_at()
s.next_read_length(10);
sb.consume(sb.size());
called = false;
- asio::async_read_at(s, 1234, sb, short_transfer,
+ asio::async_read_at(s, 1234, sb, short_transfer(),
bindns::bind(async_read_handler,
_1, _2, sizeof(read_data), &called));
ioc.restart();
@@ -7458,7 +7411,7 @@ void test_5_arg_streambuf_async_read_at()
s.reset(read_data, sizeof(read_data));
sb.consume(sb.size());
int i = asio::async_read_at(s, 1234, sb,
- short_transfer, archetypes::lazy_handler());
+ short_transfer(), archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
diff --git a/3rdparty/asio/src/tests/unit/read_until.cpp b/3rdparty/asio/src/tests/unit/read_until.cpp
index 782ac2f4b6b..139fcf6f0a9 100644
--- a/3rdparty/asio/src/tests/unit/read_until.cpp
+++ b/3rdparty/asio/src/tests/unit/read_until.cpp
@@ -2,7 +2,7 @@
// read_until.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,18 +17,13 @@
#include "asio/read_until.hpp"
#include <cstring>
+#include <functional>
#include "archetypes/async_result.hpp"
#include "asio/io_context.hpp"
#include "asio/post.hpp"
#include "asio/streambuf.hpp"
#include "unit_test.hpp"
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
class test_stream
{
public:
@@ -42,7 +37,7 @@ public:
{
}
- executor_type get_executor() ASIO_NOEXCEPT
+ executor_type get_executor() noexcept
{
return io_context_.get_executor();
}
@@ -88,7 +83,7 @@ public:
size_t bytes_transferred = read_some(buffers);
asio::post(get_executor(),
asio::detail::bind_handler(
- ASIO_MOVE_CAST(Handler)(handler),
+ static_cast<Handler&&>(handler),
asio::error_code(), bytes_transferred));
}
@@ -104,8 +99,98 @@ private:
static const char read_data[]
= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-void test_char_read_until()
+void test_dynamic_string_read_until_char()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data1, data2;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb1 = asio::dynamic_buffer(data1);
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb2 = asio::dynamic_buffer(data2, 25);
+ asio::error_code ec;
+
+ s.reset(read_data, sizeof(read_data));
+ sb1.consume(sb1.size());
+ std::size_t length = asio::read_until(s, sb1, 'Z');
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, 'Z');
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, 'Z');
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, 'Z', ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, 'Z', ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, 'Z', ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, 'Z', ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, 'Z', ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, 'Z', ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, 'Y', ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, 'Y', ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, 'Y', ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+}
+
+void test_streambuf_read_until_char()
{
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
asio::io_context ioc;
test_stream s(ioc);
asio::streambuf sb1;
@@ -188,12 +273,103 @@ void test_char_read_until()
length = asio::read_until(s, sb2, 'Y', ec);
ASIO_CHECK(!ec);
ASIO_CHECK(length == 25);
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
-void test_string_read_until()
+void test_dynamic_string_read_until_string()
{
asio::io_context ioc;
test_stream s(ioc);
+ std::string data1, data2;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb1 = asio::dynamic_buffer(data1);
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb2 = asio::dynamic_buffer(data2, 25);
+ asio::error_code ec;
+
+ s.reset(read_data, sizeof(read_data));
+ sb1.consume(sb1.size());
+ std::size_t length = asio::read_until(s, sb1, "XYZ");
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, "XYZ");
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, "XYZ");
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, "XYZ", ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, "XYZ", ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, "XYZ", ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, "XYZ", ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, "XYZ", ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, "XYZ", ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, "WXY", ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, "WXY", ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, "WXY", ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+}
+
+void test_streambuf_read_until_string()
+{
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
+ asio::io_context ioc;
+ test_stream s(ioc);
asio::streambuf sb1;
asio::streambuf sb2(25);
asio::error_code ec;
@@ -274,6 +450,7 @@ void test_string_read_until()
length = asio::read_until(s, sb2, "WXY", ec);
ASIO_CHECK(!ec);
ASIO_CHECK(length == 25);
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
class match_char
@@ -303,8 +480,98 @@ namespace asio {
};
} // namespace asio
-void test_match_condition_read_until()
+void test_dynamic_string_read_until_match_condition()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data1, data2;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb1 = asio::dynamic_buffer(data1);
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb2 = asio::dynamic_buffer(data2, 25);
+ asio::error_code ec;
+
+ s.reset(read_data, sizeof(read_data));
+ sb1.consume(sb1.size());
+ std::size_t length = asio::read_until(s, sb1, match_char('Z'));
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, match_char('Z'));
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, match_char('Z'));
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, match_char('Z'), ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, match_char('Z'), ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb1.consume(sb1.size());
+ length = asio::read_until(s, sb1, match_char('Z'), ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, match_char('Z'), ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, match_char('Z'), ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, match_char('Z'), ec);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, match_char('Y'), ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, match_char('Y'), ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ sb2.consume(sb2.size());
+ length = asio::read_until(s, sb2, match_char('Y'), ec);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+}
+
+void test_streambuf_read_until_match_condition()
{
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
asio::io_context ioc;
test_stream s(ioc);
asio::streambuf sb1;
@@ -387,6 +654,7 @@ void test_match_condition_read_until()
length = asio::read_until(s, sb2, match_char('Y'), ec);
ASIO_CHECK(!ec);
ASIO_CHECK(length == 25);
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
void async_read_handler(
@@ -398,15 +666,170 @@ void async_read_handler(
*called = true;
}
-void test_char_async_read_until()
+void test_dynamic_string_async_read_until_char()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data1, data2;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb1 = asio::dynamic_buffer(data1);
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb2 = asio::dynamic_buffer(data2, 25);
+ asio::error_code ec;
+ std::size_t length;
+ bool called;
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, 'Z',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, 'Z',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, 'Z',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, 'Z',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, 'Z',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, 'Z',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, 'Y',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, 'Y',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, 'Y',
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ int i = asio::async_read_until(s, sb2, 'Y',
+ archetypes::lazy_handler());
+ ASIO_CHECK(i == 42);
+ ioc.restart();
+ ioc.run();
+}
+
+void test_streambuf_async_read_until_char()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -555,17 +978,173 @@ void test_char_async_read_until()
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
+}
+
+void test_dynamic_string_async_read_until_string()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data1, data2;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb1 = asio::dynamic_buffer(data1);
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb2 = asio::dynamic_buffer(data2, 25);
+ asio::error_code ec;
+ std::size_t length;
+ bool called;
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, "XYZ",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, "XYZ",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, "XYZ",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, "XYZ",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, "XYZ",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, "XYZ",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, "WXY",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, "WXY",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, "WXY",
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ int i = asio::async_read_until(s, sb2, "WXY",
+ archetypes::lazy_handler());
+ ASIO_CHECK(i == 42);
+ ioc.restart();
+ ioc.run();
}
-void test_string_async_read_until()
+void test_streambuf_async_read_until_string()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -714,17 +1293,173 @@ void test_string_async_read_until()
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
+}
+
+void test_dynamic_string_async_read_until_match_condition()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data1, data2;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb1 = asio::dynamic_buffer(data1);
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb2 = asio::dynamic_buffer(data2, 25);
+ asio::error_code ec;
+ std::size_t length;
+ bool called;
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, match_char('Z'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, match_char('Z'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb1.consume(sb1.size());
+ asio::async_read_until(s, sb1, match_char('Z'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 26);
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, match_char('Z'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, match_char('Z'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, match_char('Z'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(ec == asio::error::not_found);
+ ASIO_CHECK(length == 0);
+
+ s.reset(read_data, sizeof(read_data));
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, match_char('Y'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(1);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, match_char('Y'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ s.next_read_length(10);
+ ec = asio::error_code();
+ length = 0;
+ called = false;
+ sb2.consume(sb2.size());
+ asio::async_read_until(s, sb2, match_char('Y'),
+ bindns::bind(async_read_handler, _1, &ec,
+ _2, &length, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(length == 25);
+
+ s.reset(read_data, sizeof(read_data));
+ sb2.consume(sb2.size());
+ int i = asio::async_read_until(s, sb2, match_char('Y'),
+ archetypes::lazy_handler());
+ ASIO_CHECK(i == 42);
+ ioc.restart();
+ ioc.run();
}
-void test_match_condition_async_read_until()
+void test_streambuf_async_read_until_match_condition()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -873,15 +1608,22 @@ void test_match_condition_async_read_until()
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
ASIO_TEST_SUITE
(
"read_until",
- ASIO_TEST_CASE(test_char_read_until)
- ASIO_TEST_CASE(test_string_read_until)
- ASIO_TEST_CASE(test_match_condition_read_until)
- ASIO_TEST_CASE(test_char_async_read_until)
- ASIO_TEST_CASE(test_string_async_read_until)
- ASIO_TEST_CASE(test_match_condition_async_read_until)
+ ASIO_TEST_CASE(test_dynamic_string_read_until_char)
+ ASIO_TEST_CASE(test_streambuf_read_until_char)
+ ASIO_TEST_CASE(test_dynamic_string_read_until_string)
+ ASIO_TEST_CASE(test_streambuf_read_until_string)
+ ASIO_TEST_CASE(test_dynamic_string_read_until_match_condition)
+ ASIO_TEST_CASE(test_streambuf_read_until_match_condition)
+ ASIO_TEST_CASE(test_dynamic_string_async_read_until_char)
+ ASIO_TEST_CASE(test_streambuf_async_read_until_char)
+ ASIO_TEST_CASE(test_dynamic_string_async_read_until_string)
+ ASIO_TEST_CASE(test_streambuf_async_read_until_string)
+ ASIO_TEST_CASE(test_dynamic_string_async_read_until_match_condition)
+ ASIO_TEST_CASE(test_streambuf_async_read_until_match_condition)
)
diff --git a/3rdparty/asio/src/tests/unit/readable_pipe.cpp b/3rdparty/asio/src/tests/unit/readable_pipe.cpp
new file mode 100644
index 00000000000..6f29710e3da
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/readable_pipe.cpp
@@ -0,0 +1,131 @@
+//
+// readable_pipe.cpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header pipe is self-contained.
+#include "asio/readable_pipe.hpp"
+
+#include "archetypes/async_result.hpp"
+#include "asio/io_context.hpp"
+#include "unit_test.hpp"
+
+// readable_pipe_compile test
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that all public member functions on the class
+// readable_pipe compile and link correctly. Runtime failures are ignored.
+
+namespace readable_pipe_compile {
+
+struct write_some_handler
+{
+ write_some_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ write_some_handler(write_some_handler&&) {}
+private:
+ write_some_handler(const write_some_handler&);
+};
+
+struct read_some_handler
+{
+ read_some_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ read_some_handler(read_some_handler&&) {}
+private:
+ read_some_handler(const read_some_handler&);
+};
+
+void test()
+{
+#if defined(ASIO_HAS_PIPE)
+ using namespace asio;
+
+ try
+ {
+ io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
+ char mutable_char_buffer[128] = "";
+ archetypes::lazy_handler lazy;
+ asio::error_code ec;
+ const std::string path;
+
+ // basic_readable_pipe constructors.
+
+ readable_pipe pipe1(ioc);
+ readable_pipe::native_handle_type native_pipe1 = pipe1.native_handle();
+ readable_pipe pipe2(ioc, native_pipe1);
+
+ readable_pipe pipe3(ioc_ex);
+ readable_pipe::native_handle_type native_pipe2 = pipe1.native_handle();
+ readable_pipe pipe4(ioc_ex, native_pipe2);
+
+ readable_pipe pipe5(std::move(pipe4));
+
+ basic_readable_pipe<io_context::executor_type> pipe6(ioc);
+ readable_pipe pipe7(std::move(pipe6));
+
+ // basic_readable_pipe operators.
+
+ pipe1 = readable_pipe(ioc);
+ pipe1 = std::move(pipe2);
+ pipe1 = std::move(pipe6);
+
+ // basic_io_object functions.
+
+ readable_pipe::executor_type ex = pipe1.get_executor();
+ (void)ex;
+
+ // basic_readable_pipe functions.
+
+ readable_pipe::native_handle_type native_pipe3 = pipe1.native_handle();
+ pipe1.assign(native_pipe3);
+ readable_pipe::native_handle_type native_pipe4 = pipe1.native_handle();
+ pipe1.assign(native_pipe4, ec);
+
+ bool is_open = pipe1.is_open();
+ (void)is_open;
+
+ pipe1.close();
+ pipe1.close(ec);
+
+ readable_pipe::native_handle_type native_pipe5 = pipe1.release();
+ (void)native_pipe5;
+ readable_pipe::native_handle_type native_pipe6 = pipe1.release(ec);
+ (void)native_pipe6;
+
+ readable_pipe::native_handle_type native_pipe7 = pipe1.native_handle();
+ (void)native_pipe7;
+
+ pipe1.cancel();
+ pipe1.cancel(ec);
+
+ pipe1.read_some(buffer(mutable_char_buffer));
+ pipe1.read_some(buffer(mutable_char_buffer), ec);
+
+ pipe1.async_read_some(buffer(mutable_char_buffer), read_some_handler());
+ int i3 = pipe1.async_read_some(buffer(mutable_char_buffer), lazy);
+ (void)i3;
+ }
+ catch (std::exception&)
+ {
+ }
+#endif // defined(ASIO_HAS_PIPE)
+}
+
+} // namespace readable_pipe_compile
+
+ASIO_TEST_SUITE
+(
+ "readable_pipe",
+ ASIO_COMPILE_TEST_CASE(readable_pipe_compile::test)
+)
diff --git a/3rdparty/asio/src/tests/unit/recycling_allocator.cpp b/3rdparty/asio/src/tests/unit/recycling_allocator.cpp
new file mode 100644
index 00000000000..cc4654fc9f0
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/recycling_allocator.cpp
@@ -0,0 +1,80 @@
+//
+// recycling_allocator.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/recycling_allocator.hpp"
+
+#include "unit_test.hpp"
+#include <vector>
+#include "asio/detail/type_traits.hpp"
+
+void recycling_allocator_test()
+{
+ ASIO_CHECK((
+ asio::is_same<
+ asio::recycling_allocator<int>::value_type,
+ int
+ >::value));
+
+ ASIO_CHECK((
+ asio::is_same<
+ asio::recycling_allocator<void>::value_type,
+ void
+ >::value));
+
+ ASIO_CHECK((
+ asio::is_same<
+ asio::recycling_allocator<int>::rebind<char>::other,
+ asio::recycling_allocator<char>
+ >::value));
+
+ ASIO_CHECK((
+ asio::is_same<
+ asio::recycling_allocator<void>::rebind<char>::other,
+ asio::recycling_allocator<char>
+ >::value));
+
+ asio::recycling_allocator<int> a1;
+ asio::recycling_allocator<int> a2(a1);
+
+ ASIO_CHECK(a1 == a2);
+ ASIO_CHECK(!(a1 != a2));
+
+ asio::recycling_allocator<void> a3;
+ asio::recycling_allocator<void> a4(a3);
+
+ ASIO_CHECK(a3 == a4);
+ ASIO_CHECK(!(a3 != a4));
+
+ asio::recycling_allocator<int> a5(a4);
+ (void)a5;
+
+ asio::recycling_allocator<void> a6(a5);
+ (void)a6;
+
+ int* p = a1.allocate(42);
+ ASIO_CHECK(p != 0);
+
+ a1.deallocate(p, 42);
+
+ std::vector<int, asio::recycling_allocator<int> > v(42);
+ ASIO_CHECK(v.size() == 42);
+}
+
+ASIO_TEST_SUITE
+(
+ "recycling_allocator",
+ ASIO_TEST_CASE(recycling_allocator_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/redirect_error.cpp b/3rdparty/asio/src/tests/unit/redirect_error.cpp
new file mode 100644
index 00000000000..7a581495566
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/redirect_error.cpp
@@ -0,0 +1,121 @@
+//
+// redirect_error.cpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/redirect_error.hpp"
+
+#include "asio/bind_executor.hpp"
+#include "asio/deferred.hpp"
+#include "asio/io_context.hpp"
+#include "asio/post.hpp"
+#include "asio/system_timer.hpp"
+#include "asio/use_future.hpp"
+#include "unit_test.hpp"
+
+struct redirect_error_handler
+{
+ int* count_;
+
+ explicit redirect_error_handler(int* c)
+ : count_(c)
+ {
+ }
+
+ void operator()()
+ {
+ ++(*count_);
+ }
+};
+
+void redirect_error_test()
+{
+ asio::io_context io1;
+ asio::io_context io2;
+ asio::system_timer timer1(io1);
+ asio::error_code ec = asio::error::would_block;
+ int count = 0;
+
+ timer1.expires_after(asio::chrono::seconds(0));
+ timer1.async_wait(
+ asio::redirect_error(
+ asio::bind_executor(io2.get_executor(),
+ redirect_error_handler(&count)), ec));
+
+ ASIO_CHECK(ec == asio::error::would_block);
+ ASIO_CHECK(count == 0);
+
+ io1.run();
+
+ ASIO_CHECK(ec == asio::error::would_block);
+ ASIO_CHECK(count == 0);
+
+ io2.run();
+
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(count == 1);
+
+ ec = asio::error::would_block;
+ timer1.async_wait(
+ asio::redirect_error(
+ asio::bind_executor(io2.get_executor(),
+ asio::deferred), ec))(redirect_error_handler(&count));
+
+ ASIO_CHECK(ec == asio::error::would_block);
+ ASIO_CHECK(count == 1);
+
+ io1.restart();
+ io1.run();
+
+ ASIO_CHECK(ec == asio::error::would_block);
+ ASIO_CHECK(count == 1);
+
+ io2.restart();
+ io2.run();
+
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(count == 2);
+
+#if defined(ASIO_HAS_STD_FUTURE_CLASS)
+ ec = asio::error::would_block;
+ std::future<void> f = timer1.async_wait(
+ asio::redirect_error(
+ asio::bind_executor(io2.get_executor(),
+ asio::use_future), ec));
+
+ ASIO_CHECK(ec == asio::error::would_block);
+ ASIO_CHECK(f.wait_for(std::chrono::seconds(0))
+ == std::future_status::timeout);
+
+ io1.restart();
+ io1.run();
+
+ ASIO_CHECK(ec == asio::error::would_block);
+ ASIO_CHECK(f.wait_for(std::chrono::seconds(0))
+ == std::future_status::timeout);
+
+ io2.restart();
+ io2.run();
+
+ ASIO_CHECK(!ec);
+ ASIO_CHECK(f.wait_for(std::chrono::seconds(0))
+ == std::future_status::ready);
+#endif // defined(ASIO_HAS_STD_FUTURE_CLASS)
+}
+
+ASIO_TEST_SUITE
+(
+ "redirect_error",
+ ASIO_TEST_CASE(redirect_error_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/registered_buffer.cpp b/3rdparty/asio/src/tests/unit/registered_buffer.cpp
new file mode 100644
index 00000000000..09c33415a14
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/registered_buffer.cpp
@@ -0,0 +1,111 @@
+//
+// registered_buffer.cpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/registered_buffer.hpp"
+
+#include "unit_test.hpp"
+
+//------------------------------------------------------------------------------
+
+// registered_buffer_compile test
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that all the mutable_registered_buffer and
+// const_registered_buffer classes compile and link correctly. Runtime
+// failures are ignored.
+
+namespace registered_buffer_compile {
+
+using namespace asio;
+
+void test()
+{
+ try
+ {
+ // mutable_registered_buffer constructors.
+
+ mutable_registered_buffer mb1;
+ mutable_registered_buffer mb2(mb1);
+ (void)mb2;
+
+ // mutable_registered_buffer functions.
+
+ mutable_buffer b1 = mb1.buffer();
+ (void)b1;
+
+ void* ptr1 = mb1.data();
+ (void)ptr1;
+
+ std::size_t n1 = mb1.size();
+ (void)n1;
+
+ registered_buffer_id id1 = mb1.id();
+ (void)id1;
+
+ // mutable_registered_buffer operators.
+
+ mb1 += 128;
+ mb1 = mb2 + 128;
+ mb1 = 128 + mb2;
+
+ // const_registered_buffer constructors.
+
+ const_registered_buffer cb1;
+ const_registered_buffer cb2(cb1);
+ (void)cb2;
+ const_registered_buffer cb3(mb1);
+ (void)cb3;
+
+ // const_registered_buffer functions.
+
+ const_buffer b2 = cb1.buffer();
+ (void)b2;
+
+ const void* ptr2 = cb1.data();
+ (void)ptr2;
+
+ std::size_t n2 = cb1.size();
+ (void)n2;
+
+ registered_buffer_id id2 = cb1.id();
+ (void)id2;
+
+ // const_registered_buffer operators.
+
+ cb1 += 128;
+ cb1 = cb2 + 128;
+ cb1 = 128 + cb2;
+
+ // buffer function overloads.
+
+ mb1 = buffer(mb2);
+ mb1 = buffer(mb2, 128);
+ cb1 = buffer(cb2);
+ cb1 = buffer(cb2, 128);
+ }
+ catch (std::exception&)
+ {
+ }
+}
+
+} // namespace buffer_compile
+
+//------------------------------------------------------------------------------
+
+ASIO_TEST_SUITE
+(
+ "registered_buffer",
+ ASIO_COMPILE_TEST_CASE(registered_buffer_compile::test)
+)
diff --git a/3rdparty/asio/src/tests/unit/serial_port.cpp b/3rdparty/asio/src/tests/unit/serial_port.cpp
index ff6e2dc261a..9bbafd34d9b 100644
--- a/3rdparty/asio/src/tests/unit/serial_port.cpp
+++ b/3rdparty/asio/src/tests/unit/serial_port.cpp
@@ -2,7 +2,7 @@
// serial_port.cpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -34,22 +34,18 @@ struct write_some_handler
{
write_some_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
write_some_handler(write_some_handler&&) {}
private:
write_some_handler(const write_some_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
struct read_some_handler
{
read_some_handler() {}
void operator()(const asio::error_code&, std::size_t) {}
-#if defined(ASIO_HAS_MOVE)
read_some_handler(read_some_handler&&) {}
private:
read_some_handler(const read_some_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
void test()
@@ -60,6 +56,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
serial_port::baud_rate serial_port_option;
@@ -71,48 +68,49 @@ void test()
serial_port port1(ioc);
serial_port port2(ioc, "null");
serial_port::native_handle_type native_port1 = port1.native_handle();
+#if defined(ASIO_MSVC) && (_MSC_VER < 1910)
+ // Skip this on older MSVC due to mysterious ambiguous overload errors.
+#else
serial_port port3(ioc, native_port1);
+#endif
-#if defined(ASIO_HAS_MOVE)
- serial_port port4(std::move(port3));
-#endif // defined(ASIO_HAS_MOVE)
+ serial_port port4(ioc_ex);
+ serial_port port5(ioc_ex, "null");
+ serial_port::native_handle_type native_port2 = port1.native_handle();
+ serial_port port6(ioc_ex, native_port2);
+
+ serial_port port7(std::move(port6));
+
+ basic_serial_port<io_context::executor_type> port8(ioc);
+ serial_port port9(std::move(port8));
// basic_serial_port operators.
-#if defined(ASIO_HAS_MOVE)
port1 = serial_port(ioc);
port1 = std::move(port2);
-#endif // defined(ASIO_HAS_MOVE)
+ port1 = std::move(port8);
// basic_io_object functions.
serial_port::executor_type ex = port1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = port1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = port1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
// basic_serial_port functions.
serial_port::lowest_layer_type& lowest_layer = port1.lowest_layer();
(void)lowest_layer;
- const serial_port& port5 = port1;
- const serial_port::lowest_layer_type& lowest_layer2 = port5.lowest_layer();
+ const serial_port& port10 = port1;
+ const serial_port::lowest_layer_type& lowest_layer2 = port10.lowest_layer();
(void)lowest_layer2;
port1.open("null");
port1.open("null", ec);
- serial_port::native_handle_type native_port2 = port1.native_handle();
- port1.assign(native_port2);
serial_port::native_handle_type native_port3 = port1.native_handle();
- port1.assign(native_port3, ec);
+ port1.assign(native_port3);
+ serial_port::native_handle_type native_port4 = port1.native_handle();
+ port1.assign(native_port4, ec);
bool is_open = port1.is_open();
(void)is_open;
@@ -120,8 +118,8 @@ void test()
port1.close();
port1.close(ec);
- serial_port::native_handle_type native_port4 = port1.native_handle();
- (void)native_port4;
+ serial_port::native_handle_type native_port5 = port1.native_handle();
+ (void)native_port5;
port1.cancel();
port1.cancel(ec);
@@ -167,5 +165,5 @@ void test()
ASIO_TEST_SUITE
(
"serial_port",
- ASIO_TEST_CASE(serial_port_compile::test)
+ ASIO_COMPILE_TEST_CASE(serial_port_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/serial_port_base.cpp b/3rdparty/asio/src/tests/unit/serial_port_base.cpp
index d05e7bbaafe..1c888ef661c 100644
--- a/3rdparty/asio/src/tests/unit/serial_port_base.cpp
+++ b/3rdparty/asio/src/tests/unit/serial_port_base.cpp
@@ -2,7 +2,7 @@
// serial_port_base.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -95,5 +95,5 @@ void test()
ASIO_TEST_SUITE
(
"serial_port_base",
- ASIO_TEST_CASE(serial_port_base_compile::test)
+ ASIO_COMPILE_TEST_CASE(serial_port_base_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/serial_port_service.cpp b/3rdparty/asio/src/tests/unit/serial_port_service.cpp
deleted file mode 100644
index c0c596194e7..00000000000
--- a/3rdparty/asio/src/tests/unit/serial_port_service.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// serial_port_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.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)
-//
-
-// Disable autolinking for unit tests.
-#if !defined(BOOST_ALL_NO_LIB)
-#define BOOST_ALL_NO_LIB 1
-#endif // !defined(BOOST_ALL_NO_LIB)
-
-// Test that header file is self-contained.
-#include "asio/serial_port_service.hpp"
-
-#include "unit_test.hpp"
-
-ASIO_TEST_SUITE
-(
- "serial_port_service",
- ASIO_TEST_CASE(null_test)
-)
diff --git a/3rdparty/asio/src/tests/unit/signal_set.cpp b/3rdparty/asio/src/tests/unit/signal_set.cpp
index 7118bb96ac0..962be8ba92e 100644
--- a/3rdparty/asio/src/tests/unit/signal_set.cpp
+++ b/3rdparty/asio/src/tests/unit/signal_set.cpp
@@ -2,7 +2,7 @@
// signal_set.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -40,6 +40,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
archetypes::lazy_handler lazy;
asio::error_code ec;
@@ -50,24 +51,24 @@ void test()
signal_set set3(ioc, 1, 2);
signal_set set4(ioc, 1, 2, 3);
+ signal_set set5(ioc_ex);
+ signal_set set6(ioc_ex, 1);
+ signal_set set7(ioc_ex, 1, 2);
+ signal_set set8(ioc_ex, 1, 2, 3);
+
// basic_io_object functions.
signal_set::executor_type ex = set1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = set1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = set1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
// basic_signal_set functions.
set1.add(1);
set1.add(1, ec);
+ set1.add(1, signal_set::flags::dont_care);
+ set1.add(1, signal_set::flags::dont_care, ec);
+
set1.remove(1);
set1.remove(1, ec);
@@ -93,5 +94,5 @@ void test()
ASIO_TEST_SUITE
(
"signal_set",
- ASIO_TEST_CASE(signal_set_compile::test)
+ ASIO_COMPILE_TEST_CASE(signal_set_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/signal_set_base.cpp b/3rdparty/asio/src/tests/unit/signal_set_base.cpp
new file mode 100644
index 00000000000..7f27e8ccc2e
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/signal_set_base.cpp
@@ -0,0 +1,30 @@
+//
+// signal_set_base.cpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/signal_set_base.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "signal_set_base",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/socket_acceptor_service.cpp b/3rdparty/asio/src/tests/unit/socket_acceptor_service.cpp
deleted file mode 100644
index 772218631a6..00000000000
--- a/3rdparty/asio/src/tests/unit/socket_acceptor_service.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// socket_acceptor_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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)
-//
-
-// Disable autolinking for unit tests.
-#if !defined(BOOST_ALL_NO_LIB)
-#define BOOST_ALL_NO_LIB 1
-#endif // !defined(BOOST_ALL_NO_LIB)
-
-// Test that header file is self-contained.
-#include "asio/socket_acceptor_service.hpp"
-
-#include "unit_test.hpp"
-
-ASIO_TEST_SUITE
-(
- "socket_acceptor_service",
- ASIO_TEST_CASE(null_test)
-)
diff --git a/3rdparty/asio/src/tests/unit/socket_base.cpp b/3rdparty/asio/src/tests/unit/socket_base.cpp
index f7170ace0e9..21f63ab433c 100644
--- a/3rdparty/asio/src/tests/unit/socket_base.cpp
+++ b/3rdparty/asio/src/tests/unit/socket_base.cpp
@@ -2,7 +2,7 @@
// socket_base.cpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -155,6 +155,17 @@ void test()
linger1.timeout(1);
(void)static_cast<int>(linger1.timeout());
+ // out_of_band_inline class.
+
+ socket_base::out_of_band_inline out_of_band_inline1(true);
+ sock.set_option(out_of_band_inline1);
+ socket_base::out_of_band_inline out_of_band_inline2;
+ sock.get_option(out_of_band_inline2);
+ out_of_band_inline1 = true;
+ (void)static_cast<bool>(out_of_band_inline1);
+ (void)static_cast<bool>(!out_of_band_inline1);
+ (void)static_cast<bool>(out_of_band_inline1.value());
+
// enable_connection_aborted class.
socket_base::enable_connection_aborted enable_connection_aborted1(true);
@@ -634,6 +645,6 @@ void test()
ASIO_TEST_SUITE
(
"socket_base",
- ASIO_TEST_CASE(socket_base_compile::test)
+ ASIO_COMPILE_TEST_CASE(socket_base_compile::test)
ASIO_TEST_CASE(socket_base_runtime::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ssl/.gitignore b/3rdparty/asio/src/tests/unit/ssl/.gitignore
deleted file mode 100644
index 5c2ad3eba55..00000000000
--- a/3rdparty/asio/src/tests/unit/ssl/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*.ilk
-*.manifest
-*.pdb
-*.tds
-context
-context_base
-rfc2818_verification
-stream
-stream_base
diff --git a/3rdparty/asio/src/tests/unit/ssl/context.cpp b/3rdparty/asio/src/tests/unit/ssl/context.cpp
index 27d63d5a9bc..621bf11c4a0 100644
--- a/3rdparty/asio/src/tests/unit/ssl/context.cpp
+++ b/3rdparty/asio/src/tests/unit/ssl/context.cpp
@@ -2,7 +2,7 @@
// context.cpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ssl/context_base.cpp b/3rdparty/asio/src/tests/unit/ssl/context_base.cpp
index 19ef5740d2f..9ddddad3a8e 100644
--- a/3rdparty/asio/src/tests/unit/ssl/context_base.cpp
+++ b/3rdparty/asio/src/tests/unit/ssl/context_base.cpp
@@ -2,7 +2,7 @@
// context_base.cpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ip/resolver_service.cpp b/3rdparty/asio/src/tests/unit/ssl/error.cpp
index 7b0ac2a9ac3..633d7b61e8f 100644
--- a/3rdparty/asio/src/tests/unit/ip/resolver_service.cpp
+++ b/3rdparty/asio/src/tests/unit/ssl/error.cpp
@@ -1,8 +1,8 @@
//
-// resolver_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~
+// error.cpp
+// ~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/ip/resolver_service.hpp"
+#include "asio/ssl/error.hpp"
#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "ip/resolver_service",
+ "ssl/error",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/waitable_timer_service.cpp b/3rdparty/asio/src/tests/unit/ssl/host_name_verification.cpp
index 3aa530aab75..7126e4b083a 100644
--- a/3rdparty/asio/src/tests/unit/waitable_timer_service.cpp
+++ b/3rdparty/asio/src/tests/unit/ssl/host_name_verification.cpp
@@ -1,8 +1,8 @@
//
-// waitable_timer_service.cpp
+// host_name_verification.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/waitable_timer_service.hpp"
+#include "asio/ssl/host_name_verification.hpp"
-#include "unit_test.hpp"
+#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "waitable_timer_service",
+ "ssl/host_name_verification",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/ssl/rfc2818_verification.cpp b/3rdparty/asio/src/tests/unit/ssl/rfc2818_verification.cpp
index 15e0b5e35c3..adcfa95ded8 100644
--- a/3rdparty/asio/src/tests/unit/ssl/rfc2818_verification.cpp
+++ b/3rdparty/asio/src/tests/unit/ssl/rfc2818_verification.cpp
@@ -2,7 +2,7 @@
// rfc2818_verification.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ssl/stream.cpp b/3rdparty/asio/src/tests/unit/ssl/stream.cpp
index 542949eb60c..467115169b9 100644
--- a/3rdparty/asio/src/tests/unit/ssl/stream.cpp
+++ b/3rdparty/asio/src/tests/unit/ssl/stream.cpp
@@ -2,7 +2,7 @@
// stream.cpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -75,19 +75,19 @@ void test()
ip::tcp::socket socket1(ioc, ip::tcp::v4());
ssl::stream<ip::tcp::socket&> stream2(socket1, context);
+ ssl::stream<ip::tcp::socket> stream3
+ = ssl::stream<ip::tcp::socket>(ioc, context);
+ ssl::stream<ip::tcp::socket> stream4(std::move(stream3));
+
+ // ssl::stream assignment.
+
+ stream3 = std::move(stream4);
+
// basic_io_object functions.
ssl::stream<ip::tcp::socket>::executor_type ex = stream1.get_executor();
(void)ex;
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = stream1.get_io_context();
- (void)ioc_ref;
-
- io_context& ioc_ref2 = stream1.get_io_service();
- (void)ioc_ref2;
-#endif // !defined(ASIO_NO_DEPRECATED)
-
// ssl::stream functions.
SSL* ssl1 = stream1.native_handle();
@@ -97,9 +97,9 @@ void test()
= stream1.lowest_layer();
(void)lowest_layer;
- const ssl::stream<ip::tcp::socket>& stream3 = stream1;
+ const ssl::stream<ip::tcp::socket>& stream5 = stream1;
const ssl::stream<ip::tcp::socket>::lowest_layer_type& lowest_layer2
- = stream3.lowest_layer();
+ = stream5.lowest_layer();
(void)lowest_layer2;
stream1.set_verify_mode(ssl::verify_none);
@@ -195,5 +195,5 @@ void test()
ASIO_TEST_SUITE
(
"ssl/stream",
- ASIO_TEST_CASE(ssl_stream_compile::test)
+ ASIO_COMPILE_TEST_CASE(ssl_stream_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/ssl/stream_base.cpp b/3rdparty/asio/src/tests/unit/ssl/stream_base.cpp
index 4dbc9e3b232..7e6a1e62ef0 100644
--- a/3rdparty/asio/src/tests/unit/ssl/stream_base.cpp
+++ b/3rdparty/asio/src/tests/unit/ssl/stream_base.cpp
@@ -2,7 +2,7 @@
// stream_base.cpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/static_thread_pool.cpp b/3rdparty/asio/src/tests/unit/static_thread_pool.cpp
new file mode 100644
index 00000000000..b9b050bf7ee
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/static_thread_pool.cpp
@@ -0,0 +1,30 @@
+//
+// static_thread_pool.cpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/static_thread_pool.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "static_thread_pool",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/steady_timer.cpp b/3rdparty/asio/src/tests/unit/steady_timer.cpp
index 18d4a8152fe..fe2c041db4e 100644
--- a/3rdparty/asio/src/tests/unit/steady_timer.cpp
+++ b/3rdparty/asio/src/tests/unit/steady_timer.cpp
@@ -2,7 +2,7 @@
// steady_timer.cpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/strand.cpp b/3rdparty/asio/src/tests/unit/strand.cpp
index 02a0f7d58fa..90ae2bc22a8 100644
--- a/3rdparty/asio/src/tests/unit/strand.cpp
+++ b/3rdparty/asio/src/tests/unit/strand.cpp
@@ -2,7 +2,7 @@
// strand.cpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,7 +16,9 @@
// Test that header file is self-contained.
#include "asio/strand.hpp"
+#include <functional>
#include <sstream>
+#include "asio/executor.hpp"
#include "asio/io_context.hpp"
#include "asio/dispatch.hpp"
#include "asio/post.hpp"
@@ -29,24 +31,13 @@
# include "asio/steady_timer.hpp"
#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
using namespace asio;
-
-#if defined(ASIO_HAS_BOOST_BIND)
-namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
-#endif
#if defined(ASIO_HAS_BOOST_DATE_TIME)
typedef deadline_timer timer;
namespace chronons = boost::posix_time;
-#elif defined(ASIO_HAS_CHRONO)
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
typedef steady_timer timer;
namespace chronons = asio::chrono;
#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
@@ -56,7 +47,7 @@ void increment(int* count)
++(*count);
}
-void increment_without_lock(io_context::strand* s, int* count)
+void increment_without_lock(strand<io_context::executor_type>* s, int* count)
{
ASIO_CHECK(!s->running_in_this_thread());
@@ -69,7 +60,7 @@ void increment_without_lock(io_context::strand* s, int* count)
ASIO_CHECK(*count == original_count + 1);
}
-void increment_with_lock(io_context::strand* s, int* count)
+void increment_with_lock(strand<io_context::executor_type>* s, int* count)
{
ASIO_CHECK(s->running_in_this_thread());
@@ -90,7 +81,28 @@ void sleep_increment(io_context* ioc, int* count)
++(*count);
}
-void start_sleep_increments(io_context* ioc, io_context::strand* s, int* count)
+void increment_by_a(int* count, int a)
+{
+ (*count) += a;
+}
+
+void increment_by_a_b(int* count, int a, int b)
+{
+ (*count) += a + b;
+}
+
+void increment_by_a_b_c(int* count, int a, int b, int c)
+{
+ (*count) += a + b + c;
+}
+
+void increment_by_a_b_c_d(int* count, int a, int b, int c, int d)
+{
+ (*count) += a + b + c + d;
+}
+
+void start_sleep_increments(io_context* ioc,
+ strand<io_context::executor_type>* s, int* count)
{
// Give all threads a chance to start.
timer t(*ioc, chronons::seconds(2));
@@ -115,7 +127,7 @@ void io_context_run(io_context* ioc)
void strand_test()
{
io_context ioc;
- io_context::strand s(ioc);
+ strand<io_context::executor_type> s = make_strand(ioc);
int count = 0;
post(ioc, bindns::bind(increment_without_lock, &s, &count));
@@ -207,7 +219,7 @@ void strand_test()
// Check for clean shutdown when handlers posted through an orphaned strand
// are abandoned.
{
- io_context::strand s2(ioc);
+ strand<io_context::executor_type> s2 = make_strand(ioc.get_executor());
post(s2, bindns::bind(increment, &count));
post(s2, bindns::bind(increment, &count));
post(s2, bindns::bind(increment, &count));
@@ -217,8 +229,230 @@ void strand_test()
ASIO_CHECK(count == 0);
}
+void strand_conversion_test()
+{
+ io_context ioc;
+ strand<io_context::executor_type> s1 = make_strand(ioc);
+
+ // Converting constructors.
+
+ strand<executor> s2(s1);
+ strand<executor> s3 = strand<io_context::executor_type>(s1);
+
+ // Converting assignment.
+
+ s3 = s1;
+ s3 = strand<io_context::executor_type>(s1);
+}
+
+void strand_query_test()
+{
+ io_context ioc;
+ strand<io_context::executor_type> s1 = make_strand(ioc);
+
+ ASIO_CHECK(
+ &asio::query(s1, asio::execution::context)
+ == &ioc);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::blocking)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::blocking.possibly)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::outstanding_work)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::outstanding_work.untracked)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::relationship)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::relationship.fork)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::mapping)
+ == asio::execution::mapping.thread);
+
+ ASIO_CHECK(
+ asio::query(s1, asio::execution::allocator)
+ == std::allocator<void>());
+}
+
+void strand_execute_test()
+{
+ io_context ioc;
+ strand<io_context::executor_type> s1 = make_strand(ioc);
+ int count = 0;
+
+ s1.execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(s1, asio::execution::blocking.possibly).execute(
+ bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(s1, asio::execution::blocking.never).execute(
+ bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ ASIO_CHECK(!ioc.stopped());
+
+ asio::require(s1,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.tracked
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(s1,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(s1,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.fork
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::require(s1,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::prefer(
+ asio::require(s1,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator(std::allocator<void>())
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+
+ count = 0;
+ ioc.restart();
+ asio::prefer(
+ asio::require(s1,
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator
+ ).execute(bindns::bind(increment, &count));
+
+ // No handlers can be called until run() is called.
+ ASIO_CHECK(!ioc.stopped());
+ ASIO_CHECK(count == 0);
+
+ ioc.run();
+
+ // The run() call will not return until all work has finished.
+ ASIO_CHECK(ioc.stopped());
+ ASIO_CHECK(count == 1);
+}
+
ASIO_TEST_SUITE
(
"strand",
ASIO_TEST_CASE(strand_test)
+ ASIO_COMPILE_TEST_CASE(strand_conversion_test)
+ ASIO_TEST_CASE(strand_query_test)
+ ASIO_TEST_CASE(strand_execute_test)
)
diff --git a/3rdparty/asio/src/tests/unit/stream_file.cpp b/3rdparty/asio/src/tests/unit/stream_file.cpp
new file mode 100644
index 00000000000..a4416751cd2
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/stream_file.cpp
@@ -0,0 +1,173 @@
+//
+// stream_file.cpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/stream_file.hpp"
+
+#include "archetypes/async_result.hpp"
+#include "asio/io_context.hpp"
+#include "unit_test.hpp"
+
+// stream_file_compile test
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that all public member functions on the class
+// stream_file compile and link correctly. Runtime failures are ignored.
+
+namespace stream_file_compile {
+
+struct write_some_handler
+{
+ write_some_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ write_some_handler(write_some_handler&&) {}
+private:
+ write_some_handler(const write_some_handler&);
+};
+
+struct read_some_handler
+{
+ read_some_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ read_some_handler(read_some_handler&&) {}
+private:
+ read_some_handler(const read_some_handler&);
+};
+
+void test()
+{
+#if defined(ASIO_HAS_FILE)
+ using namespace asio;
+
+ try
+ {
+ io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
+ char mutable_char_buffer[128] = "";
+ const char const_char_buffer[128] = "";
+ archetypes::lazy_handler lazy;
+ asio::error_code ec;
+ const std::string path;
+
+ // basic_stream_file constructors.
+
+ stream_file file1(ioc);
+ stream_file file2(ioc, "", stream_file::read_only);
+ stream_file file3(ioc, path, stream_file::read_only);
+ stream_file::native_handle_type native_file1 = file1.native_handle();
+ stream_file file4(ioc, native_file1);
+
+ stream_file file5(ioc_ex);
+ stream_file file6(ioc_ex, "", stream_file::read_only);
+ stream_file file7(ioc_ex, path, stream_file::read_only);
+ stream_file::native_handle_type native_file2 = file1.native_handle();
+ stream_file file8(ioc_ex, native_file2);
+
+ stream_file file9(std::move(file8));
+
+ basic_stream_file<io_context::executor_type> file10(ioc);
+ stream_file file11(std::move(file10));
+
+ // basic_stream_file operators.
+
+ file1 = stream_file(ioc);
+ file1 = std::move(file2);
+ file1 = std::move(file10);
+
+ // basic_io_object functions.
+
+ stream_file::executor_type ex = file1.get_executor();
+ (void)ex;
+
+ // basic_stream_file functions.
+
+ file1.open("", stream_file::read_only);
+ file1.open("", stream_file::read_only, ec);
+
+ file1.open(path, stream_file::read_only);
+ file1.open(path, stream_file::read_only, ec);
+
+ stream_file::native_handle_type native_file3 = file1.native_handle();
+ file1.assign(native_file3);
+ stream_file::native_handle_type native_file4 = file1.native_handle();
+ file1.assign(native_file4, ec);
+
+ bool is_open = file1.is_open();
+ (void)is_open;
+
+ file1.close();
+ file1.close(ec);
+
+ stream_file::native_handle_type native_file5 = file1.native_handle();
+ (void)native_file5;
+
+ stream_file::native_handle_type native_file6 = file1.release();
+ (void)native_file6;
+ stream_file::native_handle_type native_file7 = file1.release(ec);
+ (void)native_file7;
+
+ file1.cancel();
+ file1.cancel(ec);
+
+ asio::uint64_t s1 = file1.size();
+ (void)s1;
+ asio::uint64_t s2 = file1.size(ec);
+ (void)s2;
+
+ file1.resize(asio::uint64_t(0));
+ file1.resize(asio::uint64_t(0), ec);
+
+ file1.sync_all();
+ file1.sync_all(ec);
+
+ file1.sync_data();
+ file1.sync_data(ec);
+
+ asio::uint64_t s3 = file1.seek(0, stream_file::seek_set);
+ (void)s3;
+ asio::uint64_t s4 = file1.seek(0, stream_file::seek_set, ec);
+ (void)s4;
+
+ file1.write_some(buffer(mutable_char_buffer));
+ file1.write_some(buffer(const_char_buffer));
+ file1.write_some(buffer(mutable_char_buffer), ec);
+ file1.write_some(buffer(const_char_buffer), ec);
+
+ file1.async_write_some(buffer(mutable_char_buffer), write_some_handler());
+ file1.async_write_some(buffer(const_char_buffer), write_some_handler());
+ int i1 = file1.async_write_some(buffer(mutable_char_buffer), lazy);
+ (void)i1;
+ int i2 = file1.async_write_some(buffer(const_char_buffer), lazy);
+ (void)i2;
+
+ file1.read_some(buffer(mutable_char_buffer));
+ file1.read_some(buffer(mutable_char_buffer), ec);
+
+ file1.async_read_some(buffer(mutable_char_buffer), read_some_handler());
+ int i3 = file1.async_read_some(buffer(mutable_char_buffer), lazy);
+ (void)i3;
+ }
+ catch (std::exception&)
+ {
+ }
+#endif // defined(ASIO_HAS_FILE)
+}
+
+} // namespace stream_file_compile
+
+ASIO_TEST_SUITE
+(
+ "stream_file",
+ ASIO_COMPILE_TEST_CASE(stream_file_compile::test)
+)
diff --git a/3rdparty/asio/src/tests/unit/streambuf.cpp b/3rdparty/asio/src/tests/unit/streambuf.cpp
index 5e10e726d1c..c1c8477a242 100644
--- a/3rdparty/asio/src/tests/unit/streambuf.cpp
+++ b/3rdparty/asio/src/tests/unit/streambuf.cpp
@@ -2,7 +2,7 @@
// streambuf.cpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/system_context.cpp b/3rdparty/asio/src/tests/unit/system_context.cpp
new file mode 100644
index 00000000000..297ab6bd7c1
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/system_context.cpp
@@ -0,0 +1,30 @@
+//
+// system_context.cpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/system_context.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "system_context",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/system_executor.cpp b/3rdparty/asio/src/tests/unit/system_executor.cpp
new file mode 100644
index 00000000000..7b811ccac0c
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/system_executor.cpp
@@ -0,0 +1,147 @@
+//
+// system_executor.cpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/system_executor.hpp"
+
+#include <functional>
+#include "asio/dispatch.hpp"
+#include "asio/post.hpp"
+#include "unit_test.hpp"
+
+using namespace asio;
+
+namespace bindns = std;
+
+void increment(asio::detail::atomic_count* count)
+{
+ ++(*count);
+}
+
+void system_executor_query_test()
+{
+ ASIO_CHECK(
+ &asio::query(system_executor(),
+ asio::execution::context)
+ != static_cast<const system_context*>(0));
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::blocking)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::blocking.possibly)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::outstanding_work)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::outstanding_work.untracked)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::relationship)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::relationship.fork)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::mapping)
+ == asio::execution::mapping.thread);
+
+ ASIO_CHECK(
+ asio::query(system_executor(),
+ asio::execution::allocator)
+ == std::allocator<void>());
+}
+
+void system_executor_execute_test()
+{
+ asio::detail::atomic_count count(0);
+
+ system_executor().execute(bindns::bind(increment, &count));
+
+ asio::require(system_executor(),
+ asio::execution::blocking.possibly
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(system_executor(),
+ asio::execution::blocking.always
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(system_executor(),
+ asio::execution::blocking.never
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(system_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(system_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.fork
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(system_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation
+ ).execute(bindns::bind(increment, &count));
+
+ asio::prefer(
+ asio::require(system_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator(std::allocator<void>())
+ ).execute(bindns::bind(increment, &count));
+
+ asio::prefer(
+ asio::require(system_executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator
+ ).execute(bindns::bind(increment, &count));
+
+ asio::query(system_executor(), execution::context).join();
+
+ ASIO_CHECK(count == 9);
+}
+
+ASIO_TEST_SUITE
+(
+ "system_executor",
+ ASIO_TEST_CASE(system_executor_query_test)
+ ASIO_TEST_CASE(system_executor_execute_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/system_timer.cpp b/3rdparty/asio/src/tests/unit/system_timer.cpp
index 3f77a2e74dc..26a5720129f 100644
--- a/3rdparty/asio/src/tests/unit/system_timer.cpp
+++ b/3rdparty/asio/src/tests/unit/system_timer.cpp
@@ -2,7 +2,7 @@
// system_timer.cpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -21,25 +21,15 @@
// Test that header file is self-contained.
#include "asio/system_timer.hpp"
-#include "unit_test.hpp"
-
-#if defined(ASIO_HAS_STD_CHRONO)
-
+#include <functional>
+#include "asio/bind_cancellation_slot.hpp"
+#include "asio/cancellation_signal.hpp"
#include "asio/executor_work_guard.hpp"
#include "asio/io_context.hpp"
#include "asio/thread.hpp"
+#include "unit_test.hpp"
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
-#if defined(ASIO_HAS_BOOST_BIND)
-namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
-#endif // defined(ASIO_HAS_BOOST_BIND)
void increment(int* count)
{
@@ -90,12 +80,11 @@ void system_timer_test()
{
using asio::chrono::seconds;
using asio::chrono::microseconds;
-#if !defined(ASIO_HAS_BOOST_BIND)
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // !defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
+ const asio::io_context::executor_type ioc_ex = ioc.get_executor();
int count = 0;
asio::system_timer::time_point start = now();
@@ -110,7 +99,7 @@ void system_timer_test()
start = now();
- asio::system_timer t2(ioc, seconds(1) + microseconds(500000));
+ asio::system_timer t2(ioc_ex, seconds(1) + microseconds(500000));
t2.wait();
// The timer must block until after its expiry time.
@@ -236,11 +225,9 @@ struct timer_handler
{
timer_handler() {}
void operator()(const asio::error_code&) {}
-#if defined(ASIO_HAS_MOVE)
timer_handler(timer_handler&&) {}
private:
timer_handler(const timer_handler&);
-#endif // defined(ASIO_HAS_MOVE)
};
void system_timer_cancel_test()
@@ -271,21 +258,77 @@ struct custom_allocation_timer_handler
custom_allocation_timer_handler(int* count) : count_(count) {}
void operator()(const asio::error_code&) {}
int* count_;
-};
-void* asio_handler_allocate(std::size_t size,
- custom_allocation_timer_handler* handler)
-{
- ++(*handler->count_);
- return ::operator new(size);
-}
+ template <typename T>
+ struct allocator
+ {
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef const T* const_pointer;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef T value_type;
+
+ template <typename U>
+ struct rebind
+ {
+ typedef allocator<U> other;
+ };
-void asio_handler_deallocate(void* pointer, std::size_t,
- custom_allocation_timer_handler* handler)
-{
- --(*handler->count_);
- ::operator delete(pointer);
-}
+ explicit allocator(int* count) noexcept
+ : count_(count)
+ {
+ }
+
+ allocator(const allocator& other) noexcept
+ : count_(other.count_)
+ {
+ }
+
+ template <typename U>
+ allocator(const allocator<U>& other) noexcept
+ : count_(other.count_)
+ {
+ }
+
+ pointer allocate(size_type n, const void* = 0)
+ {
+ ++(*count_);
+ return static_cast<T*>(::operator new(sizeof(T) * n));
+ }
+
+ void deallocate(pointer p, size_type)
+ {
+ --(*count_);
+ ::operator delete(p);
+ }
+
+ size_type max_size() const
+ {
+ return ~size_type(0);
+ }
+
+ void construct(pointer p, const T& v)
+ {
+ new (p) T(v);
+ }
+
+ void destroy(pointer p)
+ {
+ p->~T();
+ }
+
+ int* count_;
+ };
+
+ typedef allocator<int> allocator_type;
+
+ allocator_type get_allocator() const noexcept
+ {
+ return allocator_type(count_);
+ }
+};
void system_timer_custom_allocation_test()
{
@@ -349,7 +392,6 @@ void system_timer_thread_test()
ASIO_CHECK(count == 1);
}
-#if defined(ASIO_HAS_MOVE)
asio::system_timer make_timer(asio::io_context& ioc, int* count)
{
asio::system_timer t(ioc);
@@ -357,11 +399,22 @@ asio::system_timer make_timer(asio::io_context& ioc, int* count)
t.async_wait(bindns::bind(increment, count));
return t;
}
-#endif
+
+typedef asio::basic_waitable_timer<
+ asio::system_timer::clock_type,
+ asio::system_timer::traits_type,
+ asio::io_context::executor_type> io_context_system_timer;
+
+io_context_system_timer make_convertible_timer(asio::io_context& ioc, int* count)
+{
+ io_context_system_timer t(ioc);
+ t.expires_after(asio::chrono::seconds(1));
+ t.async_wait(bindns::bind(increment, count));
+ return t;
+}
void system_timer_move_test()
{
-#if defined(ASIO_HAS_MOVE)
asio::io_context io_context1;
asio::io_context io_context2;
int count = 0;
@@ -379,7 +432,60 @@ void system_timer_move_test()
io_context1.run();
ASIO_CHECK(count == 2);
-#endif // defined(ASIO_HAS_MOVE)
+
+ asio::system_timer t4 = make_convertible_timer(io_context1, &count);
+ asio::system_timer t5 = make_convertible_timer(io_context2, &count);
+ asio::system_timer t6 = std::move(t4);
+
+ t2 = std::move(t4);
+
+ io_context2.restart();
+ io_context2.run();
+
+ ASIO_CHECK(count == 3);
+
+ io_context1.restart();
+ io_context1.run();
+
+ ASIO_CHECK(count == 4);
+}
+
+void system_timer_op_cancel_test()
+{
+ asio::cancellation_signal cancel_signal;
+ asio::io_context ioc;
+ int count = 0;
+
+ asio::system_timer timer(ioc, asio::chrono::seconds(10));
+
+ timer.async_wait(bindns::bind(increment, &count));
+
+ timer.async_wait(
+ asio::bind_cancellation_slot(
+ cancel_signal.slot(),
+ bindns::bind(increment, &count)));
+
+ timer.async_wait(bindns::bind(increment, &count));
+
+ ioc.poll();
+
+ ASIO_CHECK(count == 0);
+ ASIO_CHECK(!ioc.stopped());
+
+ cancel_signal.emit(asio::cancellation_type::all);
+
+ ioc.run_one();
+ ioc.poll();
+
+ ASIO_CHECK(count == 1);
+ ASIO_CHECK(!ioc.stopped());
+
+ timer.cancel();
+
+ ioc.run();
+
+ ASIO_CHECK(count == 3);
+ ASIO_CHECK(ioc.stopped());
}
ASIO_TEST_SUITE
@@ -390,11 +496,5 @@ ASIO_TEST_SUITE
ASIO_TEST_CASE(system_timer_custom_allocation_test)
ASIO_TEST_CASE(system_timer_thread_test)
ASIO_TEST_CASE(system_timer_move_test)
+ ASIO_TEST_CASE(system_timer_op_cancel_test)
)
-#else // defined(ASIO_HAS_STD_CHRONO)
-ASIO_TEST_SUITE
-(
- "system_timer",
- ASIO_TEST_CASE(null_test)
-)
-#endif // defined(ASIO_HAS_STD_CHRONO)
diff --git a/3rdparty/asio/src/tests/unit/this_coro.cpp b/3rdparty/asio/src/tests/unit/this_coro.cpp
new file mode 100644
index 00000000000..d1e0fc677c5
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/this_coro.cpp
@@ -0,0 +1,25 @@
+//
+// this_coro.cpp
+// ~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/this_coro.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "this_coro",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/thread.cpp b/3rdparty/asio/src/tests/unit/thread.cpp
index 4096c9a7959..b84db72158e 100644
--- a/3rdparty/asio/src/tests/unit/thread.cpp
+++ b/3rdparty/asio/src/tests/unit/thread.cpp
@@ -2,7 +2,7 @@
// thread.cpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/thread_pool.cpp b/3rdparty/asio/src/tests/unit/thread_pool.cpp
new file mode 100644
index 00000000000..f65d7963c26
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/thread_pool.cpp
@@ -0,0 +1,283 @@
+//
+// thread_pool.cpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/thread_pool.hpp"
+
+#include <functional>
+#include "asio/dispatch.hpp"
+#include "asio/post.hpp"
+#include "unit_test.hpp"
+
+using namespace asio;
+namespace bindns = std;
+
+void increment(int* count)
+{
+ ++(*count);
+}
+
+void decrement_to_zero(thread_pool* pool, int* count)
+{
+ if (*count > 0)
+ {
+ --(*count);
+
+ int before_value = *count;
+ asio::post(*pool, bindns::bind(decrement_to_zero, pool, count));
+
+ // Handler execution cannot nest, so count value should remain unchanged.
+ ASIO_CHECK(*count == before_value);
+ }
+}
+
+void nested_decrement_to_zero(thread_pool* pool, int* count)
+{
+ if (*count > 0)
+ {
+ --(*count);
+
+ asio::dispatch(*pool,
+ bindns::bind(nested_decrement_to_zero, pool, count));
+
+ // Handler execution is nested, so count value should now be zero.
+ ASIO_CHECK(*count == 0);
+ }
+}
+
+void thread_pool_test()
+{
+ thread_pool pool(1);
+
+ int count1 = 0;
+ asio::post(pool, bindns::bind(increment, &count1));
+
+ int count2 = 10;
+ asio::post(pool, bindns::bind(decrement_to_zero, &pool, &count2));
+
+ int count3 = 10;
+ asio::post(pool, bindns::bind(nested_decrement_to_zero, &pool, &count3));
+
+ pool.wait();
+
+ ASIO_CHECK(count1 == 1);
+ ASIO_CHECK(count2 == 0);
+ ASIO_CHECK(count3 == 0);
+}
+
+class test_service : public asio::execution_context::service
+{
+public:
+#if defined(ASIO_NO_TYPEID)
+ static asio::execution_context::id id;
+#endif // defined(ASIO_NO_TYPEID)
+
+ typedef test_service key_type;
+
+ test_service(asio::execution_context& ctx)
+ : asio::execution_context::service(ctx)
+ {
+ }
+
+private:
+ virtual void shutdown() {}
+};
+
+#if defined(ASIO_NO_TYPEID)
+asio::execution_context::id test_service::id;
+#endif // defined(ASIO_NO_TYPEID)
+
+void thread_pool_service_test()
+{
+ asio::thread_pool pool1(1);
+ asio::thread_pool pool2(1);
+ asio::thread_pool pool3(1);
+
+ // Implicit service registration.
+
+ asio::use_service<test_service>(pool1);
+
+ ASIO_CHECK(asio::has_service<test_service>(pool1));
+
+ test_service* svc1 = new test_service(pool1);
+ try
+ {
+ asio::add_service(pool1, svc1);
+ ASIO_ERROR("add_service did not throw");
+ }
+ catch (asio::service_already_exists&)
+ {
+ }
+ delete svc1;
+
+ // Explicit service registration.
+
+ test_service& svc2 = asio::make_service<test_service>(pool2);
+
+ ASIO_CHECK(asio::has_service<test_service>(pool2));
+ ASIO_CHECK(&asio::use_service<test_service>(pool2) == &svc2);
+
+ test_service* svc3 = new test_service(pool2);
+ try
+ {
+ asio::add_service(pool2, svc3);
+ ASIO_ERROR("add_service did not throw");
+ }
+ catch (asio::service_already_exists&)
+ {
+ }
+ delete svc3;
+
+ // Explicit registration with invalid owner.
+
+ test_service* svc4 = new test_service(pool2);
+ try
+ {
+ asio::add_service(pool3, svc4);
+ ASIO_ERROR("add_service did not throw");
+ }
+ catch (asio::invalid_service_owner&)
+ {
+ }
+ delete svc4;
+
+ ASIO_CHECK(!asio::has_service<test_service>(pool3));
+}
+
+void thread_pool_executor_query_test()
+{
+ thread_pool pool(1);
+
+ ASIO_CHECK(
+ &asio::query(pool.executor(),
+ asio::execution::context)
+ == &pool);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::blocking)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::blocking.possibly)
+ == asio::execution::blocking.possibly);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::outstanding_work)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::outstanding_work.untracked)
+ == asio::execution::outstanding_work.untracked);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::relationship)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::relationship.fork)
+ == asio::execution::relationship.fork);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::mapping)
+ == asio::execution::mapping.thread);
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::allocator)
+ == std::allocator<void>());
+
+ ASIO_CHECK(
+ asio::query(pool.executor(),
+ asio::execution::occupancy)
+ == 1);
+}
+
+void thread_pool_executor_execute_test()
+{
+ int count = 0;
+ thread_pool pool(1);
+
+ pool.executor().execute(bindns::bind(increment, &count));
+
+ asio::require(pool.executor(),
+ asio::execution::blocking.possibly
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(pool.executor(),
+ asio::execution::blocking.always
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(pool.executor(),
+ asio::execution::blocking.never
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(pool.executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.tracked
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(pool.executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(pool.executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.fork
+ ).execute(bindns::bind(increment, &count));
+
+ asio::require(pool.executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation
+ ).execute(bindns::bind(increment, &count));
+
+ asio::prefer(
+ asio::require(pool.executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator(std::allocator<void>())
+ ).execute(bindns::bind(increment, &count));
+
+ asio::prefer(
+ asio::require(pool.executor(),
+ asio::execution::blocking.never,
+ asio::execution::outstanding_work.untracked,
+ asio::execution::relationship.continuation),
+ asio::execution::allocator
+ ).execute(bindns::bind(increment, &count));
+
+ pool.wait();
+
+ ASIO_CHECK(count == 10);
+}
+
+ASIO_TEST_SUITE
+(
+ "thread_pool",
+ ASIO_TEST_CASE(thread_pool_test)
+ ASIO_TEST_CASE(thread_pool_service_test)
+ ASIO_TEST_CASE(thread_pool_executor_query_test)
+ ASIO_TEST_CASE(thread_pool_executor_execute_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/time_traits.cpp b/3rdparty/asio/src/tests/unit/time_traits.cpp
index 64a35a13a2b..2763d9ecc30 100644
--- a/3rdparty/asio/src/tests/unit/time_traits.cpp
+++ b/3rdparty/asio/src/tests/unit/time_traits.cpp
@@ -2,7 +2,7 @@
// time_traits.cpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/ts/buffer.cpp b/3rdparty/asio/src/tests/unit/ts/buffer.cpp
new file mode 100644
index 00000000000..8f09c4fecc9
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/buffer.cpp
@@ -0,0 +1,30 @@
+//
+// buffer.cpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/buffer.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/buffer",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ts/executor.cpp b/3rdparty/asio/src/tests/unit/ts/executor.cpp
new file mode 100644
index 00000000000..9e318d93dbd
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/executor.cpp
@@ -0,0 +1,30 @@
+//
+// executor.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/executor.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/executor",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ts/internet.cpp b/3rdparty/asio/src/tests/unit/ts/internet.cpp
new file mode 100644
index 00000000000..1ee8320d9d7
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/internet.cpp
@@ -0,0 +1,30 @@
+//
+// internet.cpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/internet.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/internet",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ts/io_context.cpp b/3rdparty/asio/src/tests/unit/ts/io_context.cpp
new file mode 100644
index 00000000000..365e2579e8c
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/io_context.cpp
@@ -0,0 +1,30 @@
+//
+// io_context.cpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/io_context.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/io_context",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ts/net.cpp b/3rdparty/asio/src/tests/unit/ts/net.cpp
new file mode 100644
index 00000000000..25f65030994
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/net.cpp
@@ -0,0 +1,30 @@
+//
+// net.cpp
+// ~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/net.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/net",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ts/netfwd.cpp b/3rdparty/asio/src/tests/unit/ts/netfwd.cpp
new file mode 100644
index 00000000000..55af93c87c3
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/netfwd.cpp
@@ -0,0 +1,33 @@
+//
+// netfwd.cpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/netfwd.hpp"
+
+// Test that forward declarations don't conflict with full declarations.
+#include "asio/ts/net.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/netfwd",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ts/socket.cpp b/3rdparty/asio/src/tests/unit/ts/socket.cpp
new file mode 100644
index 00000000000..4656fa2eb5a
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/socket.cpp
@@ -0,0 +1,30 @@
+//
+// socket.cpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/socket.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/socket",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/ts/timer.cpp b/3rdparty/asio/src/tests/unit/ts/timer.cpp
new file mode 100644
index 00000000000..e956bd463d5
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/ts/timer.cpp
@@ -0,0 +1,30 @@
+//
+// timer.cpp
+// ~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Prevent link dependency on the Boost.System library.
+#if !defined(BOOST_SYSTEM_NO_DEPRECATED)
+#define BOOST_SYSTEM_NO_DEPRECATED
+#endif // !defined(BOOST_SYSTEM_NO_DEPRECATED)
+
+// Test that header file is self-contained.
+#include "asio/ts/timer.hpp"
+
+#include "../unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "ts/timer",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/unit_test.hpp b/3rdparty/asio/src/tests/unit/unit_test.hpp
index b74c3d4ec41..8efae9987e6 100644
--- a/3rdparty/asio/src/tests/unit/unit_test.hpp
+++ b/3rdparty/asio/src/tests/unit/unit_test.hpp
@@ -2,7 +2,7 @@
// unit_test.hpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -19,7 +19,7 @@
# include <stdlib.h> // Needed for lrand48.
#endif // defined(__sun)
-#if defined(__BORLANDC__)
+#if defined(__BORLANDC__) && !defined(__clang__)
// Prevent use of intrinsic for strcmp.
# include <cstring>
@@ -28,7 +28,7 @@
// Suppress error about condition always being true.
# pragma option -w-ccc
-#endif // defined(__BORLANDC__)
+#endif // defined(__BORLANDC__) && !defined(__clang__)
#if defined(ASIO_MSVC)
# pragma warning (disable:4127)
@@ -152,6 +152,21 @@ void throw_exception(const T& t)
#define ASIO_TEST_CASE(test) \
asio::detail::run_test<&test>(#test);
+#define ASIO_TEST_CASE2(test1, test2) \
+ asio::detail::run_test<&test1, test2>(#test1 "," #test2);
+
+#define ASIO_TEST_CASE3(test1, test2, test3) \
+ asio::detail::run_test<&test1, test2, test3>( \
+ #test1 "," #test2 "," #test3);
+
+#define ASIO_TEST_CASE4(test1, test2, test3, test4) \
+ asio::detail::run_test<&test1, test2, test3, test4>( \
+ #test1 "," #test2 "," #test3 "," #test4);
+
+#define ASIO_TEST_CASE5(test1, test2, test3, test4, test5) \
+ asio::detail::run_test<&test1, test2, test3, test4, test5>( \
+ #test1 "," #test2 "," #test3 "," #test4 "," #test5);
+
#define ASIO_COMPILE_TEST_CASE(test) \
asio::detail::compile_test<&test>(#test);
diff --git a/3rdparty/asio/src/tests/unit/use_awaitable.cpp b/3rdparty/asio/src/tests/unit/use_awaitable.cpp
new file mode 100644
index 00000000000..815f57ebb1c
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/use_awaitable.cpp
@@ -0,0 +1,25 @@
+//
+// use_awaitable.cpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header file is self-contained.
+#include "asio/use_awaitable.hpp"
+
+#include "unit_test.hpp"
+
+ASIO_TEST_SUITE
+(
+ "use_awaitable",
+ ASIO_TEST_CASE(null_test)
+)
diff --git a/3rdparty/asio/src/tests/unit/use_future.cpp b/3rdparty/asio/src/tests/unit/use_future.cpp
index bc6e3b859b6..ac12f7caa23 100644
--- a/3rdparty/asio/src/tests/unit/use_future.cpp
+++ b/3rdparty/asio/src/tests/unit/use_future.cpp
@@ -2,7 +2,7 @@
// use_future.cpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -19,10 +19,9 @@
#include <string>
#include "unit_test.hpp"
-#if defined(ASIO_HAS_STD_FUTURE)
+#if defined(ASIO_HAS_STD_FUTURE_CLASS)
#include "archetypes/async_ops.hpp"
-#include "archetypes/deprecated_async_ops.hpp"
void use_future_0_test()
{
@@ -647,673 +646,6 @@ void use_future_package_3_test()
}
}
-void deprecated_use_future_0_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<void> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_0(ctx, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- f.get();
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_0(ctx, true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- f.get();
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_0(ctx, false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- f.get();
- ASIO_CHECK(false);
- }
- catch (asio::system_error& e)
- {
- ASIO_CHECK(e.code() == asio::error::operation_aborted);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = async_op_ex_0(true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- f.get();
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = async_op_ex_0(false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- f.get();
- ASIO_CHECK(false);
- }
- catch (std::exception& e)
- {
- ASIO_CHECK(e.what() == std::string("blah"));
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
-void deprecated_use_future_1_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<int> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_1(ctx, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_1(ctx, true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_1(ctx, false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(false);
- (void)i;
- }
- catch (asio::system_error& e)
- {
- ASIO_CHECK(e.code() == asio::error::operation_aborted);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_1(ctx, true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_1(ctx, false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(false);
- (void)i;
- }
- catch (std::exception& e)
- {
- ASIO_CHECK(e.what() == std::string("blah"));
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
-void deprecated_use_future_2_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<std::tuple<int, double>> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_2(ctx, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i;
- double d;
- std::tie(i, d) = f.get();
- ASIO_CHECK(i == 42);
- ASIO_CHECK(d == 2.0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_2(ctx, true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i;
- double d;
- std::tie(i, d) = f.get();
- ASIO_CHECK(i == 42);
- ASIO_CHECK(d == 2.0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_2(ctx, false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- std::tuple<int, double> t = f.get();
- ASIO_CHECK(false);
- (void)t;
- }
- catch (asio::system_error& e)
- {
- ASIO_CHECK(e.code() == asio::error::operation_aborted);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_2(ctx, true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i;
- double d;
- std::tie(i, d) = f.get();
- ASIO_CHECK(i == 42);
- ASIO_CHECK(d == 2.0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_2(ctx, false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- std::tuple<int, double> t = f.get();
- ASIO_CHECK(false);
- (void)t;
- }
- catch (std::exception& e)
- {
- ASIO_CHECK(e.what() == std::string("blah"));
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
-void deprecated_use_future_3_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<std::tuple<int, double, char>> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_3(ctx, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i;
- double d;
- char c;
- std::tie(i, d, c) = f.get();
- ASIO_CHECK(i == 42);
- ASIO_CHECK(d == 2.0);
- ASIO_CHECK(c == 'a');
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_3(ctx, true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i;
- double d;
- char c;
- std::tie(i, d, c) = f.get();
- ASIO_CHECK(i == 42);
- ASIO_CHECK(d == 2.0);
- ASIO_CHECK(c == 'a');
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_3(ctx, false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- std::tuple<int, double, char> t = f.get();
- ASIO_CHECK(false);
- (void)t;
- }
- catch (asio::system_error& e)
- {
- ASIO_CHECK(e.code() == asio::error::operation_aborted);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_3(ctx, true, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- int i;
- double d;
- char c;
- std::tie(i, d, c) = f.get();
- ASIO_CHECK(i == 42);
- ASIO_CHECK(d == 2.0);
- ASIO_CHECK(c == 'a');
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_3(ctx, false, use_future);
- ctx.restart();
- ctx.run();
- try
- {
- std::tuple<int, double, char> t = f.get();
- ASIO_CHECK(false);
- (void)t;
- }
- catch (std::exception& e)
- {
- ASIO_CHECK(e.what() == std::string("blah"));
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
-void deprecated_use_future_package_0_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<int> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_0(ctx, use_future(package_0));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_0(ctx, true, use_future(&package_ec_0));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_0(ctx, false, use_future(package_ec_0));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_0(ctx, true, use_future(package_ex_0));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_0(ctx, false, use_future(package_ex_0));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
-void deprecated_use_future_package_1_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<int> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_1(ctx, use_future(package_1));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_1(ctx, true, use_future(package_ec_1));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_1(ctx, false, use_future(package_ec_1));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_1(ctx, true, use_future(package_ex_1));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_1(ctx, false, use_future(package_ex_1));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
-void deprecated_use_future_package_2_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<int> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_2(ctx, use_future(package_2));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_2(ctx, true, use_future(package_ec_2));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_2(ctx, false, use_future(package_ec_2));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_2(ctx, true, use_future(package_ex_2));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_2(ctx, false, use_future(package_ex_2));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
-void deprecated_use_future_package_3_test()
-{
-#if !defined(ASIO_NO_DEPRECATED)
- using asio::use_future;
- using namespace archetypes;
-
- std::future<int> f;
- asio::io_context ctx;
-
- f = deprecated_async_op_3(ctx, use_future(package_3));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_3(ctx, true, use_future(package_ec_3));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ec_3(ctx, false, use_future(package_ec_3));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_3(ctx, true, use_future(package_ex_3));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 42);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-
- f = deprecated_async_op_ex_3(ctx, false, use_future(package_ex_3));
- ctx.restart();
- ctx.run();
- try
- {
- int i = f.get();
- ASIO_CHECK(i == 0);
- }
- catch (...)
- {
- ASIO_CHECK(false);
- }
-#endif // !defined(ASIO_NO_DEPRECATED)
-}
-
ASIO_TEST_SUITE
(
"use_future",
@@ -1325,17 +657,9 @@ ASIO_TEST_SUITE
ASIO_TEST_CASE(use_future_package_1_test)
ASIO_TEST_CASE(use_future_package_2_test)
ASIO_TEST_CASE(use_future_package_3_test)
- ASIO_TEST_CASE(deprecated_use_future_0_test)
- ASIO_TEST_CASE(deprecated_use_future_1_test)
- ASIO_TEST_CASE(deprecated_use_future_2_test)
- ASIO_TEST_CASE(deprecated_use_future_3_test)
- ASIO_TEST_CASE(deprecated_use_future_package_0_test)
- ASIO_TEST_CASE(deprecated_use_future_package_1_test)
- ASIO_TEST_CASE(deprecated_use_future_package_2_test)
- ASIO_TEST_CASE(deprecated_use_future_package_3_test)
)
-#else // defined(ASIO_HAS_STD_FUTURE)
+#else // defined(ASIO_HAS_STD_FUTURE_CLASS)
ASIO_TEST_SUITE
(
@@ -1343,4 +667,4 @@ ASIO_TEST_SUITE
ASIO_TEST_CASE(null_test)
)
-#endif // defined(ASIO_HAS_STD_FUTURE)
+#endif // defined(ASIO_HAS_STD_FUTURE_CLASS)
diff --git a/3rdparty/asio/src/tests/unit/uses_executor.cpp b/3rdparty/asio/src/tests/unit/uses_executor.cpp
index cb1e2918b13..f3d52c1d8fc 100644
--- a/3rdparty/asio/src/tests/unit/uses_executor.cpp
+++ b/3rdparty/asio/src/tests/unit/uses_executor.cpp
@@ -2,7 +2,7 @@
// uses_executor.cpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/wait_traits.cpp b/3rdparty/asio/src/tests/unit/wait_traits.cpp
index eed0161273c..4bdb498d7bf 100644
--- a/3rdparty/asio/src/tests/unit/wait_traits.cpp
+++ b/3rdparty/asio/src/tests/unit/wait_traits.cpp
@@ -2,7 +2,7 @@
// wait_traits.cpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/windows/.gitignore b/3rdparty/asio/src/tests/unit/windows/.gitignore
deleted file mode 100644
index d225c81cd76..00000000000
--- a/3rdparty/asio/src/tests/unit/windows/.gitignore
+++ /dev/null
@@ -1,21 +0,0 @@
-.deps
-.dirstamp
-*.o
-*.obj
-*.exe
-*.ilk
-*.manifest
-*.pdb
-*.tds
-basic_handle
-basic_object_handle
-basic_random_access_handle
-basic_stream_handle
-object_handle
-object_handle_service
-overlapped_handle
-overlapped_ptr
-random_access_handle
-random_access_handle_service
-stream_handle
-stream_handle_service
diff --git a/3rdparty/asio/src/tests/unit/windows/basic_object_handle.cpp b/3rdparty/asio/src/tests/unit/windows/basic_object_handle.cpp
index 4c27e14e488..d4d6def159a 100644
--- a/3rdparty/asio/src/tests/unit/windows/basic_object_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/basic_object_handle.cpp
@@ -2,7 +2,7 @@
// basic_object_handle.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,10 @@
// Test that header file is self-contained.
#include "asio/windows/basic_object_handle.hpp"
-#include "asio.hpp"
#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "windows/basic_object_handle",
+ "basic_object_handle",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/datagram_socket_service.cpp b/3rdparty/asio/src/tests/unit/windows/basic_overlapped_handle.cpp
index 5c4fe1374a6..62b5419c69f 100644
--- a/3rdparty/asio/src/tests/unit/datagram_socket_service.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/basic_overlapped_handle.cpp
@@ -1,8 +1,8 @@
//
-// datagram_socket_service.cpp
+// basic_overlapped_handle.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -14,12 +14,12 @@
#endif // !defined(BOOST_ALL_NO_LIB)
// Test that header file is self-contained.
-#include "asio/datagram_socket_service.hpp"
+#include "asio/windows/basic_overlapped_handle.hpp"
-#include "unit_test.hpp"
+#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "datagram_socket_service",
+ "basic_overlapped_handle",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/windows/basic_random_access_handle.cpp b/3rdparty/asio/src/tests/unit/windows/basic_random_access_handle.cpp
index 720cf76b749..4a2605ea335 100644
--- a/3rdparty/asio/src/tests/unit/windows/basic_random_access_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/basic_random_access_handle.cpp
@@ -2,7 +2,7 @@
// basic_random_access_handle.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,10 @@
// Test that header file is self-contained.
#include "asio/windows/basic_random_access_handle.hpp"
-#include "asio.hpp"
#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "windows/basic_random_access_handle",
+ "basic_random_access_handle",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/windows/basic_stream_handle.cpp b/3rdparty/asio/src/tests/unit/windows/basic_stream_handle.cpp
index 2151dafb709..9cdf0bd5c20 100644
--- a/3rdparty/asio/src/tests/unit/windows/basic_stream_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/basic_stream_handle.cpp
@@ -2,7 +2,7 @@
// basic_stream_handle.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,10 @@
// Test that header file is self-contained.
#include "asio/windows/basic_stream_handle.hpp"
-#include "asio.hpp"
#include "../unit_test.hpp"
ASIO_TEST_SUITE
(
- "windows/basic_stream_handle",
+ "basic_stream_handle",
ASIO_TEST_CASE(null_test)
)
diff --git a/3rdparty/asio/src/tests/unit/windows/object_handle.cpp b/3rdparty/asio/src/tests/unit/windows/object_handle.cpp
index 32a836ef208..0784ba9fdb7 100644
--- a/3rdparty/asio/src/tests/unit/windows/object_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/object_handle.cpp
@@ -2,7 +2,7 @@
// object_handle.cpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -43,6 +43,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
archetypes::lazy_handler lazy;
asio::error_code ec;
@@ -50,27 +51,30 @@ void test()
win::object_handle handle1(ioc);
HANDLE native_handle1 = INVALID_HANDLE_VALUE;
+#if defined(ASIO_MSVC) && (_MSC_VER < 1910)
+ // Skip this on older MSVC due to mysterious ambiguous overload errors.
+#else
win::object_handle handle2(ioc, native_handle1);
+#endif
-#if defined(ASIO_HAS_MOVE)
- win::object_handle handle3(std::move(handle2));
-#endif // defined(ASIO_HAS_MOVE)
+ win::object_handle handle3(ioc_ex);
+ HANDLE native_handle2 = INVALID_HANDLE_VALUE;
+ win::object_handle handle4(ioc_ex, native_handle2);
+
+ win::object_handle handle5(std::move(handle4));
+
+ win::basic_object_handle<io_context::executor_type> handle6(ioc);
+ win::object_handle handle7(std::move(handle6));
// basic_object_handle operators.
-#if defined(ASIO_HAS_MOVE)
handle1 = win::object_handle(ioc);
- handle1 = std::move(handle2);
-#endif // defined(ASIO_HAS_MOVE)
+ handle1 = std::move(handle3);
+ handle1 = std::move(handle6);
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = handle1.get_io_context();
- (void)ioc_ref;
-#endif !defined(ASIO_NO_DEPRECATED)
-
- io_context::executor_type ex = handle1.get_executor();
+ win::object_handle::executor_type ex = handle1.get_executor();
(void)ex;
// basic_handle functions.
@@ -79,13 +83,13 @@ void test()
= handle1.lowest_layer();
(void)lowest_layer;
- const win::object_handle& handle4 = handle1;
- const win::object_handle::lowest_layer_type& lowest_layer2
- = handle4.lowest_layer();
- (void)lowest_layer2;
+ const win::object_handle& handle8 = handle1;
+ const win::object_handle::lowest_layer_type& lowest_layer3
+ = handle8.lowest_layer();
+ (void)lowest_layer3;
- HANDLE native_handle2 = INVALID_HANDLE_VALUE;
- handle1.assign(native_handle2);
+ HANDLE native_handle4 = INVALID_HANDLE_VALUE;
+ handle1.assign(native_handle4);
bool is_open = handle1.is_open();
(void)is_open;
@@ -122,5 +126,5 @@ void test()
ASIO_TEST_SUITE
(
"windows/object_handle",
- ASIO_TEST_CASE(windows_object_handle_compile::test)
+ ASIO_COMPILE_TEST_CASE(windows_object_handle_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/windows/overlapped_handle.cpp b/3rdparty/asio/src/tests/unit/windows/overlapped_handle.cpp
index fbc8fb4e88b..5cdd3da2db1 100644
--- a/3rdparty/asio/src/tests/unit/windows/overlapped_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/overlapped_handle.cpp
@@ -2,7 +2,7 @@
// overlapped_handle.cpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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/3rdparty/asio/src/tests/unit/windows/overlapped_ptr.cpp b/3rdparty/asio/src/tests/unit/windows/overlapped_ptr.cpp
index 261ece6f531..fda1b2cbd98 100644
--- a/3rdparty/asio/src/tests/unit/windows/overlapped_ptr.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/overlapped_ptr.cpp
@@ -2,7 +2,7 @@
// overlapped_ptr.cpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,6 +16,8 @@
// Test that header file is self-contained.
#include "asio/windows/overlapped_ptr.hpp"
+#include "asio/any_io_executor.hpp"
+#include "asio/executor.hpp"
#include "asio/io_context.hpp"
#include "../unit_test.hpp"
@@ -49,6 +51,10 @@ void test()
try
{
io_context ioc;
+ asio::any_io_executor ex1(ioc.get_executor());
+#if !defined(ASIO_NO_TS_EXECUTORS)
+ asio::executor ex2(ioc.get_executor());
+#endif // !defined(ASIO_NO_TS_EXECUTORS)
// basic_overlapped_ptr constructors.
@@ -57,6 +63,15 @@ void test()
win::overlapped_ptr ptr2(ioc, &overlapped_handler_1);
win::overlapped_ptr ptr3(ioc, overlapped_handler_2());
+ win::overlapped_ptr ptr4(ioc.get_executor(), &overlapped_handler_1);
+ win::overlapped_ptr ptr5(ioc.get_executor(), overlapped_handler_2());
+ win::overlapped_ptr ptr6(ex1, &overlapped_handler_1);
+ win::overlapped_ptr ptr7(ex1, overlapped_handler_2());
+#if !defined(ASIO_NO_TS_EXECUTORS)
+ win::overlapped_ptr ptr8(ex2, &overlapped_handler_1);
+ win::overlapped_ptr ptr9(ex2, overlapped_handler_2());
+#endif // !defined(ASIO_NO_TS_EXECUTORS)
+
// overlapped_ptr functions.
ptr1.reset();
@@ -64,11 +79,20 @@ void test()
ptr2.reset(ioc, &overlapped_handler_1);
ptr3.reset(ioc, overlapped_handler_2());
+ ptr2.reset(ioc.get_executor(), &overlapped_handler_1);
+ ptr3.reset(ioc.get_executor(), overlapped_handler_2());
+ ptr2.reset(ex1, &overlapped_handler_1);
+ ptr3.reset(ex1, overlapped_handler_2());
+#if !defined(ASIO_NO_TS_EXECUTORS)
+ ptr3.reset(ex2, &overlapped_handler_1);
+ ptr3.reset(ex2, overlapped_handler_2());
+#endif // !defined(ASIO_NO_TS_EXECUTORS)
+
OVERLAPPED* ov1 = ptr1.get();
(void)ov1;
- const win::overlapped_ptr& ptr4(ptr1);
- const OVERLAPPED* ov2 = ptr4.get();
+ const win::overlapped_ptr& ptr10(ptr1);
+ const OVERLAPPED* ov2 = ptr10.get();
(void)ov2;
OVERLAPPED* ov3 = ptr1.release();
@@ -91,5 +115,5 @@ void test()
ASIO_TEST_SUITE
(
"windows/overlapped_ptr",
- ASIO_TEST_CASE(windows_overlapped_ptr_compile::test)
+ ASIO_COMPILE_TEST_CASE(windows_overlapped_ptr_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/windows/random_access_handle.cpp b/3rdparty/asio/src/tests/unit/windows/random_access_handle.cpp
index fbd88209972..613732c5128 100644
--- a/3rdparty/asio/src/tests/unit/windows/random_access_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/random_access_handle.cpp
@@ -2,7 +2,7 @@
// random_access_handle.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -47,6 +47,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
asio::uint64_t offset = 0;
@@ -57,42 +58,45 @@ void test()
win::random_access_handle handle1(ioc);
HANDLE native_handle1 = INVALID_HANDLE_VALUE;
+#if defined(ASIO_MSVC) && (_MSC_VER < 1910)
+ // Skip this on older MSVC due to mysterious ambiguous overload errors.
+#else
win::random_access_handle handle2(ioc, native_handle1);
+#endif
-#if defined(ASIO_HAS_MOVE)
- win::random_access_handle handle3(std::move(handle2));
-#endif // defined(ASIO_HAS_MOVE)
+ win::random_access_handle handle3(ioc_ex);
+ HANDLE native_handle2 = INVALID_HANDLE_VALUE;
+ win::random_access_handle handle4(ioc_ex, native_handle2);
+
+ win::random_access_handle handle5(std::move(handle4));
+
+ win::basic_random_access_handle<io_context::executor_type> handle6(ioc);
+ win::random_access_handle handle7(std::move(handle6));
// basic_random_access_handle operators.
-#if defined(ASIO_HAS_MOVE)
handle1 = win::random_access_handle(ioc);
- handle1 = std::move(handle2);
-#endif // defined(ASIO_HAS_MOVE)
+ handle1 = std::move(handle4);
+ handle1 = std::move(handle6);
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = handle1.get_io_context();
- (void)ioc_ref;
-#endif !defined(ASIO_NO_DEPRECATED)
-
- io_context::executor_type ex = handle1.get_executor();
+ windows::random_access_handle::executor_type ex = handle1.get_executor();
(void)ex;
- // basic_handle functions.
+ // basic_overlapped_handle functions.
win::random_access_handle::lowest_layer_type& lowest_layer
= handle1.lowest_layer();
(void)lowest_layer;
- const win::random_access_handle& handle4 = handle1;
+ const win::random_access_handle& handle8 = handle1;
const win::random_access_handle::lowest_layer_type& lowest_layer2
- = handle4.lowest_layer();
+ = handle8.lowest_layer();
(void)lowest_layer2;
- HANDLE native_handle2 = INVALID_HANDLE_VALUE;
- handle1.assign(native_handle2);
+ HANDLE native_handle3 = INVALID_HANDLE_VALUE;
+ handle1.assign(native_handle3);
bool is_open = handle1.is_open();
(void)is_open;
@@ -100,9 +104,16 @@ void test()
handle1.close();
handle1.close(ec);
- win::random_access_handle::native_handle_type native_handle3
+ win::random_access_handle::native_handle_type native_handle4
+ = handle1.release();
+ (void)native_handle4;
+ win::random_access_handle::native_handle_type native_handle5
+ = handle1.release(ec);
+ (void)native_handle5;
+
+ win::random_access_handle::native_handle_type native_handle6
= handle1.native_handle();
- (void)native_handle3;
+ (void)native_handle6;
handle1.cancel();
handle1.cancel(ec);
@@ -147,5 +158,5 @@ void test()
ASIO_TEST_SUITE
(
"windows/random_access_handle",
- ASIO_TEST_CASE(windows_random_access_handle_compile::test)
+ ASIO_COMPILE_TEST_CASE(windows_random_access_handle_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/windows/random_access_handle_service.cpp b/3rdparty/asio/src/tests/unit/windows/random_access_handle_service.cpp
deleted file mode 100644
index 0895864d5b8..00000000000
--- a/3rdparty/asio/src/tests/unit/windows/random_access_handle_service.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// random_access_handle_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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)
-//
-
-// Disable autolinking for unit tests.
-#if !defined(BOOST_ALL_NO_LIB)
-#define BOOST_ALL_NO_LIB 1
-#endif // !defined(BOOST_ALL_NO_LIB)
-
-// Test that header file is self-contained.
-#include "asio/windows/random_access_handle_service.hpp"
-
-#include "asio.hpp"
-#include "../unit_test.hpp"
-
-ASIO_TEST_SUITE
-(
- "windows/random_access_handle_service",
- ASIO_TEST_CASE(null_test)
-)
diff --git a/3rdparty/asio/src/tests/unit/windows/stream_handle.cpp b/3rdparty/asio/src/tests/unit/windows/stream_handle.cpp
index 499ed354b04..1668dcea69a 100644
--- a/3rdparty/asio/src/tests/unit/windows/stream_handle.cpp
+++ b/3rdparty/asio/src/tests/unit/windows/stream_handle.cpp
@@ -2,7 +2,7 @@
// stream_handle.cpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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)
@@ -47,6 +47,7 @@ void test()
try
{
io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
char mutable_char_buffer[128] = "";
const char const_char_buffer[128] = "";
archetypes::lazy_handler lazy;
@@ -56,42 +57,45 @@ void test()
win::stream_handle handle1(ioc);
HANDLE native_handle1 = INVALID_HANDLE_VALUE;
+#if defined(ASIO_MSVC) && (_MSC_VER < 1910)
+ // Skip this on older MSVC due to mysterious ambiguous overload errors.
+#else
win::stream_handle handle2(ioc, native_handle1);
+#endif
-#if defined(ASIO_HAS_MOVE)
- win::stream_handle handle3(std::move(handle2));
-#endif // defined(ASIO_HAS_MOVE)
+ win::stream_handle handle3(ioc_ex);
+ HANDLE native_handle2 = INVALID_HANDLE_VALUE;
+ win::stream_handle handle4(ioc_ex, native_handle2);
+
+ win::stream_handle handle5(std::move(handle4));
+
+ win::basic_stream_handle<io_context::executor_type> handle6(ioc);
+ win::stream_handle handle7(std::move(handle6));
// basic_stream_handle operators.
-#if defined(ASIO_HAS_MOVE)
handle1 = win::stream_handle(ioc);
- handle1 = std::move(handle2);
-#endif // defined(ASIO_HAS_MOVE)
+ handle1 = std::move(handle4);
+ handle1 = std::move(handle6);
// basic_io_object functions.
-#if !defined(ASIO_NO_DEPRECATED)
- io_context& ioc_ref = handle1.get_io_context();
- (void)ioc_ref;
-#endif !defined(ASIO_NO_DEPRECATED)
-
- io_context::executor_type ex = handle1.get_executor();
+ windows::stream_handle::executor_type ex = handle1.get_executor();
(void)ex;
- // basic_handle functions.
+ // basic_overlapped_handle functions.
win::stream_handle::lowest_layer_type& lowest_layer
= handle1.lowest_layer();
(void)lowest_layer;
- const win::stream_handle& handle4 = handle1;
+ const win::stream_handle& handle8 = handle1;
const win::stream_handle::lowest_layer_type& lowest_layer2
- = handle4.lowest_layer();
+ = handle8.lowest_layer();
(void)lowest_layer2;
- HANDLE native_handle2 = INVALID_HANDLE_VALUE;
- handle1.assign(native_handle2);
+ HANDLE native_handle3 = INVALID_HANDLE_VALUE;
+ handle1.assign(native_handle3);
bool is_open = handle1.is_open();
(void)is_open;
@@ -99,9 +103,16 @@ void test()
handle1.close();
handle1.close(ec);
- win::stream_handle::native_handle_type native_handle3
+ win::stream_handle::native_handle_type native_handle4
+ = handle1.release();
+ (void)native_handle4;
+ win::stream_handle::native_handle_type native_handle5
+ = handle1.release(ec);
+ (void)native_handle5;
+
+ win::stream_handle::native_handle_type native_handle6
= handle1.native_handle();
- (void)native_handle3;
+ (void)native_handle6;
handle1.cancel();
handle1.cancel(ec);
@@ -140,5 +151,5 @@ void test()
ASIO_TEST_SUITE
(
"windows/stream_handle",
- ASIO_TEST_CASE(windows_stream_handle_compile::test)
+ ASIO_COMPILE_TEST_CASE(windows_stream_handle_compile::test)
)
diff --git a/3rdparty/asio/src/tests/unit/windows/stream_handle_service.cpp b/3rdparty/asio/src/tests/unit/windows/stream_handle_service.cpp
deleted file mode 100644
index 4281ee06b4f..00000000000
--- a/3rdparty/asio/src/tests/unit/windows/stream_handle_service.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// stream_handle_service.cpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2016 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)
-//
-
-// Disable autolinking for unit tests.
-#if !defined(BOOST_ALL_NO_LIB)
-#define BOOST_ALL_NO_LIB 1
-#endif // !defined(BOOST_ALL_NO_LIB)
-
-// Test that header file is self-contained.
-#include "asio/windows/stream_handle_service.hpp"
-
-#include "asio.hpp"
-#include "../unit_test.hpp"
-
-ASIO_TEST_SUITE
-(
- "windows/stream_handle_service",
- ASIO_TEST_CASE(null_test)
-)
diff --git a/3rdparty/asio/src/tests/unit/writable_pipe.cpp b/3rdparty/asio/src/tests/unit/writable_pipe.cpp
new file mode 100644
index 00000000000..0cea7547aa2
--- /dev/null
+++ b/3rdparty/asio/src/tests/unit/writable_pipe.cpp
@@ -0,0 +1,136 @@
+//
+// writable_pipe.cpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2024 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)
+//
+
+// Disable autolinking for unit tests.
+#if !defined(BOOST_ALL_NO_LIB)
+#define BOOST_ALL_NO_LIB 1
+#endif // !defined(BOOST_ALL_NO_LIB)
+
+// Test that header pipe is self-contained.
+#include "asio/writable_pipe.hpp"
+
+#include "archetypes/async_result.hpp"
+#include "asio/io_context.hpp"
+#include "unit_test.hpp"
+
+// writable_pipe_compile test
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+// The following test checks that all public member functions on the class
+// writable_pipe compile and link correctly. Runtime failures are ignored.
+
+namespace writable_pipe_compile {
+
+struct write_some_handler
+{
+ write_some_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ write_some_handler(write_some_handler&&) {}
+private:
+ write_some_handler(const write_some_handler&);
+};
+
+struct read_some_handler
+{
+ read_some_handler() {}
+ void operator()(const asio::error_code&, std::size_t) {}
+ read_some_handler(read_some_handler&&) {}
+private:
+ read_some_handler(const read_some_handler&);
+};
+
+void test()
+{
+#if defined(ASIO_HAS_PIPE)
+ using namespace asio;
+
+ try
+ {
+ io_context ioc;
+ const io_context::executor_type ioc_ex = ioc.get_executor();
+ char mutable_char_buffer[128] = "";
+ const char const_char_buffer[128] = "";
+ archetypes::lazy_handler lazy;
+ asio::error_code ec;
+
+ // basic_writable_pipe constructors.
+
+ writable_pipe pipe1(ioc);
+ writable_pipe::native_handle_type native_pipe1 = pipe1.native_handle();
+ writable_pipe pipe2(ioc, native_pipe1);
+
+ writable_pipe pipe3(ioc_ex);
+ writable_pipe::native_handle_type native_pipe2 = pipe1.native_handle();
+ writable_pipe pipe4(ioc_ex, native_pipe2);
+
+ writable_pipe pipe5(std::move(pipe4));
+
+ basic_writable_pipe<io_context::executor_type> pipe6(ioc);
+ writable_pipe pipe7(std::move(pipe6));
+
+ // basic_writable_pipe operators.
+
+ pipe1 = writable_pipe(ioc);
+ pipe1 = std::move(pipe2);
+ pipe1 = std::move(pipe6);
+
+ // basic_io_object functions.
+
+ writable_pipe::executor_type ex = pipe1.get_executor();
+ (void)ex;
+
+ // basic_writable_pipe functions.
+
+ writable_pipe::native_handle_type native_pipe3 = pipe1.native_handle();
+ pipe1.assign(native_pipe3);
+ writable_pipe::native_handle_type native_pipe4 = pipe1.native_handle();
+ pipe1.assign(native_pipe4, ec);
+
+ bool is_open = pipe1.is_open();
+ (void)is_open;
+
+ pipe1.close();
+ pipe1.close(ec);
+
+ writable_pipe::native_handle_type native_pipe5 = pipe1.release();
+ (void)native_pipe5;
+ writable_pipe::native_handle_type native_pipe6 = pipe1.release(ec);
+ (void)native_pipe6;
+
+ writable_pipe::native_handle_type native_pipe7 = pipe1.native_handle();
+ (void)native_pipe7;
+
+ pipe1.cancel();
+ pipe1.cancel(ec);
+
+ pipe1.write_some(buffer(mutable_char_buffer));
+ pipe1.write_some(buffer(const_char_buffer));
+ pipe1.write_some(buffer(mutable_char_buffer), ec);
+ pipe1.write_some(buffer(const_char_buffer), ec);
+
+ pipe1.async_write_some(buffer(mutable_char_buffer), write_some_handler());
+ pipe1.async_write_some(buffer(const_char_buffer), write_some_handler());
+ int i1 = pipe1.async_write_some(buffer(mutable_char_buffer), lazy);
+ (void)i1;
+ int i2 = pipe1.async_write_some(buffer(const_char_buffer), lazy);
+ (void)i2;
+ }
+ catch (std::exception&)
+ {
+ }
+#endif // defined(ASIO_HAS_PIPE)
+}
+
+} // namespace writable_pipe_compile
+
+ASIO_TEST_SUITE
+(
+ "writable_pipe",
+ ASIO_COMPILE_TEST_CASE(writable_pipe_compile::test)
+)
diff --git a/3rdparty/asio/src/tests/unit/write.cpp b/3rdparty/asio/src/tests/unit/write.cpp
index a60ee11ae45..470972217c1 100644
--- a/3rdparty/asio/src/tests/unit/write.cpp
+++ b/3rdparty/asio/src/tests/unit/write.cpp
@@ -2,7 +2,7 @@
// write.cpp
// ~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,7 +16,9 @@
// Test that header file is self-contained.
#include "asio/write.hpp"
+#include <array>
#include <cstring>
+#include <functional>
#include <vector>
#include "archetypes/async_result.hpp"
#include "asio/io_context.hpp"
@@ -24,20 +26,10 @@
#include "asio/streambuf.hpp"
#include "unit_test.hpp"
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
#if defined(ASIO_HAS_BOOST_ARRAY)
#include <boost/array.hpp>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
using namespace std; // For memcmp, memcpy and memset.
class test_stream
@@ -54,7 +46,7 @@ public:
memset(data_, 0, max_length);
}
- executor_type get_executor() ASIO_NOEXCEPT
+ executor_type get_executor() noexcept
{
return io_context_.get_executor();
}
@@ -120,12 +112,13 @@ public:
}
template <typename Const_Buffers, typename Handler>
- void async_write_some(const Const_Buffers& buffers, Handler handler)
+ void async_write_some(const Const_Buffers& buffers,
+ Handler&& handler)
{
size_t bytes_transferred = write_some(buffers);
asio::post(get_executor(),
asio::detail::bind_handler(
- ASIO_MOVE_CAST(Handler)(handler),
+ static_cast<Handler&&>(handler),
asio::error_code(), bytes_transferred));
}
@@ -209,7 +202,8 @@ void test_2_arg_vector_buffers_write()
test_stream s(ioc);
std::vector<asio::const_buffer> buffers;
buffers.push_back(asio::buffer(write_data, 32));
- buffers.push_back(asio::buffer(write_data) + 32);
+ buffers.push_back(asio::buffer(write_data, 39) + 32);
+ buffers.push_back(asio::buffer(write_data) + 39);
s.reset();
size_t bytes_transferred = asio::write(s, buffers);
@@ -229,6 +223,38 @@ void test_2_arg_vector_buffers_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
}
+void test_2_arg_dynamic_string_write()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(write_data));
+ asio::const_buffer buffers
+ = asio::buffer(write_data, sizeof(write_data));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ size_t bytes_transferred = asio::write(s, sb);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+}
+
void test_3_arg_nothrow_zero_buffers_write()
{
asio::io_context ioc;
@@ -305,7 +331,8 @@ void test_3_arg_nothrow_vector_buffers_write()
test_stream s(ioc);
std::vector<asio::const_buffer> buffers;
buffers.push_back(asio::buffer(write_data, 32));
- buffers.push_back(asio::buffer(write_data) + 32);
+ buffers.push_back(asio::buffer(write_data, 39) + 32);
+ buffers.push_back(asio::buffer(write_data) + 39);
s.reset();
asio::error_code error;
@@ -329,17 +356,58 @@ void test_3_arg_nothrow_vector_buffers_write()
ASIO_CHECK(!error);
}
+void test_3_arg_nothrow_dynamic_string_write()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(write_data));
+ asio::const_buffer buffers
+ = asio::buffer(write_data, sizeof(write_data));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ asio::error_code error;
+ size_t bytes_transferred = asio::write(s, sb, error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb, error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb, error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+}
+
bool old_style_transfer_all(const asio::error_code& ec,
size_t /*bytes_transferred*/)
{
return !!ec;
}
-size_t short_transfer(const asio::error_code& ec,
- size_t /*bytes_transferred*/)
+struct short_transfer
{
- return !!ec ? 0 : 3;
-}
+ short_transfer() {}
+ short_transfer(short_transfer&&) {}
+ size_t operator()(const asio::error_code& ec,
+ size_t /*bytes_transferred*/)
+ {
+ return !!ec ? 0 : 3;
+ }
+};
void test_3_arg_const_buffer_write()
{
@@ -506,19 +574,19 @@ void test_3_arg_const_buffer_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
}
@@ -688,19 +756,19 @@ void test_3_arg_mutable_buffer_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
s.reset();
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
}
@@ -711,7 +779,8 @@ void test_3_arg_vector_buffers_write()
test_stream s(ioc);
std::vector<asio::const_buffer> buffers;
buffers.push_back(asio::buffer(write_data, 32));
- buffers.push_back(asio::buffer(write_data) + 32);
+ buffers.push_back(asio::buffer(write_data, 39) + 32);
+ buffers.push_back(asio::buffer(write_data) + 39);
s.reset();
size_t bytes_transferred = asio::write(s, buffers,
@@ -871,19 +940,232 @@ void test_3_arg_vector_buffers_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write(s, buffers, short_transfer);
+ bytes_transferred = asio::write(s, buffers, short_transfer());
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+}
+
+void test_3_arg_dynamic_string_write()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(write_data));
+ asio::const_buffer buffers
+ = asio::buffer(write_data, sizeof(write_data));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ size_t bytes_transferred = asio::write(s, sb,
+ asio::transfer_all());
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_all());
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_all());
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(1));
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(1));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(10));
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(42));
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(42));
+ ASIO_CHECK(bytes_transferred == 50);
+ ASIO_CHECK(s.check_buffers(buffers, 50));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(1));
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(10));
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(42));
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb, old_style_transfer_all);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb, old_style_transfer_all);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb, old_style_transfer_all);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb, short_transfer());
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ bytes_transferred = asio::write(s, sb, short_transfer());
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ bytes_transferred = asio::write(s, sb, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
}
@@ -1103,7 +1385,7 @@ void test_4_arg_const_buffer_write()
ASIO_CHECK(!error);
s.reset();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1111,7 +1393,7 @@ void test_4_arg_const_buffer_write()
s.reset();
s.next_write_length(1);
error = asio::error_code();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1119,7 +1401,7 @@ void test_4_arg_const_buffer_write()
s.reset();
s.next_write_length(10);
error = asio::error_code();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1340,7 +1622,7 @@ void test_4_arg_mutable_buffer_write()
ASIO_CHECK(!error);
s.reset();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -1348,7 +1630,7 @@ void test_4_arg_mutable_buffer_write()
s.reset();
s.next_write_length(1);
error = asio::error_code();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -1356,7 +1638,7 @@ void test_4_arg_mutable_buffer_write()
s.reset();
s.next_write_length(10);
error = asio::error_code();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -1368,7 +1650,8 @@ void test_4_arg_vector_buffers_write()
test_stream s(ioc);
std::vector<asio::const_buffer> buffers;
buffers.push_back(asio::buffer(write_data, 32));
- buffers.push_back(asio::buffer(write_data) + 32);
+ buffers.push_back(asio::buffer(write_data, 39) + 32);
+ buffers.push_back(asio::buffer(write_data) + 39);
s.reset();
asio::error_code error;
@@ -1578,7 +1861,7 @@ void test_4_arg_vector_buffers_write()
ASIO_CHECK(!error);
s.reset();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1586,7 +1869,7 @@ void test_4_arg_vector_buffers_write()
s.reset();
s.next_write_length(1);
error = asio::error_code();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1594,7 +1877,275 @@ void test_4_arg_vector_buffers_write()
s.reset();
s.next_write_length(10);
error = asio::error_code();
- bytes_transferred = asio::write(s, buffers, short_transfer, error);
+ bytes_transferred = asio::write(s, buffers, short_transfer(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+}
+
+void test_4_arg_dynamic_string_write()
+{
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(write_data));
+ asio::const_buffer buffers
+ = asio::buffer(write_data, sizeof(write_data));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ asio::error_code error;
+ size_t bytes_transferred = asio::write(s, sb,
+ asio::transfer_all(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_all(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_all(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(1), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(1), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(10), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(42), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_at_least(42), error);
+ ASIO_CHECK(bytes_transferred == 50);
+ ASIO_CHECK(s.check_buffers(buffers, 50));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(1), error);
+ ASIO_CHECK(bytes_transferred == 1);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(10), error);
+ ASIO_CHECK(bytes_transferred == 10);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ asio::transfer_exactly(42), error);
+ ASIO_CHECK(bytes_transferred == 42);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb,
+ old_style_transfer_all, error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ old_style_transfer_all, error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb,
+ old_style_transfer_all, error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bytes_transferred = asio::write(s, sb, short_transfer(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb, short_transfer(), error);
+ ASIO_CHECK(bytes_transferred == sizeof(write_data));
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+ ASIO_CHECK(!error);
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ error = asio::error_code();
+ bytes_transferred = asio::write(s, sb, short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1610,13 +2161,9 @@ void async_write_handler(const asio::error_code& e,
void test_3_arg_const_buffer_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -1665,13 +2212,9 @@ void test_3_arg_const_buffer_async_write()
void test_3_arg_mutable_buffer_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -1720,13 +2263,9 @@ void test_3_arg_mutable_buffer_async_write()
void test_3_arg_boost_array_buffers_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -1778,15 +2317,10 @@ void test_3_arg_boost_array_buffers_async_write()
void test_3_arg_std_array_buffers_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_stream s(ioc);
std::array<asio::const_buffer, 2> buffers = { {
@@ -1831,24 +2365,20 @@ void test_3_arg_std_array_buffers_async_write()
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_3_arg_vector_buffers_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
std::vector<asio::const_buffer> buffers;
buffers.push_back(asio::buffer(write_data, 32));
- buffers.push_back(asio::buffer(write_data) + 32);
+ buffers.push_back(asio::buffer(write_data, 39) + 32);
+ buffers.push_back(asio::buffer(write_data) + 39);
s.reset();
bool called = false;
@@ -1890,15 +2420,71 @@ void test_3_arg_vector_buffers_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
}
+void test_3_arg_dynamic_string_async_write()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(write_data));
+ asio::const_buffer buffers
+ = asio::buffer(write_data, sizeof(write_data));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bool called = false;
+ asio::async_write(s, sb,
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb,
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb,
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ int i = asio::async_write(s, sb, archetypes::lazy_handler());
+ ASIO_CHECK(i == 42);
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+}
+
void test_3_arg_streambuf_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -1952,17 +2538,14 @@ void test_3_arg_streambuf_async_write()
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
void test_4_arg_const_buffer_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -2227,7 +2810,7 @@ void test_4_arg_const_buffer_async_write()
s.reset();
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -2238,7 +2821,7 @@ void test_4_arg_const_buffer_async_write()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -2249,7 +2832,7 @@ void test_4_arg_const_buffer_async_write()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -2258,7 +2841,7 @@ void test_4_arg_const_buffer_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write(s, buffers, short_transfer,
+ int i = asio::async_write(s, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -2268,13 +2851,9 @@ void test_4_arg_const_buffer_async_write()
void test_4_arg_mutable_buffer_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -2539,7 +3118,7 @@ void test_4_arg_mutable_buffer_async_write()
s.reset();
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -2550,7 +3129,7 @@ void test_4_arg_mutable_buffer_async_write()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -2561,7 +3140,7 @@ void test_4_arg_mutable_buffer_async_write()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -2570,7 +3149,7 @@ void test_4_arg_mutable_buffer_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
s.reset();
- int i = asio::async_write(s, buffers, short_transfer,
+ int i = asio::async_write(s, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -2580,13 +3159,9 @@ void test_4_arg_mutable_buffer_async_write()
void test_4_arg_boost_array_buffers_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -2853,7 +3428,7 @@ void test_4_arg_boost_array_buffers_async_write()
s.reset();
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -2864,7 +3439,7 @@ void test_4_arg_boost_array_buffers_async_write()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -2875,7 +3450,7 @@ void test_4_arg_boost_array_buffers_async_write()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -2884,7 +3459,7 @@ void test_4_arg_boost_array_buffers_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write(s, buffers, short_transfer,
+ int i = asio::async_write(s, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -2895,15 +3470,10 @@ void test_4_arg_boost_array_buffers_async_write()
void test_4_arg_std_array_buffers_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_stream s(ioc);
std::array<asio::const_buffer, 2> buffers = { {
@@ -3168,7 +3738,7 @@ void test_4_arg_std_array_buffers_async_write()
s.reset();
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3179,7 +3749,7 @@ void test_4_arg_std_array_buffers_async_write()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3190,7 +3760,7 @@ void test_4_arg_std_array_buffers_async_write()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3199,30 +3769,26 @@ void test_4_arg_std_array_buffers_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write(s, buffers, short_transfer,
+ int i = asio::async_write(s, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_4_arg_vector_buffers_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
std::vector<asio::const_buffer> buffers;
buffers.push_back(asio::buffer(write_data, 32));
- buffers.push_back(asio::buffer(write_data) + 32);
+ buffers.push_back(asio::buffer(write_data, 39) + 32);
+ buffers.push_back(asio::buffer(write_data) + 39);
s.reset();
bool called = false;
@@ -3482,7 +4048,344 @@ void test_4_arg_vector_buffers_async_write()
s.reset();
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, buffers, short_transfer(),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, buffers, short_transfer(),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, buffers, short_transfer(),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ int i = asio::async_write(s, buffers, short_transfer(),
+ archetypes::lazy_handler());
+ ASIO_CHECK(i == 42);
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+}
+
+void test_4_arg_dynamic_string_async_write()
+{
+ namespace bindns = std;
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
+
+ asio::io_context ioc;
+ test_stream s(ioc);
+ std::string data;
+ asio::dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type> sb
+ = asio::dynamic_buffer(data, sizeof(write_data));
+ asio::const_buffer buffers
+ = asio::buffer(write_data, sizeof(write_data));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ bool called = false;
+ asio::async_write(s, sb, asio::transfer_all(),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_all(),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_all(),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(1),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(1),
+ bindns::bind(async_write_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(1),
+ bindns::bind(async_write_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(10),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(10),
+ bindns::bind(async_write_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(10),
+ bindns::bind(async_write_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(42),
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(42),
+ bindns::bind(async_write_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_at_least(42),
+ bindns::bind(async_write_handler,
+ _1, _2, 50, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 50));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(1),
+ bindns::bind(async_write_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(1),
+ bindns::bind(async_write_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(1),
+ bindns::bind(async_write_handler,
+ _1, _2, 1, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 1));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(10),
+ bindns::bind(async_write_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(10),
+ bindns::bind(async_write_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(10),
+ bindns::bind(async_write_handler,
+ _1, _2, 10, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 10));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(42),
+ bindns::bind(async_write_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(42),
+ bindns::bind(async_write_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, asio::transfer_exactly(42),
+ bindns::bind(async_write_handler,
+ _1, _2, 42, &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, 42));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, old_style_transfer_all,
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(1);
+ called = false;
+ asio::async_write(s, sb, old_style_transfer_all,
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ s.next_write_length(10);
+ called = false;
+ asio::async_write(s, sb, old_style_transfer_all,
+ bindns::bind(async_write_handler,
+ _1, _2, sizeof(write_data), &called));
+ ioc.restart();
+ ioc.run();
+ ASIO_CHECK(called);
+ ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+
+ s.reset();
+ data.assign(write_data, sizeof(write_data));
+ called = false;
+ asio::async_write(s, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3491,9 +4394,10 @@ void test_4_arg_vector_buffers_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
+ data.assign(write_data, sizeof(write_data));
s.next_write_length(1);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3502,9 +4406,10 @@ void test_4_arg_vector_buffers_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
+ data.assign(write_data, sizeof(write_data));
s.next_write_length(10);
called = false;
- asio::async_write(s, buffers, short_transfer,
+ asio::async_write(s, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3513,7 +4418,8 @@ void test_4_arg_vector_buffers_async_write()
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write(s, buffers, short_transfer,
+ data.assign(write_data, sizeof(write_data));
+ int i = asio::async_write(s, sb, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -3523,13 +4429,10 @@ void test_4_arg_vector_buffers_async_write()
void test_4_arg_streambuf_async_write()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
+#if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_stream s(ioc);
@@ -3845,7 +4748,7 @@ void test_4_arg_streambuf_async_write()
sb.consume(sb.size());
sb.sputn(write_data, sizeof(write_data));
called = false;
- asio::async_write(s, sb, short_transfer,
+ asio::async_write(s, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3858,7 +4761,7 @@ void test_4_arg_streambuf_async_write()
sb.sputn(write_data, sizeof(write_data));
s.next_write_length(1);
called = false;
- asio::async_write(s, sb, short_transfer,
+ asio::async_write(s, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3871,7 +4774,7 @@ void test_4_arg_streambuf_async_write()
sb.sputn(write_data, sizeof(write_data));
s.next_write_length(10);
called = false;
- asio::async_write(s, sb, short_transfer,
+ asio::async_write(s, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -3882,12 +4785,13 @@ void test_4_arg_streambuf_async_write()
s.reset();
sb.consume(sb.size());
sb.sputn(write_data, sizeof(write_data));
- int i = asio::async_write(s, sb, short_transfer,
+ int i = asio::async_write(s, sb, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+#endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
}
ASIO_TEST_SUITE
@@ -3897,26 +4801,32 @@ ASIO_TEST_SUITE
ASIO_TEST_CASE(test_2_arg_const_buffer_write)
ASIO_TEST_CASE(test_2_arg_mutable_buffer_write)
ASIO_TEST_CASE(test_2_arg_vector_buffers_write)
+ ASIO_TEST_CASE(test_2_arg_dynamic_string_write)
ASIO_TEST_CASE(test_3_arg_nothrow_zero_buffers_write)
ASIO_TEST_CASE(test_3_arg_nothrow_const_buffer_write)
ASIO_TEST_CASE(test_3_arg_nothrow_mutable_buffer_write)
ASIO_TEST_CASE(test_3_arg_nothrow_vector_buffers_write)
+ ASIO_TEST_CASE(test_3_arg_nothrow_dynamic_string_write)
ASIO_TEST_CASE(test_3_arg_const_buffer_write)
ASIO_TEST_CASE(test_3_arg_mutable_buffer_write)
ASIO_TEST_CASE(test_3_arg_vector_buffers_write)
+ ASIO_TEST_CASE(test_3_arg_dynamic_string_write)
ASIO_TEST_CASE(test_4_arg_const_buffer_write)
ASIO_TEST_CASE(test_4_arg_mutable_buffer_write)
ASIO_TEST_CASE(test_4_arg_vector_buffers_write)
+ ASIO_TEST_CASE(test_4_arg_dynamic_string_write)
ASIO_TEST_CASE(test_3_arg_const_buffer_async_write)
ASIO_TEST_CASE(test_3_arg_mutable_buffer_async_write)
ASIO_TEST_CASE(test_3_arg_boost_array_buffers_async_write)
ASIO_TEST_CASE(test_3_arg_std_array_buffers_async_write)
ASIO_TEST_CASE(test_3_arg_vector_buffers_async_write)
+ ASIO_TEST_CASE(test_3_arg_dynamic_string_async_write)
ASIO_TEST_CASE(test_3_arg_streambuf_async_write)
ASIO_TEST_CASE(test_4_arg_const_buffer_async_write)
ASIO_TEST_CASE(test_4_arg_mutable_buffer_async_write)
ASIO_TEST_CASE(test_4_arg_boost_array_buffers_async_write)
ASIO_TEST_CASE(test_4_arg_std_array_buffers_async_write)
ASIO_TEST_CASE(test_4_arg_vector_buffers_async_write)
+ ASIO_TEST_CASE(test_4_arg_dynamic_string_async_write)
ASIO_TEST_CASE(test_4_arg_streambuf_async_write)
)
diff --git a/3rdparty/asio/src/tests/unit/write_at.cpp b/3rdparty/asio/src/tests/unit/write_at.cpp
index a8e55e87d90..adc684d0e4f 100644
--- a/3rdparty/asio/src/tests/unit/write_at.cpp
+++ b/3rdparty/asio/src/tests/unit/write_at.cpp
@@ -2,7 +2,7 @@
// write_at.cpp
// ~~~~~~~~~~~~
//
-// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2024 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,27 +16,19 @@
// Test that header file is self-contained.
#include "asio/write_at.hpp"
+#include <array>
#include <cstring>
+#include <functional>
#include "archetypes/async_result.hpp"
#include "asio/io_context.hpp"
#include "asio/post.hpp"
#include "asio/streambuf.hpp"
#include "unit_test.hpp"
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind.hpp>
-#else // defined(ASIO_HAS_BOOST_BIND)
-# include <functional>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
#if defined(ASIO_HAS_BOOST_ARRAY)
#include <boost/array.hpp>
#endif // defined(ASIO_HAS_BOOST_ARRAY)
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
using namespace std; // For memcmp, memcpy and memset.
class test_random_access_device
@@ -52,7 +44,7 @@ public:
memset(data_, 0, max_length);
}
- executor_type get_executor() ASIO_NOEXCEPT
+ executor_type get_executor() noexcept
{
return io_context_.get_executor();
}
@@ -118,12 +110,12 @@ public:
template <typename Const_Buffers, typename Handler>
void async_write_some_at(asio::uint64_t offset,
- const Const_Buffers& buffers, Handler handler)
+ const Const_Buffers& buffers, Handler&& handler)
{
size_t bytes_transferred = write_some_at(offset, buffers);
asio::post(get_executor(),
asio::detail::bind_handler(
- ASIO_MOVE_CAST(Handler)(handler),
+ static_cast<Handler&&>(handler),
asio::error_code(), bytes_transferred));
}
@@ -421,11 +413,16 @@ bool old_style_transfer_all(const asio::error_code& ec,
return !!ec;
}
-size_t short_transfer(const asio::error_code& ec,
- size_t /*bytes_transferred*/)
+struct short_transfer
{
- return !!ec ? 0 : 3;
-}
+ short_transfer() {}
+ short_transfer(short_transfer&&) {}
+ size_t operator()(const asio::error_code& ec,
+ size_t /*bytes_transferred*/)
+ {
+ return !!ec ? 0 : 3;
+ }
+};
void test_4_arg_const_buffer_write_at()
{
@@ -755,36 +752,36 @@ void test_4_arg_const_buffer_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
s.reset();
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
}
@@ -1117,36 +1114,36 @@ void test_4_arg_mutable_buffer_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
s.reset();
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
s.reset();
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
}
@@ -1480,36 +1477,36 @@ void test_4_arg_vector_buffers_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
s.reset();
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(1);
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 0, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
s.reset();
s.next_write_length(10);
- bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer);
+ bytes_transferred = asio::write_at(s, 1234, buffers, short_transfer());
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
}
@@ -1936,14 +1933,14 @@ void test_5_arg_const_buffer_write_at()
s.reset();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
s.reset();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1952,7 +1949,7 @@ void test_5_arg_const_buffer_write_at()
s.next_write_length(1);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1961,7 +1958,7 @@ void test_5_arg_const_buffer_write_at()
s.next_write_length(1);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1970,7 +1967,7 @@ void test_5_arg_const_buffer_write_at()
s.next_write_length(10);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -1979,7 +1976,7 @@ void test_5_arg_const_buffer_write_at()
s.next_write_length(10);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -2407,14 +2404,14 @@ void test_5_arg_mutable_buffer_write_at()
s.reset();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
s.reset();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -2423,7 +2420,7 @@ void test_5_arg_mutable_buffer_write_at()
s.next_write_length(1);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -2432,7 +2429,7 @@ void test_5_arg_mutable_buffer_write_at()
s.next_write_length(1);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -2441,7 +2438,7 @@ void test_5_arg_mutable_buffer_write_at()
s.next_write_length(10);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -2450,7 +2447,7 @@ void test_5_arg_mutable_buffer_write_at()
s.next_write_length(10);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
ASIO_CHECK(!error);
@@ -2879,14 +2876,14 @@ void test_5_arg_vector_buffers_write_at()
s.reset();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
s.reset();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -2895,7 +2892,7 @@ void test_5_arg_vector_buffers_write_at()
s.next_write_length(1);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -2904,7 +2901,7 @@ void test_5_arg_vector_buffers_write_at()
s.next_write_length(1);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -2913,7 +2910,7 @@ void test_5_arg_vector_buffers_write_at()
s.next_write_length(10);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 0, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -2922,7 +2919,7 @@ void test_5_arg_vector_buffers_write_at()
s.next_write_length(10);
error = asio::error_code();
bytes_transferred = asio::write_at(s, 1234, buffers,
- short_transfer, error);
+ short_transfer(), error);
ASIO_CHECK(bytes_transferred == sizeof(write_data));
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
ASIO_CHECK(!error);
@@ -2938,13 +2935,9 @@ void async_write_handler(const asio::error_code& e,
void test_4_arg_const_buffer_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -3037,13 +3030,9 @@ void test_4_arg_const_buffer_async_write_at()
void test_4_arg_mutable_buffer_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -3136,13 +3125,9 @@ void test_4_arg_mutable_buffer_async_write_at()
void test_4_arg_boost_array_buffers_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -3238,15 +3223,10 @@ void test_4_arg_boost_array_buffers_async_write_at()
void test_4_arg_std_array_buffers_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_random_access_device s(ioc);
std::array<asio::const_buffer, 2> buffers = { {
@@ -3335,18 +3315,13 @@ void test_4_arg_std_array_buffers_async_write_at()
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_4_arg_vector_buffers_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -3440,13 +3415,9 @@ void test_4_arg_vector_buffers_async_write_at()
void test_4_arg_streambuf_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -3556,13 +3527,9 @@ void test_4_arg_streambuf_async_write_at()
void test_5_arg_const_buffer_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -4125,7 +4092,7 @@ void test_5_arg_const_buffer_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -4135,7 +4102,7 @@ void test_5_arg_const_buffer_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -4146,7 +4113,7 @@ void test_5_arg_const_buffer_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -4157,7 +4124,7 @@ void test_5_arg_const_buffer_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -4168,7 +4135,7 @@ void test_5_arg_const_buffer_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -4179,7 +4146,7 @@ void test_5_arg_const_buffer_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -4188,7 +4155,7 @@ void test_5_arg_const_buffer_async_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write_at(s, 0, buffers, short_transfer,
+ int i = asio::async_write_at(s, 0, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -4198,13 +4165,9 @@ void test_5_arg_const_buffer_async_write_at()
void test_5_arg_mutable_buffer_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -4767,7 +4730,7 @@ void test_5_arg_mutable_buffer_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -4777,7 +4740,7 @@ void test_5_arg_mutable_buffer_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -4788,7 +4751,7 @@ void test_5_arg_mutable_buffer_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -4799,7 +4762,7 @@ void test_5_arg_mutable_buffer_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -4810,7 +4773,7 @@ void test_5_arg_mutable_buffer_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -4821,7 +4784,7 @@ void test_5_arg_mutable_buffer_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(mutable_write_data), &called));
ioc.restart();
@@ -4830,7 +4793,7 @@ void test_5_arg_mutable_buffer_async_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
s.reset();
- int i = asio::async_write_at(s, 0, buffers, short_transfer,
+ int i = asio::async_write_at(s, 0, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -4840,13 +4803,9 @@ void test_5_arg_mutable_buffer_async_write_at()
void test_5_arg_boost_array_buffers_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
#if defined(ASIO_HAS_BOOST_ARRAY)
asio::io_context ioc;
@@ -5411,7 +5370,7 @@ void test_5_arg_boost_array_buffers_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -5421,7 +5380,7 @@ void test_5_arg_boost_array_buffers_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -5432,7 +5391,7 @@ void test_5_arg_boost_array_buffers_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -5443,7 +5402,7 @@ void test_5_arg_boost_array_buffers_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -5454,7 +5413,7 @@ void test_5_arg_boost_array_buffers_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -5465,7 +5424,7 @@ void test_5_arg_boost_array_buffers_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -5474,7 +5433,7 @@ void test_5_arg_boost_array_buffers_async_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write_at(s, 0, buffers, short_transfer,
+ int i = asio::async_write_at(s, 0, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -5485,15 +5444,10 @@ void test_5_arg_boost_array_buffers_async_write_at()
void test_5_arg_std_array_buffers_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
-#if defined(ASIO_HAS_STD_ARRAY)
asio::io_context ioc;
test_random_access_device s(ioc);
std::array<asio::const_buffer, 2> buffers = { {
@@ -6056,7 +6010,7 @@ void test_5_arg_std_array_buffers_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6066,7 +6020,7 @@ void test_5_arg_std_array_buffers_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6077,7 +6031,7 @@ void test_5_arg_std_array_buffers_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6088,7 +6042,7 @@ void test_5_arg_std_array_buffers_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6099,7 +6053,7 @@ void test_5_arg_std_array_buffers_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6110,7 +6064,7 @@ void test_5_arg_std_array_buffers_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6119,24 +6073,19 @@ void test_5_arg_std_array_buffers_async_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write_at(s, 0, buffers, short_transfer,
+ int i = asio::async_write_at(s, 0, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
ioc.run();
ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-#endif // defined(ASIO_HAS_STD_ARRAY)
}
void test_5_arg_vector_buffers_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -6700,7 +6649,7 @@ void test_5_arg_vector_buffers_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6710,7 +6659,7 @@ void test_5_arg_vector_buffers_async_write_at()
s.reset();
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6721,7 +6670,7 @@ void test_5_arg_vector_buffers_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6732,7 +6681,7 @@ void test_5_arg_vector_buffers_async_write_at()
s.reset();
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6743,7 +6692,7 @@ void test_5_arg_vector_buffers_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 0, buffers, short_transfer,
+ asio::async_write_at(s, 0, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6754,7 +6703,7 @@ void test_5_arg_vector_buffers_async_write_at()
s.reset();
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 1234, buffers, short_transfer,
+ asio::async_write_at(s, 1234, buffers, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -6763,7 +6712,7 @@ void test_5_arg_vector_buffers_async_write_at()
ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
s.reset();
- int i = asio::async_write_at(s, 0, buffers, short_transfer,
+ int i = asio::async_write_at(s, 0, buffers, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();
@@ -6773,13 +6722,9 @@ void test_5_arg_vector_buffers_async_write_at()
void test_5_arg_streambuf_async_write_at()
{
-#if defined(ASIO_HAS_BOOST_BIND)
- namespace bindns = boost;
-#else // defined(ASIO_HAS_BOOST_BIND)
namespace bindns = std;
- using std::placeholders::_1;
- using std::placeholders::_2;
-#endif // defined(ASIO_HAS_BOOST_BIND)
+ using bindns::placeholders::_1;
+ using bindns::placeholders::_2;
asio::io_context ioc;
test_random_access_device s(ioc);
@@ -7441,7 +7386,7 @@ void test_5_arg_streambuf_async_write_at()
sb.consume(sb.size());
sb.sputn(write_data, sizeof(write_data));
called = false;
- asio::async_write_at(s, 0, sb, short_transfer,
+ asio::async_write_at(s, 0, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -7453,7 +7398,7 @@ void test_5_arg_streambuf_async_write_at()
sb.consume(sb.size());
sb.sputn(write_data, sizeof(write_data));
called = false;
- asio::async_write_at(s, 1234, sb, short_transfer,
+ asio::async_write_at(s, 1234, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -7466,7 +7411,7 @@ void test_5_arg_streambuf_async_write_at()
sb.sputn(write_data, sizeof(write_data));
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 0, sb, short_transfer,
+ asio::async_write_at(s, 0, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -7479,7 +7424,7 @@ void test_5_arg_streambuf_async_write_at()
sb.sputn(write_data, sizeof(write_data));
s.next_write_length(1);
called = false;
- asio::async_write_at(s, 1234, sb, short_transfer,
+ asio::async_write_at(s, 1234, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -7492,7 +7437,7 @@ void test_5_arg_streambuf_async_write_at()
sb.sputn(write_data, sizeof(write_data));
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 0, sb, short_transfer,
+ asio::async_write_at(s, 0, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -7505,7 +7450,7 @@ void test_5_arg_streambuf_async_write_at()
sb.sputn(write_data, sizeof(write_data));
s.next_write_length(10);
called = false;
- asio::async_write_at(s, 1234, sb, short_transfer,
+ asio::async_write_at(s, 1234, sb, short_transfer(),
bindns::bind(async_write_handler,
_1, _2, sizeof(write_data), &called));
ioc.restart();
@@ -7516,7 +7461,7 @@ void test_5_arg_streambuf_async_write_at()
s.reset();
sb.consume(sb.size());
sb.sputn(write_data, sizeof(write_data));
- int i = asio::async_write_at(s, 0, sb, short_transfer,
+ int i = asio::async_write_at(s, 0, sb, short_transfer(),
archetypes::lazy_handler());
ASIO_CHECK(i == 42);
ioc.restart();