Add support for building the tests and some examples without boost.
diff --git a/asio/configure.ac b/asio/configure.ac
index 1be7818..4f6f31a 100644
--- a/asio/configure.ac
+++ b/asio/configure.ac
@@ -14,7 +14,11 @@
 AC_ARG_WITH(boost,
   AC_HELP_STRING([--with-boost=DIR],[location of boost distribution]),
 [
-  CPPFLAGS="$CPPFLAGS -I${withval}"
+  if test "${withval}" = no; then
+    STANDALONE="yes"
+  else
+    CPPFLAGS="$CPPFLAGS -I${withval}"
+  fi
 ],
 [
   BOOSTDIR="`pwd`/../boost_1_49_0"
@@ -124,12 +128,14 @@
   SEPARATE_COMPILATION=yes
 ])
 
-AC_CHECK_HEADER([boost/noncopyable.hpp],,
-[
-  echo "Can't find boost headers. Please check the location of the boost"
-  echo "distribution and rerun configure using the --with-boost=DIR option."
-  exit 1
-],[])
+if test "$STANDALONE" != yes; then
+  AC_CHECK_HEADER([boost/noncopyable.hpp],,
+  [
+    echo "Can't find boost headers. Please check the location of the boost"
+    echo "distribution and rerun configure using the --with-boost=DIR option."
+    exit 1
+  ],[])
+fi
 
 AC_ARG_WITH(openssl,
   AC_HELP_STRING([--with-openssl=DIR],[location of openssl]),
@@ -190,12 +196,21 @@
 
 if test "$GXX" = yes; then
   CXXFLAGS="$CXXFLAGS -ftemplate-depth-256"
+  if test "$STANDALONE" = yes; then
+    CPPFLAGS="-std=c++0x $CPPFLAGS"
+  fi
+fi
+
+if test "$STANDALONE" = yes; then
+  CPPFLAGS="$CPPFLAGS -DASIO_STANDALONE"
 fi
 
 if test "$SEPARATE_COMPILATION" = yes; then
   CPPFLAGS="$CPPFLAGS -DASIO_SEPARATE_COMPILATION"
 fi
 
+AM_CONDITIONAL(STANDALONE,test x$STANDALONE = xyes)
+
 AM_CONDITIONAL(SEPARATE_COMPILATION,test x$SEPARATE_COMPILATION = xyes)
 
 AM_CONDITIONAL(WINDOWS_TARGET,test x$WINDOWS != xno)
diff --git a/asio/src/Makefile.am b/asio/src/Makefile.am
index 8eda44d..b48fc9d 100644
--- a/asio/src/Makefile.am
+++ b/asio/src/Makefile.am
@@ -104,6 +104,12 @@
 	tests/unit/write_at
 
 noinst_PROGRAMS = \
+	examples/iostreams/daytime_client \
+	examples/iostreams/daytime_server
+
+if !STANDALONE
+
+noinst_PROGRAMS += \
 	tests/latency/tcp_client \
 	tests/latency/tcp_server \
 	tests/latency/udp_client \
@@ -128,8 +134,6 @@
 	examples/http/server4/http_server \
 	examples/icmp/ping \
 	examples/invocation/prioritised_handlers \
-	examples/iostreams/daytime_client \
-	examples/iostreams/daytime_server \
 	examples/iostreams/http_client \
 	examples/multicast/receiver \
 	examples/multicast/sender \
@@ -172,6 +176,8 @@
 	examples/windows/transmit_file
 endif
 
+endif
+
 if HAVE_OPENSSL
 
 check_PROGRAMS += \
@@ -184,12 +190,16 @@
 	tests/unit/ssl/stream_service \
 	tests/unit/ssl/stream
 
+if !STANDALONE
+
 noinst_PROGRAMS += \
 	examples/ssl/client \
 	examples/ssl/server
 
 endif
 
+endif
+
 TESTS = \
 	tests/unit/basic_datagram_socket \
 	tests/unit/basic_deadline_timer \
diff --git a/asio/src/tests/unit/basic_datagram_socket.cpp b/asio/src/tests/unit/basic_datagram_socket.cpp
index a6f819a..d243513 100644
--- a/asio/src/tests/unit/basic_datagram_socket.cpp
+++ b/asio/src/tests/unit/basic_datagram_socket.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_datagram_socket");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_datagram_socket",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_deadline_timer.cpp b/asio/src/tests/unit/basic_deadline_timer.cpp
index 3d6dc25..5f6a805 100644
--- a/asio/src/tests/unit/basic_deadline_timer.cpp
+++ b/asio/src/tests/unit/basic_deadline_timer.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_deadline_timer");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_deadline_timer",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_raw_socket.cpp b/asio/src/tests/unit/basic_raw_socket.cpp
index 63c49c2..6dec018 100644
--- a/asio/src/tests/unit/basic_raw_socket.cpp
+++ b/asio/src/tests/unit/basic_raw_socket.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_raw_socket");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_raw_socket",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_seq_packet_socket.cpp b/asio/src/tests/unit/basic_seq_packet_socket.cpp
index 1c0ead0..ad4063f 100644
--- a/asio/src/tests/unit/basic_seq_packet_socket.cpp
+++ b/asio/src/tests/unit/basic_seq_packet_socket.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_seq_packet_socket");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_seq_packet_socket",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_serial_port.cpp b/asio/src/tests/unit/basic_serial_port.cpp
index 6fba440..ed7d178 100644
--- a/asio/src/tests/unit/basic_serial_port.cpp
+++ b/asio/src/tests/unit/basic_serial_port.cpp
@@ -19,9 +19,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_serial_port");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_serial_port",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_signal_set.cpp b/asio/src/tests/unit/basic_signal_set.cpp
index a8001cd..22edcc6 100644
--- a/asio/src/tests/unit/basic_signal_set.cpp
+++ b/asio/src/tests/unit/basic_signal_set.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_signal_set");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_signal_set",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_socket_acceptor.cpp b/asio/src/tests/unit/basic_socket_acceptor.cpp
index e555054..b5d12c2 100644
--- a/asio/src/tests/unit/basic_socket_acceptor.cpp
+++ b/asio/src/tests/unit/basic_socket_acceptor.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_socket_acceptor");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_socket_acceptor",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_stream_socket.cpp b/asio/src/tests/unit/basic_stream_socket.cpp
index 8ab00e4..6e87c1f 100644
--- a/asio/src/tests/unit/basic_stream_socket.cpp
+++ b/asio/src/tests/unit/basic_stream_socket.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_stream_socket");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_stream_socket",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_streambuf.cpp b/asio/src/tests/unit/basic_streambuf.cpp
index a562d82..f5adde4 100644
--- a/asio/src/tests/unit/basic_streambuf.cpp
+++ b/asio/src/tests/unit/basic_streambuf.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_streambuf");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_streambuf",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/basic_waitable_timer.cpp b/asio/src/tests/unit/basic_waitable_timer.cpp
index 09425e3..873a6d6 100644
--- a/asio/src/tests/unit/basic_waitable_timer.cpp
+++ b/asio/src/tests/unit/basic_waitable_timer.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("basic_waitable_timer");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "basic_waitable_timer",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/buffer.cpp b/asio/src/tests/unit/buffer.cpp
index c7cef52..7ff2de8 100644
--- a/asio/src/tests/unit/buffer.cpp
+++ b/asio/src/tests/unit/buffer.cpp
@@ -16,9 +16,16 @@
 // Test that header file is self-contained.
 #include "asio/buffer.hpp"
 
-#include <boost/array.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)
+
 //------------------------------------------------------------------------------
 
 // buffer_compile test
@@ -38,9 +45,11 @@
     const char const_raw_data[1024] = "";
     void* void_ptr_data = raw_data;
     const void* const_void_ptr_data = const_raw_data;
+#if defined(ASIO_HAS_BOOST_ARRAY)
     boost::array<char, 1024> array_data;
     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;
@@ -133,12 +142,14 @@
     mb1 = buffer(raw_data, 1024);
     cb1 = buffer(const_raw_data);
     cb1 = buffer(const_raw_data, 1024);
+#if defined(ASIO_HAS_BOOST_ARRAY)
     mb1 = buffer(array_data);
     mb1 = buffer(array_data, 1024);
     cb1 = buffer(const_array_data_1);
     cb1 = buffer(const_array_data_1, 1024);
     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);
@@ -228,9 +239,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("buffer");
-  test->add(BOOST_TEST_CASE(&buffer_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "buffer",
+  ASIO_TEST_CASE(buffer_compile::test)
+)
diff --git a/asio/src/tests/unit/buffered_read_stream.cpp b/asio/src/tests/unit/buffered_read_stream.cpp
index ca8f651..f8545e2 100644
--- a/asio/src/tests/unit/buffered_read_stream.cpp
+++ b/asio/src/tests/unit/buffered_read_stream.cpp
@@ -16,15 +16,19 @@
 // Test that header file is self-contained.
 #include "asio/buffered_read_stream.hpp"
 
-#include <boost/bind.hpp>
 #include <cstring>
 #include "asio/buffer.hpp"
 #include "asio/io_service.hpp"
 #include "asio/ip/tcp.hpp"
-#include "asio/placeholders.hpp"
 #include "asio/system_error.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)
+
 typedef asio::buffered_read_stream<
     asio::ip::tcp::socket> stream_type;
 
@@ -66,9 +70,9 @@
         asio::buffer(read_buf + bytes_read));
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   bytes_written = 0;
   while (bytes_written < sizeof(write_data))
@@ -84,31 +88,31 @@
         asio::buffer(read_buf + bytes_read));
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   server_socket.close();
   asio::error_code error;
   bytes_read = client_socket.read_some(
       asio::buffer(read_buf), error);
 
-  BOOST_CHECK(bytes_read == 0);
-  BOOST_CHECK(error == asio::error::eof);
+  ASIO_CHECK(bytes_read == 0);
+  ASIO_CHECK(error == asio::error::eof);
 
   client_socket.close(error);
 }
 
 void handle_accept(const asio::error_code& e)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
 }
 
 void handle_write(const asio::error_code& e,
     std::size_t bytes_transferred,
     std::size_t* total_bytes_written)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
   if (e)
     throw asio::system_error(e); // Terminate test.
   *total_bytes_written += bytes_transferred;
@@ -118,7 +122,7 @@
     std::size_t bytes_transferred,
     std::size_t* total_bytes_read)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
   if (e)
     throw asio::system_error(e); // Terminate test.
   *total_bytes_read += bytes_transferred;
@@ -127,14 +131,22 @@
 void handle_read_eof(const asio::error_code& e,
     std::size_t bytes_transferred)
 {
-  BOOST_CHECK(e == asio::error::eof);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(e == asio::error::eof);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 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)
+
   asio::io_service io_service;
 
   asio::ip::tcp::acceptor acceptor(io_service,
@@ -159,8 +171,7 @@
   {
     client_socket.async_write_some(
         asio::buffer(write_buf + bytes_written),
-        boost::bind(handle_write, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_written));
+        bindns::bind(handle_write, _1, _2, &bytes_written));
     io_service.run();
     io_service.reset();
   }
@@ -173,23 +184,21 @@
   {
     server_socket.async_read_some(
         asio::buffer(read_buf + bytes_read),
-        boost::bind(handle_read, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_read));
+        bindns::bind(handle_read, _1, _2, &bytes_read));
     io_service.run();
     io_service.reset();
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   bytes_written = 0;
   while (bytes_written < sizeof(write_data))
   {
     server_socket.async_write_some(
         asio::buffer(write_buf + bytes_written),
-        boost::bind(handle_write, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_written));
+        bindns::bind(handle_write, _1, _2, &bytes_written));
     io_service.run();
     io_service.reset();
   }
@@ -199,24 +208,22 @@
   {
     client_socket.async_read_some(
         asio::buffer(read_buf + bytes_read),
-        boost::bind(handle_read, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_read));
+        bindns::bind(handle_read, _1, _2, &bytes_read));
     io_service.run();
     io_service.reset();
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   server_socket.close();
   client_socket.async_read_some(asio::buffer(read_buf), handle_read_eof);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("buffered_read_stream");
-  test->add(BOOST_TEST_CASE(&test_sync_operations));
-  test->add(BOOST_TEST_CASE(&test_async_operations));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "buffered_read_stream",
+  ASIO_TEST_CASE(test_sync_operations)
+  ASIO_TEST_CASE(test_async_operations)
+)
diff --git a/asio/src/tests/unit/buffered_stream.cpp b/asio/src/tests/unit/buffered_stream.cpp
index 69caa64..9b3585a 100644
--- a/asio/src/tests/unit/buffered_stream.cpp
+++ b/asio/src/tests/unit/buffered_stream.cpp
@@ -16,15 +16,19 @@
 // Test that header file is self-contained.
 #include "asio/buffered_stream.hpp"
 
-#include <boost/bind.hpp>
 #include <cstring>
 #include "asio/buffer.hpp"
 #include "asio/io_service.hpp"
 #include "asio/ip/tcp.hpp"
-#include "asio/placeholders.hpp"
 #include "asio/system_error.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)
+
 typedef asio::buffered_stream<
     asio::ip::tcp::socket> stream_type;
 
@@ -67,9 +71,9 @@
         asio::buffer(read_buf + bytes_read));
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   bytes_written = 0;
   while (bytes_written < sizeof(write_data))
@@ -86,31 +90,31 @@
         asio::buffer(read_buf + bytes_read));
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   server_socket.close();
   asio::error_code error;
   bytes_read = client_socket.read_some(
       asio::buffer(read_buf), error);
 
-  BOOST_CHECK(bytes_read == 0);
-  BOOST_CHECK(error == asio::error::eof);
+  ASIO_CHECK(bytes_read == 0);
+  ASIO_CHECK(error == asio::error::eof);
 
   client_socket.close(error);
 }
 
 void handle_accept(const asio::error_code& e)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
 }
 
 void handle_write(const asio::error_code& e,
     std::size_t bytes_transferred,
     std::size_t* total_bytes_written)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
   if (e)
     throw asio::system_error(e); // Terminate test.
   *total_bytes_written += bytes_transferred;
@@ -118,14 +122,14 @@
 
 void handle_flush(const asio::error_code& e)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
 }
 
 void handle_read(const asio::error_code& e,
     std::size_t bytes_transferred,
     std::size_t* total_bytes_read)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
   if (e)
     throw asio::system_error(e); // Terminate test.
   *total_bytes_read += bytes_transferred;
@@ -134,14 +138,22 @@
 void handle_read_eof(const asio::error_code& e,
     std::size_t bytes_transferred)
 {
-  BOOST_CHECK(e == asio::error::eof);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(e == asio::error::eof);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 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)
+
   asio::io_service io_service;
 
   asio::ip::tcp::acceptor acceptor(io_service,
@@ -166,12 +178,11 @@
   {
     client_socket.async_write_some(
         asio::buffer(write_buf + bytes_written),
-        boost::bind(handle_write, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_written));
+        bindns::bind(handle_write, _1, _2, &bytes_written));
     io_service.run();
     io_service.reset();
     client_socket.async_flush(
-        boost::bind(handle_flush, asio::placeholders::error));
+        bindns::bind(handle_flush, _1));
     io_service.run();
     io_service.reset();
   }
@@ -184,27 +195,25 @@
   {
     server_socket.async_read_some(
         asio::buffer(read_buf + bytes_read),
-        boost::bind(handle_read, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_read));
+        bindns::bind(handle_read, _1, _2, &bytes_read));
     io_service.run();
     io_service.reset();
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   bytes_written = 0;
   while (bytes_written < sizeof(write_data))
   {
     server_socket.async_write_some(
         asio::buffer(write_buf + bytes_written),
-        boost::bind(handle_write, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_written));
+        bindns::bind(handle_write, _1, _2, &bytes_written));
     io_service.run();
     io_service.reset();
     server_socket.async_flush(
-        boost::bind(handle_flush, asio::placeholders::error));
+        bindns::bind(handle_flush, _1));
     io_service.run();
     io_service.reset();
   }
@@ -214,24 +223,22 @@
   {
     client_socket.async_read_some(
         asio::buffer(read_buf + bytes_read),
-        boost::bind(handle_read, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_read));
+        bindns::bind(handle_read, _1, _2, &bytes_read));
     io_service.run();
     io_service.reset();
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   server_socket.close();
   client_socket.async_read_some(asio::buffer(read_buf), handle_read_eof);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("buffered_stream");
-  test->add(BOOST_TEST_CASE(&test_sync_operations));
-  test->add(BOOST_TEST_CASE(&test_async_operations));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "buffered_stream",
+  ASIO_TEST_CASE(test_sync_operations)
+  ASIO_TEST_CASE(test_async_operations)
+)
diff --git a/asio/src/tests/unit/buffered_write_stream.cpp b/asio/src/tests/unit/buffered_write_stream.cpp
index 154b914..041b1c0 100644
--- a/asio/src/tests/unit/buffered_write_stream.cpp
+++ b/asio/src/tests/unit/buffered_write_stream.cpp
@@ -16,15 +16,19 @@
 // Test that header file is self-contained.
 #include "asio/buffered_write_stream.hpp"
 
-#include <boost/bind.hpp>
 #include <cstring>
 #include "asio/buffer.hpp"
 #include "asio/io_service.hpp"
 #include "asio/ip/tcp.hpp"
-#include "asio/placeholders.hpp"
 #include "asio/system_error.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)
+
 typedef asio::buffered_write_stream<
     asio::ip::tcp::socket> stream_type;
 
@@ -67,9 +71,9 @@
         asio::buffer(read_buf + bytes_read));
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   bytes_written = 0;
   while (bytes_written < sizeof(write_data))
@@ -86,31 +90,31 @@
         asio::buffer(read_buf + bytes_read));
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   server_socket.close();
   asio::error_code error;
   bytes_read = client_socket.read_some(
       asio::buffer(read_buf), error);
 
-  BOOST_CHECK(bytes_read == 0);
-  BOOST_CHECK(error == asio::error::eof);
+  ASIO_CHECK(bytes_read == 0);
+  ASIO_CHECK(error == asio::error::eof);
 
   client_socket.close(error);
 }
 
 void handle_accept(const asio::error_code& e)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
 }
 
 void handle_write(const asio::error_code& e,
     std::size_t bytes_transferred,
     std::size_t* total_bytes_written)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
   if (e)
     throw asio::system_error(e); // Terminate test.
   *total_bytes_written += bytes_transferred;
@@ -118,14 +122,14 @@
 
 void handle_flush(const asio::error_code& e)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
 }
 
 void handle_read(const asio::error_code& e,
     std::size_t bytes_transferred,
     std::size_t* total_bytes_read)
 {
-  BOOST_CHECK(!e);
+  ASIO_CHECK(!e);
   if (e)
     throw asio::system_error(e); // Terminate test.
   *total_bytes_read += bytes_transferred;
@@ -134,14 +138,22 @@
 void handle_read_eof(const asio::error_code& e,
     std::size_t bytes_transferred)
 {
-  BOOST_CHECK(e == asio::error::eof);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(e == asio::error::eof);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 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)
+
   asio::io_service io_service;
 
   asio::ip::tcp::acceptor acceptor(io_service,
@@ -166,12 +178,11 @@
   {
     client_socket.async_write_some(
         asio::buffer(write_buf + bytes_written),
-        boost::bind(handle_write, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_written));
+        bindns::bind(handle_write, _1, _2, &bytes_written));
     io_service.run();
     io_service.reset();
     client_socket.async_flush(
-        boost::bind(handle_flush, asio::placeholders::error));
+        bindns::bind(handle_flush, _1));
     io_service.run();
     io_service.reset();
   }
@@ -184,27 +195,25 @@
   {
     server_socket.async_read_some(
         asio::buffer(read_buf + bytes_read),
-        boost::bind(handle_read, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_read));
+        bindns::bind(handle_read, _1, _2, &bytes_read));
     io_service.run();
     io_service.reset();
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   bytes_written = 0;
   while (bytes_written < sizeof(write_data))
   {
     server_socket.async_write_some(
         asio::buffer(write_buf + bytes_written),
-        boost::bind(handle_write, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_written));
+        bindns::bind(handle_write, _1, _2, &bytes_written));
     io_service.run();
     io_service.reset();
     server_socket.async_flush(
-        boost::bind(handle_flush, asio::placeholders::error));
+        bindns::bind(handle_flush, _1));
     io_service.run();
     io_service.reset();
   }
@@ -214,24 +223,22 @@
   {
     client_socket.async_read_some(
         asio::buffer(read_buf + bytes_read),
-        boost::bind(handle_read, asio::placeholders::error,
-          asio::placeholders::bytes_transferred, &bytes_read));
+        bindns::bind(handle_read, _1, _2, &bytes_read));
     io_service.run();
     io_service.reset();
   }
 
-  BOOST_CHECK(bytes_written == sizeof(write_data));
-  BOOST_CHECK(bytes_read == sizeof(read_data));
-  BOOST_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(bytes_written == sizeof(write_data));
+  ASIO_CHECK(bytes_read == sizeof(read_data));
+  ASIO_CHECK(memcmp(write_data, read_data, sizeof(write_data)) == 0);
 
   server_socket.close();
   client_socket.async_read_some(asio::buffer(read_buf), handle_read_eof);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("buffered_write_stream");
-  test->add(BOOST_TEST_CASE(&test_sync_operations));
-  test->add(BOOST_TEST_CASE(&test_async_operations));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "buffered_write_stream",
+  ASIO_TEST_CASE(test_sync_operations)
+  ASIO_TEST_CASE(test_async_operations)
+)
diff --git a/asio/src/tests/unit/buffers_iterator.cpp b/asio/src/tests/unit/buffers_iterator.cpp
index 03aae40..5d729bf 100644
--- a/asio/src/tests/unit/buffers_iterator.cpp
+++ b/asio/src/tests/unit/buffers_iterator.cpp
@@ -16,10 +16,17 @@
 // Test that header file is self-contained.
 #include "asio/buffers_iterator.hpp"
 
-#include <boost/array.hpp>
 #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
@@ -29,7 +36,11 @@
 
 namespace buffers_iterator_compile {
 
+#if defined(ASIO_HAS_BOOST_ARRAY)
 using boost::array;
+#else // defined(ASIO_HAS_BOOST_ARRAY)
+using std::array;
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 using std::vector;
 using namespace asio;
 
@@ -274,9 +285,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("buffers_iterator");
-  test->add(BOOST_TEST_CASE(&buffers_iterator_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "buffers_iterator",
+  ASIO_TEST_CASE(buffers_iterator_compile::test)
+)
diff --git a/asio/src/tests/unit/completion_condition.cpp b/asio/src/tests/unit/completion_condition.cpp
index b18aa6d..a8027e8 100644
--- a/asio/src/tests/unit/completion_condition.cpp
+++ b/asio/src/tests/unit/completion_condition.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("completion_condition");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "completion_condition",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/connect.cpp b/asio/src/tests/unit/connect.cpp
index 786302d..545e6ce 100644
--- a/asio/src/tests/unit/connect.cpp
+++ b/asio/src/tests/unit/connect.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("connect");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "connect",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/datagram_socket_service.cpp b/asio/src/tests/unit/datagram_socket_service.cpp
index 09fcc3d..72ba913 100644
--- a/asio/src/tests/unit/datagram_socket_service.cpp
+++ b/asio/src/tests/unit/datagram_socket_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("datagram_socket_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "datagram_socket_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/deadline_timer.cpp b/asio/src/tests/unit/deadline_timer.cpp
index d9a7046..b89b7c2 100644
--- a/asio/src/tests/unit/deadline_timer.cpp
+++ b/asio/src/tests/unit/deadline_timer.cpp
@@ -16,11 +16,14 @@
 // Test that header file is self-contained.
 #include "asio/deadline_timer.hpp"
 
+#include "unit_test.hpp"
+
+#if defined(ASIO_HAS_BOOST_DATE_TIME)
+
 #include <boost/bind.hpp>
 #include "asio/io_service.hpp"
 #include "asio/placeholders.hpp"
 #include "asio/thread.hpp"
-#include "unit_test.hpp"
 
 using namespace boost::posix_time;
 
@@ -41,7 +44,7 @@
     t->async_wait(boost::bind(decrement_to_zero, t, count));
 
     // Completion cannot nest, so count value should remain unchanged.
-    BOOST_CHECK(*count == before_value);
+    ASIO_CHECK(*count == before_value);
   }
 }
 
@@ -55,13 +58,13 @@
 void cancel_timer(asio::deadline_timer* t)
 {
   std::size_t num_cancelled = t->cancel();
-  BOOST_CHECK(num_cancelled == 1);
+  ASIO_CHECK(num_cancelled == 1);
 }
 
 void cancel_one_timer(asio::deadline_timer* t)
 {
   std::size_t num_cancelled = t->cancel_one();
-  BOOST_CHECK(num_cancelled == 1);
+  ASIO_CHECK(num_cancelled == 1);
 }
 
 ptime now()
@@ -86,7 +89,7 @@
   // The timer must block until after its expiry time.
   ptime end = now();
   ptime expected_end = start + seconds(1);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 
   start = now();
 
@@ -96,7 +99,7 @@
   // The timer must block until after its expiry time.
   end = now();
   expected_end = start + seconds(1) + microseconds(500000);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 
   t2.expires_at(t2.expires_at() + seconds(1));
   t2.wait();
@@ -104,7 +107,7 @@
   // The timer must block until after its expiry time.
   end = now();
   expected_end += seconds(1);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 
   start = now();
 
@@ -114,7 +117,7 @@
   // The timer must block until after its expiry time.
   end = now();
   expected_end = start + seconds(1) + microseconds(200000);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 
   start = now();
 
@@ -122,16 +125,16 @@
   t3.async_wait(boost::bind(increment, &count));
 
   // No completions can be delivered until run() is called.
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
 
   ios.run();
 
   // The run() call will not return until all operations have finished, and
   // this should not be until after the timer's expiry time.
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(count == 1);
   end = now();
   expected_end = start + seconds(1);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 
   count = 3;
   start = now();
@@ -140,17 +143,17 @@
   t4.async_wait(boost::bind(decrement_to_zero, &t4, &count));
 
   // No completions can be delivered until run() is called.
-  BOOST_CHECK(count == 3);
+  ASIO_CHECK(count == 3);
 
   ios.reset();
   ios.run();
 
   // The run() call will not return until all operations have finished, and
   // this should not be until after the timer's final expiry time.
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
   end = now();
   expected_end = start + seconds(3);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 
   count = 0;
   start = now();
@@ -162,7 +165,7 @@
   t6.async_wait(boost::bind(cancel_timer, &t5));
 
   // No completions can be delivered until run() is called.
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
 
   ios.reset();
   ios.run();
@@ -170,10 +173,10 @@
   // The timer should have been cancelled, so count should not have changed.
   // The total run time should not have been much more than 1 second (and
   // certainly far less than 10 seconds).
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
   end = now();
   expected_end = start + seconds(2);
-  BOOST_CHECK(end < expected_end);
+  ASIO_CHECK(end < expected_end);
 
   // Wait on the timer again without cancelling it. This time the asynchronous
   // wait should run to completion and increment the counter.
@@ -185,10 +188,10 @@
 
   // The timer should not have been cancelled, so count should have changed.
   // The total time since the timer was created should be more than 10 seconds.
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(count == 1);
   end = now();
   expected_end = start + seconds(10);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 
   count = 0;
   start = now();
@@ -210,10 +213,10 @@
   // One of the waits should not have been cancelled, so count should have
   // changed. The total time since the timer was created should be more than 3
   // seconds.
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(count == 1);
   end = now();
   expected_end = start + seconds(3);
-  BOOST_CHECK(expected_end < end || expected_end == end);
+  ASIO_CHECK(expected_end < end || expected_end == end);
 }
 
 void timer_handler(const asio::error_code&)
@@ -234,10 +237,10 @@
   for (int i = 10; i < 20; ++i)
     timers[i].t.async_wait(&timer_handler);
 
-  BOOST_CHECK(timers[2].t.cancel() == 1);
-  BOOST_CHECK(timers[41].t.cancel() == 1);
+  ASIO_CHECK(timers[2].t.cancel() == 1);
+  ASIO_CHECK(timers[41].t.cancel() == 1);
   for (int i = 10; i < 20; ++i)
-    BOOST_CHECK(timers[i].t.cancel() == 1);
+    ASIO_CHECK(timers[i].t.cancel() == 1);
 }
 
 struct custom_allocation_timer_handler
@@ -289,7 +292,7 @@
 
   io_service.run();
 
-  BOOST_CHECK(allocation_count == 0);
+  ASIO_CHECK(allocation_count == 0);
 }
 
 void io_service_run(asio::io_service* ios)
@@ -319,15 +322,21 @@
   ios.stop();
   th.join();
 
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(count == 1);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("deadline_timer");
-  test->add(BOOST_TEST_CASE(&deadline_timer_test));
-  test->add(BOOST_TEST_CASE(&deadline_timer_cancel_test));
-  test->add(BOOST_TEST_CASE(&deadline_timer_custom_allocation_test));
-  test->add(BOOST_TEST_CASE(&deadline_timer_thread_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "deadline_timer",
+  ASIO_TEST_CASE(deadline_timer_test)
+  ASIO_TEST_CASE(deadline_timer_cancel_test)
+  ASIO_TEST_CASE(deadline_timer_custom_allocation_test)
+  ASIO_TEST_CASE(deadline_timer_thread_test)
+)
+#else // defined(ASIO_HAS_BOOST_DATE_TIME)
+ASIO_TEST_SUITE
+(
+  "deadline_timer",
+  ASIO_TEST_CASE(null_test)
+)
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
diff --git a/asio/src/tests/unit/deadline_timer_service.cpp b/asio/src/tests/unit/deadline_timer_service.cpp
index 8ecb016..2a3507c 100644
--- a/asio/src/tests/unit/deadline_timer_service.cpp
+++ b/asio/src/tests/unit/deadline_timer_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("deadline_timer_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "deadline_timer_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/error.cpp b/asio/src/tests/unit/error.cpp
index 2fd54f0..9618859 100644
--- a/asio/src/tests/unit/error.cpp
+++ b/asio/src/tests/unit/error.cpp
@@ -22,23 +22,23 @@
 void test_error_code(const asio::error_code& code)
 {
   asio::error_code error(code);
-  BOOST_CHECK(code == error);
+  ASIO_CHECK(code == error);
 
-  BOOST_CHECK(!code || error);
-  BOOST_CHECK(!code || !!error);
+  ASIO_CHECK(!code || error);
+  ASIO_CHECK(!code || !!error);
 
   asio::error_code error2(error);
-  BOOST_CHECK(error == error2);
-  BOOST_CHECK(!(error != error2));
+  ASIO_CHECK(error == error2);
+  ASIO_CHECK(!(error != error2));
 
   asio::error_code error3;
   error3 = error;
-  BOOST_CHECK(error == error3);
-  BOOST_CHECK(!(error != error3));
+  ASIO_CHECK(error == error3);
+  ASIO_CHECK(!(error != error3));
 
   std::ostringstream os;
   os << error;
-  BOOST_CHECK(!os.str().empty());
+  ASIO_CHECK(!os.str().empty());
 }
 
 void error_test()
@@ -82,9 +82,8 @@
   test_error_code(asio::error::would_block);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("error");
-  test->add(BOOST_TEST_CASE(&error_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "error",
+  ASIO_TEST_CASE(error_test)
+)
diff --git a/asio/src/tests/unit/high_resolution_timer.cpp b/asio/src/tests/unit/high_resolution_timer.cpp
index f753c1a..a839179 100644
--- a/asio/src/tests/unit/high_resolution_timer.cpp
+++ b/asio/src/tests/unit/high_resolution_timer.cpp
@@ -23,9 +23,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("high_resolution_timer");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "high_resolution_timer",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/io_service.cpp b/asio/src/tests/unit/io_service.cpp
index 5b68087..884e0c6 100644
--- a/asio/src/tests/unit/io_service.cpp
+++ b/asio/src/tests/unit/io_service.cpp
@@ -17,13 +17,40 @@
 #include "asio/io_service.hpp"
 
 #include <sstream>
-#include <boost/bind.hpp>
-#include "asio/deadline_timer.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)
+
+#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_STD_CHRONO)
+typedef steady_timer timer;
+namespace chronons = std::chrono;
+#elif defined(ASIO_HAS_BOOST_CHRONO)
+typedef steady_timer timer;
+namespace chronons = boost::chrono;
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
 void increment(int* count)
 {
   ++(*count);
@@ -36,10 +63,10 @@
     --(*count);
 
     int before_value = *count;
-    ios->post(boost::bind(decrement_to_zero, ios, count));
+    ios->post(bindns::bind(decrement_to_zero, ios, count));
 
     // Handler execution cannot nest, so count value should remain unchanged.
-    BOOST_CHECK(*count == before_value);
+    ASIO_CHECK(*count == before_value);
   }
 }
 
@@ -49,30 +76,30 @@
   {
     --(*count);
 
-    ios->dispatch(boost::bind(nested_decrement_to_zero, ios, count));
+    ios->dispatch(bindns::bind(nested_decrement_to_zero, ios, count));
 
     // Handler execution is nested, so count value should now be zero.
-    BOOST_CHECK(*count == 0);
+    ASIO_CHECK(*count == 0);
   }
 }
 
 void sleep_increment(io_service* ios, int* count)
 {
-  deadline_timer t(*ios, boost::posix_time::seconds(2));
+  timer t(*ios, chronons::seconds(2));
   t.wait();
 
   if (++(*count) < 3)
-    ios->post(boost::bind(sleep_increment, ios, count));
+    ios->post(bindns::bind(sleep_increment, ios, count));
 }
 
 void start_sleep_increments(io_service* ios, int* count)
 {
   // Give all threads a chance to start.
-  deadline_timer t(*ios, boost::posix_time::seconds(2));
+  timer t(*ios, chronons::seconds(2));
   t.wait();
 
   // Start the first of three increments.
-  ios->post(boost::bind(sleep_increment, ios, count));
+  ios->post(bindns::bind(sleep_increment, ios, count));
 }
 
 void throw_exception()
@@ -90,150 +117,150 @@
   io_service ios;
   int count = 0;
 
-  ios.post(boost::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(!ios.stopped());
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(!ios.stopped());
+  ASIO_CHECK(count == 0);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 1);
 
   count = 0;
   ios.reset();
-  ios.post(boost::bind(increment, &count));
-  ios.post(boost::bind(increment, &count));
-  ios.post(boost::bind(increment, &count));
-  ios.post(boost::bind(increment, &count));
-  ios.post(boost::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(!ios.stopped());
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(!ios.stopped());
+  ASIO_CHECK(count == 0);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 5);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 5);
 
   count = 0;
   ios.reset();
   io_service::work* w = new io_service::work(ios);
-  ios.post(boost::bind(&io_service::stop, &ios));
-  BOOST_CHECK(!ios.stopped());
+  ios.post(bindns::bind(&io_service::stop, &ios));
+  ASIO_CHECK(!ios.stopped());
   ios.run();
 
   // The only operation executed should have been to stop run().
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 0);
 
   ios.reset();
-  ios.post(boost::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
   delete w;
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(!ios.stopped());
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(!ios.stopped());
+  ASIO_CHECK(count == 0);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 1);
 
   count = 10;
   ios.reset();
-  ios.post(boost::bind(decrement_to_zero, &ios, &count));
+  ios.post(bindns::bind(decrement_to_zero, &ios, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(!ios.stopped());
-  BOOST_CHECK(count == 10);
+  ASIO_CHECK(!ios.stopped());
+  ASIO_CHECK(count == 10);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 0);
 
   count = 10;
   ios.reset();
-  ios.post(boost::bind(nested_decrement_to_zero, &ios, &count));
+  ios.post(bindns::bind(nested_decrement_to_zero, &ios, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(!ios.stopped());
-  BOOST_CHECK(count == 10);
+  ASIO_CHECK(!ios.stopped());
+  ASIO_CHECK(count == 10);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 0);
 
   count = 10;
   ios.reset();
-  ios.dispatch(boost::bind(nested_decrement_to_zero, &ios, &count));
+  ios.dispatch(bindns::bind(nested_decrement_to_zero, &ios, &count));
 
   // No handlers can be called until run() is called, even though nested
   // delivery was specifically allowed in the previous call.
-  BOOST_CHECK(!ios.stopped());
-  BOOST_CHECK(count == 10);
+  ASIO_CHECK(!ios.stopped());
+  ASIO_CHECK(count == 10);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 0);
 
   count = 0;
   int count2 = 0;
   ios.reset();
-  BOOST_CHECK(!ios.stopped());
-  ios.post(boost::bind(start_sleep_increments, &ios, &count));
-  ios.post(boost::bind(start_sleep_increments, &ios, &count2));
-  thread thread1(boost::bind(io_service_run, &ios));
-  thread thread2(boost::bind(io_service_run, &ios));
+  ASIO_CHECK(!ios.stopped());
+  ios.post(bindns::bind(start_sleep_increments, &ios, &count));
+  ios.post(bindns::bind(start_sleep_increments, &ios, &count2));
+  thread thread1(bindns::bind(io_service_run, &ios));
+  thread thread2(bindns::bind(io_service_run, &ios));
   thread1.join();
   thread2.join();
 
   // The run() calls will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 3);
-  BOOST_CHECK(count2 == 3);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 3);
+  ASIO_CHECK(count2 == 3);
 
   count = 10;
   io_service ios2;
-  ios.dispatch(ios2.wrap(boost::bind(decrement_to_zero, &ios2, &count)));
+  ios.dispatch(ios2.wrap(bindns::bind(decrement_to_zero, &ios2, &count)));
   ios.reset();
-  BOOST_CHECK(!ios.stopped());
+  ASIO_CHECK(!ios.stopped());
   ios.run();
 
   // No decrement_to_zero handlers can be called until run() is called on the
   // second io_service object.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 10);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 10);
 
   ios2.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
 
   count = 0;
   int exception_count = 0;
   ios.reset();
   ios.post(&throw_exception);
-  ios.post(boost::bind(increment, &count));
-  ios.post(boost::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
   ios.post(&throw_exception);
-  ios.post(boost::bind(increment, &count));
+  ios.post(bindns::bind(increment, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(!ios.stopped());
-  BOOST_CHECK(count == 0);
-  BOOST_CHECK(exception_count == 0);
+  ASIO_CHECK(!ios.stopped());
+  ASIO_CHECK(count == 0);
+  ASIO_CHECK(exception_count == 0);
 
   for (;;)
   {
@@ -249,9 +276,9 @@
   }
 
   // The run() calls will not return until all work has finished.
-  BOOST_CHECK(ios.stopped());
-  BOOST_CHECK(count == 3);
-  BOOST_CHECK(exception_count == 2);
+  ASIO_CHECK(ios.stopped());
+  ASIO_CHECK(count == 3);
+  ASIO_CHECK(exception_count == 2);
 }
 
 class test_service : public asio::io_service::service
@@ -276,13 +303,13 @@
 
   asio::use_service<test_service>(ios1);
 
-  BOOST_CHECK(asio::has_service<test_service>(ios1));
+  ASIO_CHECK(asio::has_service<test_service>(ios1));
 
   test_service* svc1 = new test_service(ios1);
   try
   {
     asio::add_service(ios1, svc1);
-    BOOST_ERROR("add_service did not throw");
+    ASIO_ERROR("add_service did not throw");
   }
   catch (asio::service_already_exists&)
   {
@@ -294,14 +321,14 @@
   test_service* svc2 = new test_service(ios2);
   asio::add_service(ios2, svc2);
 
-  BOOST_CHECK(asio::has_service<test_service>(ios2));
-  BOOST_CHECK(&asio::use_service<test_service>(ios2) == svc2);
+  ASIO_CHECK(asio::has_service<test_service>(ios2));
+  ASIO_CHECK(&asio::use_service<test_service>(ios2) == svc2);
 
   test_service* svc3 = new test_service(ios2);
   try
   {
     asio::add_service(ios2, svc3);
-    BOOST_ERROR("add_service did not throw");
+    ASIO_ERROR("add_service did not throw");
   }
   catch (asio::service_already_exists&)
   {
@@ -314,20 +341,19 @@
   try
   {
     asio::add_service(ios3, svc4);
-    BOOST_ERROR("add_service did not throw");
+    ASIO_ERROR("add_service did not throw");
   }
   catch (asio::invalid_service_owner&)
   {
   }
   delete svc4;
 
-  BOOST_CHECK(!asio::has_service<test_service>(ios3));
+  ASIO_CHECK(!asio::has_service<test_service>(ios3));
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("io_service");
-  test->add(BOOST_TEST_CASE(&io_service_test));
-  test->add(BOOST_TEST_CASE(&io_service_service_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "io_service",
+  ASIO_TEST_CASE(io_service_test)
+  ASIO_TEST_CASE(io_service_service_test)
+)
diff --git a/asio/src/tests/unit/ip/address.cpp b/asio/src/tests/unit/ip/address.cpp
index b59a383..64ccd61 100644
--- a/asio/src/tests/unit/ip/address.cpp
+++ b/asio/src/tests/unit/ip/address.cpp
@@ -17,6 +17,7 @@
 #include "asio/ip/address.hpp"
 
 #include "../unit_test.hpp"
+#include <sstream>
 
 //------------------------------------------------------------------------------
 
@@ -116,9 +117,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/address");
-  test->add(BOOST_TEST_CASE(&ip_address_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/address",
+  ASIO_TEST_CASE(ip_address_compile::test)
+)
diff --git a/asio/src/tests/unit/ip/address_v4.cpp b/asio/src/tests/unit/ip/address_v4.cpp
index c63c14d..bcdee81 100644
--- a/asio/src/tests/unit/ip/address_v4.cpp
+++ b/asio/src/tests/unit/ip/address_v4.cpp
@@ -142,128 +142,127 @@
   using asio::ip::address_v4;
 
   address_v4 a1;
-  BOOST_CHECK(a1.to_bytes()[0] == 0);
-  BOOST_CHECK(a1.to_bytes()[1] == 0);
-  BOOST_CHECK(a1.to_bytes()[2] == 0);
-  BOOST_CHECK(a1.to_bytes()[3] == 0);
-  BOOST_CHECK(a1.to_ulong() == 0);
+  ASIO_CHECK(a1.to_bytes()[0] == 0);
+  ASIO_CHECK(a1.to_bytes()[1] == 0);
+  ASIO_CHECK(a1.to_bytes()[2] == 0);
+  ASIO_CHECK(a1.to_bytes()[3] == 0);
+  ASIO_CHECK(a1.to_ulong() == 0);
 
   address_v4::bytes_type b1 = {{ 1, 2, 3, 4 }};
   address_v4 a2(b1);
-  BOOST_CHECK(a2.to_bytes()[0] == 1);
-  BOOST_CHECK(a2.to_bytes()[1] == 2);
-  BOOST_CHECK(a2.to_bytes()[2] == 3);
-  BOOST_CHECK(a2.to_bytes()[3] == 4);
-  BOOST_CHECK(((a2.to_ulong() >> 24) & 0xFF) == b1[0]);
-  BOOST_CHECK(((a2.to_ulong() >> 16) & 0xFF) == b1[1]);
-  BOOST_CHECK(((a2.to_ulong() >> 8) & 0xFF) == b1[2]);
-  BOOST_CHECK((a2.to_ulong() & 0xFF) == b1[3]);
+  ASIO_CHECK(a2.to_bytes()[0] == 1);
+  ASIO_CHECK(a2.to_bytes()[1] == 2);
+  ASIO_CHECK(a2.to_bytes()[2] == 3);
+  ASIO_CHECK(a2.to_bytes()[3] == 4);
+  ASIO_CHECK(((a2.to_ulong() >> 24) & 0xFF) == b1[0]);
+  ASIO_CHECK(((a2.to_ulong() >> 16) & 0xFF) == b1[1]);
+  ASIO_CHECK(((a2.to_ulong() >> 8) & 0xFF) == b1[2]);
+  ASIO_CHECK((a2.to_ulong() & 0xFF) == b1[3]);
 
   address_v4 a3(0x01020304);
-  BOOST_CHECK(a3.to_bytes()[0] == 1);
-  BOOST_CHECK(a3.to_bytes()[1] == 2);
-  BOOST_CHECK(a3.to_bytes()[2] == 3);
-  BOOST_CHECK(a3.to_bytes()[3] == 4);
-  BOOST_CHECK(a3.to_ulong() == 0x01020304);
+  ASIO_CHECK(a3.to_bytes()[0] == 1);
+  ASIO_CHECK(a3.to_bytes()[1] == 2);
+  ASIO_CHECK(a3.to_bytes()[2] == 3);
+  ASIO_CHECK(a3.to_bytes()[3] == 4);
+  ASIO_CHECK(a3.to_ulong() == 0x01020304);
 
-  BOOST_CHECK(address_v4(0x7F000001).is_loopback());
-  BOOST_CHECK(address_v4(0x7F000002).is_loopback());
-  BOOST_CHECK(!address_v4(0x00000000).is_loopback());
-  BOOST_CHECK(!address_v4(0x01020304).is_loopback());
+  ASIO_CHECK(address_v4(0x7F000001).is_loopback());
+  ASIO_CHECK(address_v4(0x7F000002).is_loopback());
+  ASIO_CHECK(!address_v4(0x00000000).is_loopback());
+  ASIO_CHECK(!address_v4(0x01020304).is_loopback());
 
-  BOOST_CHECK(address_v4(0x00000000).is_unspecified());
-  BOOST_CHECK(!address_v4(0x7F000001).is_unspecified());
-  BOOST_CHECK(!address_v4(0x01020304).is_unspecified());
+  ASIO_CHECK(address_v4(0x00000000).is_unspecified());
+  ASIO_CHECK(!address_v4(0x7F000001).is_unspecified());
+  ASIO_CHECK(!address_v4(0x01020304).is_unspecified());
 
-  BOOST_CHECK(address_v4(0x01000000).is_class_a());
-  BOOST_CHECK(address_v4(0x7F000000).is_class_a());
-  BOOST_CHECK(!address_v4(0x80000000).is_class_a());
-  BOOST_CHECK(!address_v4(0xBFFF0000).is_class_a());
-  BOOST_CHECK(!address_v4(0xC0000000).is_class_a());
-  BOOST_CHECK(!address_v4(0xDFFFFF00).is_class_a());
-  BOOST_CHECK(!address_v4(0xE0000000).is_class_a());
-  BOOST_CHECK(!address_v4(0xEFFFFFFF).is_class_a());
-  BOOST_CHECK(!address_v4(0xF0000000).is_class_a());
-  BOOST_CHECK(!address_v4(0xFFFFFFFF).is_class_a());
+  ASIO_CHECK(address_v4(0x01000000).is_class_a());
+  ASIO_CHECK(address_v4(0x7F000000).is_class_a());
+  ASIO_CHECK(!address_v4(0x80000000).is_class_a());
+  ASIO_CHECK(!address_v4(0xBFFF0000).is_class_a());
+  ASIO_CHECK(!address_v4(0xC0000000).is_class_a());
+  ASIO_CHECK(!address_v4(0xDFFFFF00).is_class_a());
+  ASIO_CHECK(!address_v4(0xE0000000).is_class_a());
+  ASIO_CHECK(!address_v4(0xEFFFFFFF).is_class_a());
+  ASIO_CHECK(!address_v4(0xF0000000).is_class_a());
+  ASIO_CHECK(!address_v4(0xFFFFFFFF).is_class_a());
 
-  BOOST_CHECK(!address_v4(0x01000000).is_class_b());
-  BOOST_CHECK(!address_v4(0x7F000000).is_class_b());
-  BOOST_CHECK(address_v4(0x80000000).is_class_b());
-  BOOST_CHECK(address_v4(0xBFFF0000).is_class_b());
-  BOOST_CHECK(!address_v4(0xC0000000).is_class_b());
-  BOOST_CHECK(!address_v4(0xDFFFFF00).is_class_b());
-  BOOST_CHECK(!address_v4(0xE0000000).is_class_b());
-  BOOST_CHECK(!address_v4(0xEFFFFFFF).is_class_b());
-  BOOST_CHECK(!address_v4(0xF0000000).is_class_b());
-  BOOST_CHECK(!address_v4(0xFFFFFFFF).is_class_b());
+  ASIO_CHECK(!address_v4(0x01000000).is_class_b());
+  ASIO_CHECK(!address_v4(0x7F000000).is_class_b());
+  ASIO_CHECK(address_v4(0x80000000).is_class_b());
+  ASIO_CHECK(address_v4(0xBFFF0000).is_class_b());
+  ASIO_CHECK(!address_v4(0xC0000000).is_class_b());
+  ASIO_CHECK(!address_v4(0xDFFFFF00).is_class_b());
+  ASIO_CHECK(!address_v4(0xE0000000).is_class_b());
+  ASIO_CHECK(!address_v4(0xEFFFFFFF).is_class_b());
+  ASIO_CHECK(!address_v4(0xF0000000).is_class_b());
+  ASIO_CHECK(!address_v4(0xFFFFFFFF).is_class_b());
 
-  BOOST_CHECK(!address_v4(0x01000000).is_class_c());
-  BOOST_CHECK(!address_v4(0x7F000000).is_class_c());
-  BOOST_CHECK(!address_v4(0x80000000).is_class_c());
-  BOOST_CHECK(!address_v4(0xBFFF0000).is_class_c());
-  BOOST_CHECK(address_v4(0xC0000000).is_class_c());
-  BOOST_CHECK(address_v4(0xDFFFFF00).is_class_c());
-  BOOST_CHECK(!address_v4(0xE0000000).is_class_c());
-  BOOST_CHECK(!address_v4(0xEFFFFFFF).is_class_c());
-  BOOST_CHECK(!address_v4(0xF0000000).is_class_c());
-  BOOST_CHECK(!address_v4(0xFFFFFFFF).is_class_c());
+  ASIO_CHECK(!address_v4(0x01000000).is_class_c());
+  ASIO_CHECK(!address_v4(0x7F000000).is_class_c());
+  ASIO_CHECK(!address_v4(0x80000000).is_class_c());
+  ASIO_CHECK(!address_v4(0xBFFF0000).is_class_c());
+  ASIO_CHECK(address_v4(0xC0000000).is_class_c());
+  ASIO_CHECK(address_v4(0xDFFFFF00).is_class_c());
+  ASIO_CHECK(!address_v4(0xE0000000).is_class_c());
+  ASIO_CHECK(!address_v4(0xEFFFFFFF).is_class_c());
+  ASIO_CHECK(!address_v4(0xF0000000).is_class_c());
+  ASIO_CHECK(!address_v4(0xFFFFFFFF).is_class_c());
 
-  BOOST_CHECK(!address_v4(0x01000000).is_multicast());
-  BOOST_CHECK(!address_v4(0x7F000000).is_multicast());
-  BOOST_CHECK(!address_v4(0x80000000).is_multicast());
-  BOOST_CHECK(!address_v4(0xBFFF0000).is_multicast());
-  BOOST_CHECK(!address_v4(0xC0000000).is_multicast());
-  BOOST_CHECK(!address_v4(0xDFFFFF00).is_multicast());
-  BOOST_CHECK(address_v4(0xE0000000).is_multicast());
-  BOOST_CHECK(address_v4(0xEFFFFFFF).is_multicast());
-  BOOST_CHECK(!address_v4(0xF0000000).is_multicast());
-  BOOST_CHECK(!address_v4(0xFFFFFFFF).is_multicast());
+  ASIO_CHECK(!address_v4(0x01000000).is_multicast());
+  ASIO_CHECK(!address_v4(0x7F000000).is_multicast());
+  ASIO_CHECK(!address_v4(0x80000000).is_multicast());
+  ASIO_CHECK(!address_v4(0xBFFF0000).is_multicast());
+  ASIO_CHECK(!address_v4(0xC0000000).is_multicast());
+  ASIO_CHECK(!address_v4(0xDFFFFF00).is_multicast());
+  ASIO_CHECK(address_v4(0xE0000000).is_multicast());
+  ASIO_CHECK(address_v4(0xEFFFFFFF).is_multicast());
+  ASIO_CHECK(!address_v4(0xF0000000).is_multicast());
+  ASIO_CHECK(!address_v4(0xFFFFFFFF).is_multicast());
 
   address_v4 a4 = address_v4::any();
-  BOOST_CHECK(a4.to_bytes()[0] == 0);
-  BOOST_CHECK(a4.to_bytes()[1] == 0);
-  BOOST_CHECK(a4.to_bytes()[2] == 0);
-  BOOST_CHECK(a4.to_bytes()[3] == 0);
-  BOOST_CHECK(a4.to_ulong() == 0);
+  ASIO_CHECK(a4.to_bytes()[0] == 0);
+  ASIO_CHECK(a4.to_bytes()[1] == 0);
+  ASIO_CHECK(a4.to_bytes()[2] == 0);
+  ASIO_CHECK(a4.to_bytes()[3] == 0);
+  ASIO_CHECK(a4.to_ulong() == 0);
 
   address_v4 a5 = address_v4::loopback();
-  BOOST_CHECK(a5.to_bytes()[0] == 0x7F);
-  BOOST_CHECK(a5.to_bytes()[1] == 0);
-  BOOST_CHECK(a5.to_bytes()[2] == 0);
-  BOOST_CHECK(a5.to_bytes()[3] == 0x01);
-  BOOST_CHECK(a5.to_ulong() == 0x7F000001);
+  ASIO_CHECK(a5.to_bytes()[0] == 0x7F);
+  ASIO_CHECK(a5.to_bytes()[1] == 0);
+  ASIO_CHECK(a5.to_bytes()[2] == 0);
+  ASIO_CHECK(a5.to_bytes()[3] == 0x01);
+  ASIO_CHECK(a5.to_ulong() == 0x7F000001);
 
   address_v4 a6 = address_v4::broadcast();
-  BOOST_CHECK(a6.to_bytes()[0] == 0xFF);
-  BOOST_CHECK(a6.to_bytes()[1] == 0xFF);
-  BOOST_CHECK(a6.to_bytes()[2] == 0xFF);
-  BOOST_CHECK(a6.to_bytes()[3] == 0xFF);
-  BOOST_CHECK(a6.to_ulong() == 0xFFFFFFFF);
+  ASIO_CHECK(a6.to_bytes()[0] == 0xFF);
+  ASIO_CHECK(a6.to_bytes()[1] == 0xFF);
+  ASIO_CHECK(a6.to_bytes()[2] == 0xFF);
+  ASIO_CHECK(a6.to_bytes()[3] == 0xFF);
+  ASIO_CHECK(a6.to_ulong() == 0xFFFFFFFF);
 
   address_v4 class_a_net(0xFF000000);
   address_v4 class_b_net(0xFFFF0000);
   address_v4 class_c_net(0xFFFFFF00);
   address_v4 other_net(0xFFFFFFFF);
-  BOOST_CHECK(address_v4::netmask(address_v4(0x01000000)) == class_a_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0x7F000000)) == class_a_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0x80000000)) == class_b_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0xBFFF0000)) == class_b_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0xC0000000)) == class_c_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0xDFFFFF00)) == class_c_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0xE0000000)) == other_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0xEFFFFFFF)) == other_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0xF0000000)) == other_net);
-  BOOST_CHECK(address_v4::netmask(address_v4(0xFFFFFFFF)) == other_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0x01000000)) == class_a_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0x7F000000)) == class_a_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0x80000000)) == class_b_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0xBFFF0000)) == class_b_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0xC0000000)) == class_c_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0xDFFFFF00)) == class_c_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0xE0000000)) == other_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0xEFFFFFFF)) == other_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0xF0000000)) == other_net);
+  ASIO_CHECK(address_v4::netmask(address_v4(0xFFFFFFFF)) == other_net);
 }
 
 } // namespace ip_address_v4_runtime
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/address_v4");
-  test->add(BOOST_TEST_CASE(&ip_address_v4_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_address_v4_runtime::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/address_v4",
+  ASIO_TEST_CASE(ip_address_v4_compile::test)
+  ASIO_TEST_CASE(ip_address_v4_runtime::test)
+)
diff --git a/asio/src/tests/unit/ip/address_v6.cpp b/asio/src/tests/unit/ip/address_v6.cpp
index 206d136..269a7ed 100644
--- a/asio/src/tests/unit/ip/address_v6.cpp
+++ b/asio/src/tests/unit/ip/address_v6.cpp
@@ -17,6 +17,7 @@
 #include "asio/ip/address_v6.hpp"
 
 #include "../unit_test.hpp"
+#include <sstream>
 
 //------------------------------------------------------------------------------
 
@@ -157,33 +158,33 @@
   using asio::ip::address_v6;
 
   address_v6 a1;
-  BOOST_CHECK(a1.is_unspecified());
-  BOOST_CHECK(a1.scope_id() == 0);
+  ASIO_CHECK(a1.is_unspecified());
+  ASIO_CHECK(a1.scope_id() == 0);
 
   address_v6::bytes_type b1 = {{ 1, 2, 3, 4, 5,
     6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }};
   address_v6 a2(b1, 12345);
-  BOOST_CHECK(a2.to_bytes()[0] == 1);
-  BOOST_CHECK(a2.to_bytes()[1] == 2);
-  BOOST_CHECK(a2.to_bytes()[2] == 3);
-  BOOST_CHECK(a2.to_bytes()[3] == 4);
-  BOOST_CHECK(a2.to_bytes()[4] == 5);
-  BOOST_CHECK(a2.to_bytes()[5] == 6);
-  BOOST_CHECK(a2.to_bytes()[6] == 7);
-  BOOST_CHECK(a2.to_bytes()[7] == 8);
-  BOOST_CHECK(a2.to_bytes()[8] == 9);
-  BOOST_CHECK(a2.to_bytes()[9] == 10);
-  BOOST_CHECK(a2.to_bytes()[10] == 11);
-  BOOST_CHECK(a2.to_bytes()[11] == 12);
-  BOOST_CHECK(a2.to_bytes()[12] == 13);
-  BOOST_CHECK(a2.to_bytes()[13] == 14);
-  BOOST_CHECK(a2.to_bytes()[14] == 15);
-  BOOST_CHECK(a2.to_bytes()[15] == 16);
-  BOOST_CHECK(a2.scope_id() == 12345);
+  ASIO_CHECK(a2.to_bytes()[0] == 1);
+  ASIO_CHECK(a2.to_bytes()[1] == 2);
+  ASIO_CHECK(a2.to_bytes()[2] == 3);
+  ASIO_CHECK(a2.to_bytes()[3] == 4);
+  ASIO_CHECK(a2.to_bytes()[4] == 5);
+  ASIO_CHECK(a2.to_bytes()[5] == 6);
+  ASIO_CHECK(a2.to_bytes()[6] == 7);
+  ASIO_CHECK(a2.to_bytes()[7] == 8);
+  ASIO_CHECK(a2.to_bytes()[8] == 9);
+  ASIO_CHECK(a2.to_bytes()[9] == 10);
+  ASIO_CHECK(a2.to_bytes()[10] == 11);
+  ASIO_CHECK(a2.to_bytes()[11] == 12);
+  ASIO_CHECK(a2.to_bytes()[12] == 13);
+  ASIO_CHECK(a2.to_bytes()[13] == 14);
+  ASIO_CHECK(a2.to_bytes()[14] == 15);
+  ASIO_CHECK(a2.to_bytes()[15] == 16);
+  ASIO_CHECK(a2.scope_id() == 12345);
 
   address_v6 a3;
   a3.scope_id(12345);
-  BOOST_CHECK(a3.scope_id() == 12345);
+  ASIO_CHECK(a3.scope_id() == 12345);
 
   address_v6 unspecified_address;
   address_v6::bytes_type loopback_bytes = {{ 0 }};
@@ -213,161 +214,160 @@
   address_v6::bytes_type mcast_site_local_bytes = {{ 0xFF, 0x05, 1 }};
   address_v6 mcast_site_local_address(mcast_site_local_bytes);
 
-  BOOST_CHECK(!unspecified_address.is_loopback());
-  BOOST_CHECK(loopback_address.is_loopback());
-  BOOST_CHECK(!link_local_address.is_loopback());
-  BOOST_CHECK(!site_local_address.is_loopback());
-  BOOST_CHECK(!v4_mapped_address.is_loopback());
-  BOOST_CHECK(!v4_compat_address.is_loopback());
-  BOOST_CHECK(!mcast_global_address.is_loopback());
-  BOOST_CHECK(!mcast_link_local_address.is_loopback());
-  BOOST_CHECK(!mcast_node_local_address.is_loopback());
-  BOOST_CHECK(!mcast_org_local_address.is_loopback());
-  BOOST_CHECK(!mcast_site_local_address.is_loopback());
+  ASIO_CHECK(!unspecified_address.is_loopback());
+  ASIO_CHECK(loopback_address.is_loopback());
+  ASIO_CHECK(!link_local_address.is_loopback());
+  ASIO_CHECK(!site_local_address.is_loopback());
+  ASIO_CHECK(!v4_mapped_address.is_loopback());
+  ASIO_CHECK(!v4_compat_address.is_loopback());
+  ASIO_CHECK(!mcast_global_address.is_loopback());
+  ASIO_CHECK(!mcast_link_local_address.is_loopback());
+  ASIO_CHECK(!mcast_node_local_address.is_loopback());
+  ASIO_CHECK(!mcast_org_local_address.is_loopback());
+  ASIO_CHECK(!mcast_site_local_address.is_loopback());
 
-  BOOST_CHECK(unspecified_address.is_unspecified());
-  BOOST_CHECK(!loopback_address.is_unspecified());
-  BOOST_CHECK(!link_local_address.is_unspecified());
-  BOOST_CHECK(!site_local_address.is_unspecified());
-  BOOST_CHECK(!v4_mapped_address.is_unspecified());
-  BOOST_CHECK(!v4_compat_address.is_unspecified());
-  BOOST_CHECK(!mcast_global_address.is_unspecified());
-  BOOST_CHECK(!mcast_link_local_address.is_unspecified());
-  BOOST_CHECK(!mcast_node_local_address.is_unspecified());
-  BOOST_CHECK(!mcast_org_local_address.is_unspecified());
-  BOOST_CHECK(!mcast_site_local_address.is_unspecified());
+  ASIO_CHECK(unspecified_address.is_unspecified());
+  ASIO_CHECK(!loopback_address.is_unspecified());
+  ASIO_CHECK(!link_local_address.is_unspecified());
+  ASIO_CHECK(!site_local_address.is_unspecified());
+  ASIO_CHECK(!v4_mapped_address.is_unspecified());
+  ASIO_CHECK(!v4_compat_address.is_unspecified());
+  ASIO_CHECK(!mcast_global_address.is_unspecified());
+  ASIO_CHECK(!mcast_link_local_address.is_unspecified());
+  ASIO_CHECK(!mcast_node_local_address.is_unspecified());
+  ASIO_CHECK(!mcast_org_local_address.is_unspecified());
+  ASIO_CHECK(!mcast_site_local_address.is_unspecified());
 
-  BOOST_CHECK(!unspecified_address.is_link_local());
-  BOOST_CHECK(!loopback_address.is_link_local());
-  BOOST_CHECK(link_local_address.is_link_local());
-  BOOST_CHECK(!site_local_address.is_link_local());
-  BOOST_CHECK(!v4_mapped_address.is_link_local());
-  BOOST_CHECK(!v4_compat_address.is_link_local());
-  BOOST_CHECK(!mcast_global_address.is_link_local());
-  BOOST_CHECK(!mcast_link_local_address.is_link_local());
-  BOOST_CHECK(!mcast_node_local_address.is_link_local());
-  BOOST_CHECK(!mcast_org_local_address.is_link_local());
-  BOOST_CHECK(!mcast_site_local_address.is_link_local());
+  ASIO_CHECK(!unspecified_address.is_link_local());
+  ASIO_CHECK(!loopback_address.is_link_local());
+  ASIO_CHECK(link_local_address.is_link_local());
+  ASIO_CHECK(!site_local_address.is_link_local());
+  ASIO_CHECK(!v4_mapped_address.is_link_local());
+  ASIO_CHECK(!v4_compat_address.is_link_local());
+  ASIO_CHECK(!mcast_global_address.is_link_local());
+  ASIO_CHECK(!mcast_link_local_address.is_link_local());
+  ASIO_CHECK(!mcast_node_local_address.is_link_local());
+  ASIO_CHECK(!mcast_org_local_address.is_link_local());
+  ASIO_CHECK(!mcast_site_local_address.is_link_local());
 
-  BOOST_CHECK(!unspecified_address.is_site_local());
-  BOOST_CHECK(!loopback_address.is_site_local());
-  BOOST_CHECK(!link_local_address.is_site_local());
-  BOOST_CHECK(site_local_address.is_site_local());
-  BOOST_CHECK(!v4_mapped_address.is_site_local());
-  BOOST_CHECK(!v4_compat_address.is_site_local());
-  BOOST_CHECK(!mcast_global_address.is_site_local());
-  BOOST_CHECK(!mcast_link_local_address.is_site_local());
-  BOOST_CHECK(!mcast_node_local_address.is_site_local());
-  BOOST_CHECK(!mcast_org_local_address.is_site_local());
-  BOOST_CHECK(!mcast_site_local_address.is_site_local());
+  ASIO_CHECK(!unspecified_address.is_site_local());
+  ASIO_CHECK(!loopback_address.is_site_local());
+  ASIO_CHECK(!link_local_address.is_site_local());
+  ASIO_CHECK(site_local_address.is_site_local());
+  ASIO_CHECK(!v4_mapped_address.is_site_local());
+  ASIO_CHECK(!v4_compat_address.is_site_local());
+  ASIO_CHECK(!mcast_global_address.is_site_local());
+  ASIO_CHECK(!mcast_link_local_address.is_site_local());
+  ASIO_CHECK(!mcast_node_local_address.is_site_local());
+  ASIO_CHECK(!mcast_org_local_address.is_site_local());
+  ASIO_CHECK(!mcast_site_local_address.is_site_local());
 
-  BOOST_CHECK(!unspecified_address.is_v4_mapped());
-  BOOST_CHECK(!loopback_address.is_v4_mapped());
-  BOOST_CHECK(!link_local_address.is_v4_mapped());
-  BOOST_CHECK(!site_local_address.is_v4_mapped());
-  BOOST_CHECK(v4_mapped_address.is_v4_mapped());
-  BOOST_CHECK(!v4_compat_address.is_v4_mapped());
-  BOOST_CHECK(!mcast_global_address.is_v4_mapped());
-  BOOST_CHECK(!mcast_link_local_address.is_v4_mapped());
-  BOOST_CHECK(!mcast_node_local_address.is_v4_mapped());
-  BOOST_CHECK(!mcast_org_local_address.is_v4_mapped());
-  BOOST_CHECK(!mcast_site_local_address.is_v4_mapped());
+  ASIO_CHECK(!unspecified_address.is_v4_mapped());
+  ASIO_CHECK(!loopback_address.is_v4_mapped());
+  ASIO_CHECK(!link_local_address.is_v4_mapped());
+  ASIO_CHECK(!site_local_address.is_v4_mapped());
+  ASIO_CHECK(v4_mapped_address.is_v4_mapped());
+  ASIO_CHECK(!v4_compat_address.is_v4_mapped());
+  ASIO_CHECK(!mcast_global_address.is_v4_mapped());
+  ASIO_CHECK(!mcast_link_local_address.is_v4_mapped());
+  ASIO_CHECK(!mcast_node_local_address.is_v4_mapped());
+  ASIO_CHECK(!mcast_org_local_address.is_v4_mapped());
+  ASIO_CHECK(!mcast_site_local_address.is_v4_mapped());
 
-  BOOST_CHECK(!unspecified_address.is_v4_compatible());
-  BOOST_CHECK(!loopback_address.is_v4_compatible());
-  BOOST_CHECK(!link_local_address.is_v4_compatible());
-  BOOST_CHECK(!site_local_address.is_v4_compatible());
-  BOOST_CHECK(!v4_mapped_address.is_v4_compatible());
-  BOOST_CHECK(v4_compat_address.is_v4_compatible());
-  BOOST_CHECK(!mcast_global_address.is_v4_compatible());
-  BOOST_CHECK(!mcast_link_local_address.is_v4_compatible());
-  BOOST_CHECK(!mcast_node_local_address.is_v4_compatible());
-  BOOST_CHECK(!mcast_org_local_address.is_v4_compatible());
-  BOOST_CHECK(!mcast_site_local_address.is_v4_compatible());
+  ASIO_CHECK(!unspecified_address.is_v4_compatible());
+  ASIO_CHECK(!loopback_address.is_v4_compatible());
+  ASIO_CHECK(!link_local_address.is_v4_compatible());
+  ASIO_CHECK(!site_local_address.is_v4_compatible());
+  ASIO_CHECK(!v4_mapped_address.is_v4_compatible());
+  ASIO_CHECK(v4_compat_address.is_v4_compatible());
+  ASIO_CHECK(!mcast_global_address.is_v4_compatible());
+  ASIO_CHECK(!mcast_link_local_address.is_v4_compatible());
+  ASIO_CHECK(!mcast_node_local_address.is_v4_compatible());
+  ASIO_CHECK(!mcast_org_local_address.is_v4_compatible());
+  ASIO_CHECK(!mcast_site_local_address.is_v4_compatible());
 
-  BOOST_CHECK(!unspecified_address.is_multicast());
-  BOOST_CHECK(!loopback_address.is_multicast());
-  BOOST_CHECK(!link_local_address.is_multicast());
-  BOOST_CHECK(!site_local_address.is_multicast());
-  BOOST_CHECK(!v4_mapped_address.is_multicast());
-  BOOST_CHECK(!v4_compat_address.is_multicast());
-  BOOST_CHECK(mcast_global_address.is_multicast());
-  BOOST_CHECK(mcast_link_local_address.is_multicast());
-  BOOST_CHECK(mcast_node_local_address.is_multicast());
-  BOOST_CHECK(mcast_org_local_address.is_multicast());
-  BOOST_CHECK(mcast_site_local_address.is_multicast());
+  ASIO_CHECK(!unspecified_address.is_multicast());
+  ASIO_CHECK(!loopback_address.is_multicast());
+  ASIO_CHECK(!link_local_address.is_multicast());
+  ASIO_CHECK(!site_local_address.is_multicast());
+  ASIO_CHECK(!v4_mapped_address.is_multicast());
+  ASIO_CHECK(!v4_compat_address.is_multicast());
+  ASIO_CHECK(mcast_global_address.is_multicast());
+  ASIO_CHECK(mcast_link_local_address.is_multicast());
+  ASIO_CHECK(mcast_node_local_address.is_multicast());
+  ASIO_CHECK(mcast_org_local_address.is_multicast());
+  ASIO_CHECK(mcast_site_local_address.is_multicast());
 
-  BOOST_CHECK(!unspecified_address.is_multicast_global());
-  BOOST_CHECK(!loopback_address.is_multicast_global());
-  BOOST_CHECK(!link_local_address.is_multicast_global());
-  BOOST_CHECK(!site_local_address.is_multicast_global());
-  BOOST_CHECK(!v4_mapped_address.is_multicast_global());
-  BOOST_CHECK(!v4_compat_address.is_multicast_global());
-  BOOST_CHECK(mcast_global_address.is_multicast_global());
-  BOOST_CHECK(!mcast_link_local_address.is_multicast_global());
-  BOOST_CHECK(!mcast_node_local_address.is_multicast_global());
-  BOOST_CHECK(!mcast_org_local_address.is_multicast_global());
-  BOOST_CHECK(!mcast_site_local_address.is_multicast_global());
+  ASIO_CHECK(!unspecified_address.is_multicast_global());
+  ASIO_CHECK(!loopback_address.is_multicast_global());
+  ASIO_CHECK(!link_local_address.is_multicast_global());
+  ASIO_CHECK(!site_local_address.is_multicast_global());
+  ASIO_CHECK(!v4_mapped_address.is_multicast_global());
+  ASIO_CHECK(!v4_compat_address.is_multicast_global());
+  ASIO_CHECK(mcast_global_address.is_multicast_global());
+  ASIO_CHECK(!mcast_link_local_address.is_multicast_global());
+  ASIO_CHECK(!mcast_node_local_address.is_multicast_global());
+  ASIO_CHECK(!mcast_org_local_address.is_multicast_global());
+  ASIO_CHECK(!mcast_site_local_address.is_multicast_global());
 
-  BOOST_CHECK(!unspecified_address.is_multicast_link_local());
-  BOOST_CHECK(!loopback_address.is_multicast_link_local());
-  BOOST_CHECK(!link_local_address.is_multicast_link_local());
-  BOOST_CHECK(!site_local_address.is_multicast_link_local());
-  BOOST_CHECK(!v4_mapped_address.is_multicast_link_local());
-  BOOST_CHECK(!v4_compat_address.is_multicast_link_local());
-  BOOST_CHECK(!mcast_global_address.is_multicast_link_local());
-  BOOST_CHECK(mcast_link_local_address.is_multicast_link_local());
-  BOOST_CHECK(!mcast_node_local_address.is_multicast_link_local());
-  BOOST_CHECK(!mcast_org_local_address.is_multicast_link_local());
-  BOOST_CHECK(!mcast_site_local_address.is_multicast_link_local());
+  ASIO_CHECK(!unspecified_address.is_multicast_link_local());
+  ASIO_CHECK(!loopback_address.is_multicast_link_local());
+  ASIO_CHECK(!link_local_address.is_multicast_link_local());
+  ASIO_CHECK(!site_local_address.is_multicast_link_local());
+  ASIO_CHECK(!v4_mapped_address.is_multicast_link_local());
+  ASIO_CHECK(!v4_compat_address.is_multicast_link_local());
+  ASIO_CHECK(!mcast_global_address.is_multicast_link_local());
+  ASIO_CHECK(mcast_link_local_address.is_multicast_link_local());
+  ASIO_CHECK(!mcast_node_local_address.is_multicast_link_local());
+  ASIO_CHECK(!mcast_org_local_address.is_multicast_link_local());
+  ASIO_CHECK(!mcast_site_local_address.is_multicast_link_local());
 
-  BOOST_CHECK(!unspecified_address.is_multicast_node_local());
-  BOOST_CHECK(!loopback_address.is_multicast_node_local());
-  BOOST_CHECK(!link_local_address.is_multicast_node_local());
-  BOOST_CHECK(!site_local_address.is_multicast_node_local());
-  BOOST_CHECK(!v4_mapped_address.is_multicast_node_local());
-  BOOST_CHECK(!v4_compat_address.is_multicast_node_local());
-  BOOST_CHECK(!mcast_global_address.is_multicast_node_local());
-  BOOST_CHECK(!mcast_link_local_address.is_multicast_node_local());
-  BOOST_CHECK(mcast_node_local_address.is_multicast_node_local());
-  BOOST_CHECK(!mcast_org_local_address.is_multicast_node_local());
-  BOOST_CHECK(!mcast_site_local_address.is_multicast_node_local());
+  ASIO_CHECK(!unspecified_address.is_multicast_node_local());
+  ASIO_CHECK(!loopback_address.is_multicast_node_local());
+  ASIO_CHECK(!link_local_address.is_multicast_node_local());
+  ASIO_CHECK(!site_local_address.is_multicast_node_local());
+  ASIO_CHECK(!v4_mapped_address.is_multicast_node_local());
+  ASIO_CHECK(!v4_compat_address.is_multicast_node_local());
+  ASIO_CHECK(!mcast_global_address.is_multicast_node_local());
+  ASIO_CHECK(!mcast_link_local_address.is_multicast_node_local());
+  ASIO_CHECK(mcast_node_local_address.is_multicast_node_local());
+  ASIO_CHECK(!mcast_org_local_address.is_multicast_node_local());
+  ASIO_CHECK(!mcast_site_local_address.is_multicast_node_local());
 
-  BOOST_CHECK(!unspecified_address.is_multicast_org_local());
-  BOOST_CHECK(!loopback_address.is_multicast_org_local());
-  BOOST_CHECK(!link_local_address.is_multicast_org_local());
-  BOOST_CHECK(!site_local_address.is_multicast_org_local());
-  BOOST_CHECK(!v4_mapped_address.is_multicast_org_local());
-  BOOST_CHECK(!v4_compat_address.is_multicast_org_local());
-  BOOST_CHECK(!mcast_global_address.is_multicast_org_local());
-  BOOST_CHECK(!mcast_link_local_address.is_multicast_org_local());
-  BOOST_CHECK(!mcast_node_local_address.is_multicast_org_local());
-  BOOST_CHECK(mcast_org_local_address.is_multicast_org_local());
-  BOOST_CHECK(!mcast_site_local_address.is_multicast_org_local());
+  ASIO_CHECK(!unspecified_address.is_multicast_org_local());
+  ASIO_CHECK(!loopback_address.is_multicast_org_local());
+  ASIO_CHECK(!link_local_address.is_multicast_org_local());
+  ASIO_CHECK(!site_local_address.is_multicast_org_local());
+  ASIO_CHECK(!v4_mapped_address.is_multicast_org_local());
+  ASIO_CHECK(!v4_compat_address.is_multicast_org_local());
+  ASIO_CHECK(!mcast_global_address.is_multicast_org_local());
+  ASIO_CHECK(!mcast_link_local_address.is_multicast_org_local());
+  ASIO_CHECK(!mcast_node_local_address.is_multicast_org_local());
+  ASIO_CHECK(mcast_org_local_address.is_multicast_org_local());
+  ASIO_CHECK(!mcast_site_local_address.is_multicast_org_local());
 
-  BOOST_CHECK(!unspecified_address.is_multicast_site_local());
-  BOOST_CHECK(!loopback_address.is_multicast_site_local());
-  BOOST_CHECK(!link_local_address.is_multicast_site_local());
-  BOOST_CHECK(!site_local_address.is_multicast_site_local());
-  BOOST_CHECK(!v4_mapped_address.is_multicast_site_local());
-  BOOST_CHECK(!v4_compat_address.is_multicast_site_local());
-  BOOST_CHECK(!mcast_global_address.is_multicast_site_local());
-  BOOST_CHECK(!mcast_link_local_address.is_multicast_site_local());
-  BOOST_CHECK(!mcast_node_local_address.is_multicast_site_local());
-  BOOST_CHECK(!mcast_org_local_address.is_multicast_site_local());
-  BOOST_CHECK(mcast_site_local_address.is_multicast_site_local());
+  ASIO_CHECK(!unspecified_address.is_multicast_site_local());
+  ASIO_CHECK(!loopback_address.is_multicast_site_local());
+  ASIO_CHECK(!link_local_address.is_multicast_site_local());
+  ASIO_CHECK(!site_local_address.is_multicast_site_local());
+  ASIO_CHECK(!v4_mapped_address.is_multicast_site_local());
+  ASIO_CHECK(!v4_compat_address.is_multicast_site_local());
+  ASIO_CHECK(!mcast_global_address.is_multicast_site_local());
+  ASIO_CHECK(!mcast_link_local_address.is_multicast_site_local());
+  ASIO_CHECK(!mcast_node_local_address.is_multicast_site_local());
+  ASIO_CHECK(!mcast_org_local_address.is_multicast_site_local());
+  ASIO_CHECK(mcast_site_local_address.is_multicast_site_local());
 
-  BOOST_CHECK(address_v6::loopback().is_loopback());
+  ASIO_CHECK(address_v6::loopback().is_loopback());
 }
 
 } // namespace ip_address_v6_runtime
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/address_v6");
-  test->add(BOOST_TEST_CASE(&ip_address_v6_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_address_v6_runtime::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/address_v6",
+  ASIO_TEST_CASE(ip_address_v6_compile::test)
+  ASIO_TEST_CASE(ip_address_v6_runtime::test)
+)
diff --git a/asio/src/tests/unit/ip/basic_endpoint.cpp b/asio/src/tests/unit/ip/basic_endpoint.cpp
index 575173d..0a3492b 100644
--- a/asio/src/tests/unit/ip/basic_endpoint.cpp
+++ b/asio/src/tests/unit/ip/basic_endpoint.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/basic_endpoint");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/basic_endpoint",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ip/basic_resolver.cpp b/asio/src/tests/unit/ip/basic_resolver.cpp
index 74d019a..d7ba7ef 100644
--- a/asio/src/tests/unit/ip/basic_resolver.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/basic_resolver");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/basic_resolver",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ip/basic_resolver_entry.cpp b/asio/src/tests/unit/ip/basic_resolver_entry.cpp
index 9331af8..a8d57d0 100644
--- a/asio/src/tests/unit/ip/basic_resolver_entry.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver_entry.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/basic_resolver_entry");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/basic_resolver_entry",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ip/basic_resolver_iterator.cpp b/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
index a5220d6..d72075f 100644
--- a/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver_iterator.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/basic_resolver_iterator");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/basic_resolver_iterator",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ip/basic_resolver_query.cpp b/asio/src/tests/unit/ip/basic_resolver_query.cpp
index 5b77b46..ea1708b 100644
--- a/asio/src/tests/unit/ip/basic_resolver_query.cpp
+++ b/asio/src/tests/unit/ip/basic_resolver_query.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/basic_resolver_query");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/basic_resolver_query",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ip/host_name.cpp b/asio/src/tests/unit/ip/host_name.cpp
index ef8b5f1..05574c1 100644
--- a/asio/src/tests/unit/ip/host_name.cpp
+++ b/asio/src/tests/unit/ip/host_name.cpp
@@ -48,9 +48,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/host_name");
-  test->add(BOOST_TEST_CASE(&ip_host_name_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/host_name",
+  ASIO_TEST_CASE(ip_host_name_compile::test)
+)
diff --git a/asio/src/tests/unit/ip/multicast.cpp b/asio/src/tests/unit/ip/multicast.cpp
index 3b250ce..e5facc9 100644
--- a/asio/src/tests/unit/ip/multicast.cpp
+++ b/asio/src/tests/unit/ip/multicast.cpp
@@ -131,7 +131,7 @@
   sock_v6.bind(ep_v6, ec);
   bool have_v6 = !ec;
 
-  BOOST_CHECK(have_v4 || have_v6);
+  ASIO_CHECK(have_v4 || have_v6);
 
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Windows CE seems to have problems with some multicast group addresses.
@@ -143,11 +143,11 @@
   const ip::address multicast_address_v4 =
     ip::address::from_string("239.255.0.1", ec);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK(!have_v4 || !ec);
+  ASIO_CHECK(!have_v4 || !ec);
 
   const ip::address multicast_address_v6 =
     ip::address::from_string("ff01::1", ec);
-  BOOST_CHECK(!have_v6 || !ec);
+  ASIO_CHECK(!have_v6 || !ec);
 
   // join_group class.
 
@@ -155,14 +155,14 @@
   {
     ip::multicast::join_group join_group(multicast_address_v4);
     sock_v4.set_option(join_group, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
   }
 
   if (have_v6)
   {
     ip::multicast::join_group join_group(multicast_address_v6);
     sock_v6.set_option(join_group, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
   }
 
   // leave_group class.
@@ -171,14 +171,14 @@
   {
     ip::multicast::leave_group leave_group(multicast_address_v4);
     sock_v4.set_option(leave_group, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
   }
 
   if (have_v6)
   {
     ip::multicast::leave_group leave_group(multicast_address_v6);
     sock_v6.set_option(leave_group, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
   }
 
   // outbound_interface class.
@@ -188,7 +188,7 @@
     ip::multicast::outbound_interface outbound_interface(
         ip::address_v4::loopback());
     sock_v4.set_option(outbound_interface, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
   }
 
   if (have_v6)
@@ -199,7 +199,7 @@
     ip::multicast::outbound_interface outbound_interface(1);
 #endif
     sock_v6.set_option(outbound_interface, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
   }
 
   // hops class.
@@ -207,47 +207,47 @@
   if (have_v4)
   {
     ip::multicast::hops hops1(1);
-    BOOST_CHECK(hops1.value() == 1);
+    ASIO_CHECK(hops1.value() == 1);
     sock_v4.set_option(hops1, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
     ip::multicast::hops hops2;
     sock_v4.get_option(hops2, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(hops2.value() == 1);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(hops2.value() == 1);
 
     ip::multicast::hops hops3(0);
-    BOOST_CHECK(hops3.value() == 0);
+    ASIO_CHECK(hops3.value() == 0);
     sock_v4.set_option(hops3, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
     ip::multicast::hops hops4;
     sock_v4.get_option(hops4, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(hops4.value() == 0);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(hops4.value() == 0);
   }
 
   if (have_v6)
   {
     ip::multicast::hops hops1(1);
-    BOOST_CHECK(hops1.value() == 1);
+    ASIO_CHECK(hops1.value() == 1);
     sock_v6.set_option(hops1, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
     ip::multicast::hops hops2;
     sock_v6.get_option(hops2, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(hops2.value() == 1);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(hops2.value() == 1);
 
     ip::multicast::hops hops3(0);
-    BOOST_CHECK(hops3.value() == 0);
+    ASIO_CHECK(hops3.value() == 0);
     sock_v6.set_option(hops3, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
     ip::multicast::hops hops4;
     sock_v6.get_option(hops4, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(hops4.value() == 0);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(hops4.value() == 0);
   }
 
   // enable_loopback class.
@@ -255,85 +255,85 @@
   if (have_v4)
   {
     ip::multicast::enable_loopback enable_loopback1(true);
-    BOOST_CHECK(enable_loopback1.value());
-    BOOST_CHECK(static_cast<bool>(enable_loopback1));
-    BOOST_CHECK(!!enable_loopback1);
+    ASIO_CHECK(enable_loopback1.value());
+    ASIO_CHECK(static_cast<bool>(enable_loopback1));
+    ASIO_CHECK(!!enable_loopback1);
     sock_v4.set_option(enable_loopback1, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Option is not supported under Windows CE.
-    BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+    ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
         ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
     ip::multicast::enable_loopback enable_loopback2;
     sock_v4.get_option(enable_loopback2, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Not supported under Windows CE but can get value.
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(enable_loopback2.value());
-    BOOST_CHECK(static_cast<bool>(enable_loopback2));
-    BOOST_CHECK(!!enable_loopback2);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(enable_loopback2.value());
+    ASIO_CHECK(static_cast<bool>(enable_loopback2));
+    ASIO_CHECK(!!enable_loopback2);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
     ip::multicast::enable_loopback enable_loopback3(false);
-    BOOST_CHECK(!enable_loopback3.value());
-    BOOST_CHECK(!static_cast<bool>(enable_loopback3));
-    BOOST_CHECK(!enable_loopback3);
+    ASIO_CHECK(!enable_loopback3.value());
+    ASIO_CHECK(!static_cast<bool>(enable_loopback3));
+    ASIO_CHECK(!enable_loopback3);
     sock_v4.set_option(enable_loopback3, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Option is not supported under Windows CE.
-    BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+    ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
         ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
     ip::multicast::enable_loopback enable_loopback4;
     sock_v4.get_option(enable_loopback4, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Not supported under Windows CE but can get value.
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(!enable_loopback4.value());
-    BOOST_CHECK(!static_cast<bool>(enable_loopback4));
-    BOOST_CHECK(!enable_loopback4);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(!enable_loopback4.value());
+    ASIO_CHECK(!static_cast<bool>(enable_loopback4));
+    ASIO_CHECK(!enable_loopback4);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
   }
 
   if (have_v6)
   {
     ip::multicast::enable_loopback enable_loopback1(true);
-    BOOST_CHECK(enable_loopback1.value());
-    BOOST_CHECK(static_cast<bool>(enable_loopback1));
-    BOOST_CHECK(!!enable_loopback1);
+    ASIO_CHECK(enable_loopback1.value());
+    ASIO_CHECK(static_cast<bool>(enable_loopback1));
+    ASIO_CHECK(!!enable_loopback1);
     sock_v6.set_option(enable_loopback1, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
     ip::multicast::enable_loopback enable_loopback2;
     sock_v6.get_option(enable_loopback2, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(enable_loopback2.value());
-    BOOST_CHECK(static_cast<bool>(enable_loopback2));
-    BOOST_CHECK(!!enable_loopback2);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(enable_loopback2.value());
+    ASIO_CHECK(static_cast<bool>(enable_loopback2));
+    ASIO_CHECK(!!enable_loopback2);
 
     ip::multicast::enable_loopback enable_loopback3(false);
-    BOOST_CHECK(!enable_loopback3.value());
-    BOOST_CHECK(!static_cast<bool>(enable_loopback3));
-    BOOST_CHECK(!enable_loopback3);
+    ASIO_CHECK(!enable_loopback3.value());
+    ASIO_CHECK(!static_cast<bool>(enable_loopback3));
+    ASIO_CHECK(!enable_loopback3);
     sock_v6.set_option(enable_loopback3, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
     ip::multicast::enable_loopback enable_loopback4;
     sock_v6.get_option(enable_loopback4, ec);
-    BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-    BOOST_CHECK(!enable_loopback4.value());
-    BOOST_CHECK(!static_cast<bool>(enable_loopback4));
-    BOOST_CHECK(!enable_loopback4);
+    ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+    ASIO_CHECK(!enable_loopback4.value());
+    ASIO_CHECK(!static_cast<bool>(enable_loopback4));
+    ASIO_CHECK(!enable_loopback4);
   }
 }
 
@@ -341,10 +341,9 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/multicast");
-  test->add(BOOST_TEST_CASE(&ip_multicast_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_multicast_runtime::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/multicast",
+  ASIO_TEST_CASE(ip_multicast_compile::test)
+  ASIO_TEST_CASE(ip_multicast_runtime::test)
+)
diff --git a/asio/src/tests/unit/ip/resolver_query_base.cpp b/asio/src/tests/unit/ip/resolver_query_base.cpp
index 3abd07b..78a546b 100644
--- a/asio/src/tests/unit/ip/resolver_query_base.cpp
+++ b/asio/src/tests/unit/ip/resolver_query_base.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/resolver_query_base");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/resolver_query_base",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ip/resolver_service.cpp b/asio/src/tests/unit/ip/resolver_service.cpp
index 5425d17..1714f2a 100644
--- a/asio/src/tests/unit/ip/resolver_service.cpp
+++ b/asio/src/tests/unit/ip/resolver_service.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/resolver_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/resolver_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ip/tcp.cpp b/asio/src/tests/unit/ip/tcp.cpp
index ec21ff2..5dddac3 100644
--- a/asio/src/tests/unit/ip/tcp.cpp
+++ b/asio/src/tests/unit/ip/tcp.cpp
@@ -19,11 +19,8 @@
 // Test that header file is self-contained.
 #include "asio/ip/tcp.hpp"
 
-#include <boost/array.hpp>
-#include <boost/bind.hpp>
 #include <cstring>
 #include "asio/io_service.hpp"
-#include "asio/placeholders.hpp"
 #include "asio/read.hpp"
 #include "asio/write.hpp"
 #include "../unit_test.hpp"
@@ -31,6 +28,18 @@
 #include "../archetypes/io_control_command.hpp"
 #include "../archetypes/settable_socket_option.hpp"
 
+#if defined(ASIO_HAS_BOOST_ARRAY)
+# include <boost/array.hpp>
+#else // defined(ASIO_HAS_BOOST_ARRAY)
+# 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
@@ -88,32 +97,32 @@
   // no_delay class.
 
   ip::tcp::no_delay no_delay1(true);
-  BOOST_CHECK(no_delay1.value());
-  BOOST_CHECK(static_cast<bool>(no_delay1));
-  BOOST_CHECK(!!no_delay1);
+  ASIO_CHECK(no_delay1.value());
+  ASIO_CHECK(static_cast<bool>(no_delay1));
+  ASIO_CHECK(!!no_delay1);
   sock.set_option(no_delay1, ec);
-  BOOST_CHECK(!ec);
+  ASIO_CHECK(!ec);
 
   ip::tcp::no_delay no_delay2;
   sock.get_option(no_delay2, ec);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(no_delay2.value());
-  BOOST_CHECK(static_cast<bool>(no_delay2));
-  BOOST_CHECK(!!no_delay2);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(no_delay2.value());
+  ASIO_CHECK(static_cast<bool>(no_delay2));
+  ASIO_CHECK(!!no_delay2);
 
   ip::tcp::no_delay no_delay3(false);
-  BOOST_CHECK(!no_delay3.value());
-  BOOST_CHECK(!static_cast<bool>(no_delay3));
-  BOOST_CHECK(!no_delay3);
+  ASIO_CHECK(!no_delay3.value());
+  ASIO_CHECK(!static_cast<bool>(no_delay3));
+  ASIO_CHECK(!no_delay3);
   sock.set_option(no_delay3, ec);
-  BOOST_CHECK(!ec);
+  ASIO_CHECK(!ec);
 
   ip::tcp::no_delay no_delay4;
   sock.get_option(no_delay4, ec);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(!no_delay4.value());
-  BOOST_CHECK(!static_cast<bool>(no_delay4));
-  BOOST_CHECK(!no_delay4);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(!no_delay4.value());
+  ASIO_CHECK(!static_cast<bool>(no_delay4));
+  ASIO_CHECK(!no_delay4);
 }
 
 } // namespace ip_tcp_runtime
@@ -149,6 +158,12 @@
 
 void test()
 {
+#if defined(ASIO_HAS_BOOST_ARRAY)
+  using boost::array;
+#else // defined(ASIO_HAS_BOOST_ARRAY)
+  using std::array;
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
+
   using namespace asio;
   namespace ip = asio::ip;
 
@@ -157,10 +172,10 @@
     io_service ios;
     char mutable_char_buffer[128] = "";
     const char const_char_buffer[128] = "";
-    boost::array<asio::mutable_buffer, 2> mutable_buffers = {{
+    array<asio::mutable_buffer, 2> mutable_buffers = {{
         asio::buffer(mutable_char_buffer, 10),
         asio::buffer(mutable_char_buffer + 10, 10) }};
-    boost::array<asio::const_buffer, 2> const_buffers = {{
+    array<asio::const_buffer, 2> const_buffers = {{
         asio::buffer(const_char_buffer, 10),
         asio::buffer(const_char_buffer + 10, 10) }};
     socket_base::message_flags in_flags = 0;
@@ -393,48 +408,48 @@
     size_t bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(!err);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(!err);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 void handle_write_noop(const asio::error_code& err,
     size_t bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(!err);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(!err);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 void handle_read(const asio::error_code& err,
     size_t bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(!err);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
+  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;
-  BOOST_CHECK(!err);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(!err);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
 }
 
 void handle_read_cancel(const asio::error_code& err,
     size_t bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(err == asio::error::operation_aborted);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(err == asio::error::operation_aborted);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 void handle_read_eof(const asio::error_code& err,
     size_t bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(err == asio::error::eof);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(err == asio::error::eof);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 void test()
@@ -443,6 +458,14 @@
   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)
+
   io_service ios;
 
   ip::tcp::acceptor acceptor(ios, ip::tcp::endpoint(ip::tcp::v4(), 0));
@@ -460,27 +483,23 @@
   bool read_noop_completed = false;
   client_side_socket.async_read_some(
       asio::mutable_buffers_1(0, 0),
-      boost::bind(handle_read_noop,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        &read_noop_completed));
+      bindns::bind(handle_read_noop,
+        _1, _2, &read_noop_completed));
 
   ios.run();
-  BOOST_CHECK(read_noop_completed);
+  ASIO_CHECK(read_noop_completed);
 
   // No-op write.
 
   bool write_noop_completed = false;
   client_side_socket.async_write_some(
       asio::const_buffers_1(0, 0),
-      boost::bind(handle_write_noop,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        &write_noop_completed));
+      bindns::bind(handle_write_noop,
+        _1, _2, &write_noop_completed));
 
   ios.reset();
   ios.run();
-  BOOST_CHECK(write_noop_completed);
+  ASIO_CHECK(write_noop_completed);
 
   // Read and write to transfer data.
 
@@ -488,60 +507,52 @@
   bool read_completed = false;
   asio::async_read(client_side_socket,
       asio::buffer(read_buffer),
-      boost::bind(handle_read,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        &read_completed));
+      bindns::bind(handle_read,
+        _1, _2, &read_completed));
 
   bool write_completed = false;
   asio::async_write(server_side_socket,
       asio::buffer(write_data),
-      boost::bind(handle_write,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        &write_completed));
+      bindns::bind(handle_write,
+        _1, _2, &write_completed));
 
   ios.reset();
   ios.run();
-  BOOST_CHECK(read_completed);
-  BOOST_CHECK(write_completed);
-  BOOST_CHECK(memcmp(read_buffer, write_data, sizeof(write_data)) == 0);
+  ASIO_CHECK(read_completed);
+  ASIO_CHECK(write_completed);
+  ASIO_CHECK(memcmp(read_buffer, write_data, sizeof(write_data)) == 0);
 
   // Cancelled read.
 
   bool read_cancel_completed = false;
   asio::async_read(server_side_socket,
       asio::buffer(read_buffer),
-      boost::bind(handle_read_cancel,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        &read_cancel_completed));
+      bindns::bind(handle_read_cancel,
+        _1, _2, &read_cancel_completed));
 
   ios.reset();
   ios.poll();
-  BOOST_CHECK(!read_cancel_completed);
+  ASIO_CHECK(!read_cancel_completed);
 
   server_side_socket.cancel();
 
   ios.reset();
   ios.run();
-  BOOST_CHECK(read_cancel_completed);
+  ASIO_CHECK(read_cancel_completed);
 
   // A read when the peer closes socket should fail with eof.
 
   bool read_eof_completed = false;
   asio::async_read(client_side_socket,
       asio::buffer(read_buffer),
-      boost::bind(handle_read_eof,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        &read_eof_completed));
+      bindns::bind(handle_read_eof,
+        _1, _2, &read_eof_completed));
 
   server_side_socket.close();
 
   ios.reset();
   ios.run();
-  BOOST_CHECK(read_eof_completed);
+  ASIO_CHECK(read_eof_completed);
 }
 
 } // namespace ip_tcp_socket_runtime
@@ -693,12 +704,12 @@
 
 void handle_accept(const asio::error_code& err)
 {
-  BOOST_CHECK(!err);
+  ASIO_CHECK(!err);
 }
 
 void handle_connect(const asio::error_code& err)
 {
-  BOOST_CHECK(!err);
+  ASIO_CHECK(!err);
 }
 
 void test()
@@ -730,11 +741,11 @@
 
   ip::tcp::endpoint client_side_local_endpoint
     = client_side_socket.local_endpoint();
-  BOOST_CHECK(client_side_local_endpoint.port() == client_endpoint.port());
+  ASIO_CHECK(client_side_local_endpoint.port() == client_endpoint.port());
 
   ip::tcp::endpoint server_side_remote_endpoint
     = server_side_socket.remote_endpoint();
-  BOOST_CHECK(server_side_remote_endpoint.port() == client_endpoint.port());
+  ASIO_CHECK(server_side_remote_endpoint.port() == client_endpoint.port());
 
   client_side_socket.close();
   server_side_socket.close();
@@ -754,10 +765,10 @@
   ios.run();
 
   client_side_local_endpoint = client_side_socket.local_endpoint();
-  BOOST_CHECK(client_side_local_endpoint.port() == client_endpoint.port());
+  ASIO_CHECK(client_side_local_endpoint.port() == client_endpoint.port());
 
   server_side_remote_endpoint = server_side_socket.remote_endpoint();
-  BOOST_CHECK(server_side_remote_endpoint.port() == client_endpoint.port());
+  ASIO_CHECK(server_side_remote_endpoint.port() == client_endpoint.port());
 }
 
 } // namespace ip_tcp_acceptor_runtime
@@ -826,15 +837,14 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/tcp");
-  test->add(BOOST_TEST_CASE(&ip_tcp_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_tcp_runtime::test));
-  test->add(BOOST_TEST_CASE(&ip_tcp_socket_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_tcp_socket_runtime::test));
-  test->add(BOOST_TEST_CASE(&ip_tcp_acceptor_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_tcp_acceptor_runtime::test));
-  test->add(BOOST_TEST_CASE(&ip_tcp_resolver_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/tcp",
+  ASIO_TEST_CASE(ip_tcp_compile::test)
+  ASIO_TEST_CASE(ip_tcp_runtime::test)
+  ASIO_TEST_CASE(ip_tcp_socket_compile::test)
+  ASIO_TEST_CASE(ip_tcp_socket_runtime::test)
+  ASIO_TEST_CASE(ip_tcp_acceptor_compile::test)
+  ASIO_TEST_CASE(ip_tcp_acceptor_runtime::test)
+  ASIO_TEST_CASE(ip_tcp_resolver_compile::test)
+)
diff --git a/asio/src/tests/unit/ip/udp.cpp b/asio/src/tests/unit/ip/udp.cpp
index f7cfcf8..70c14bd 100644
--- a/asio/src/tests/unit/ip/udp.cpp
+++ b/asio/src/tests/unit/ip/udp.cpp
@@ -16,15 +16,19 @@
 // Test that header file is self-contained.
 #include "asio/ip/udp.hpp"
 
-#include <boost/bind.hpp>
 #include <cstring>
 #include "asio/io_service.hpp"
-#include "asio/placeholders.hpp"
 #include "../unit_test.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
@@ -318,15 +322,15 @@
 void handle_send(size_t expected_bytes_sent,
     const asio::error_code& err, size_t bytes_sent)
 {
-  BOOST_CHECK(!err);
-  BOOST_CHECK(expected_bytes_sent == bytes_sent);
+  ASIO_CHECK(!err);
+  ASIO_CHECK(expected_bytes_sent == bytes_sent);
 }
 
 void handle_recv(size_t expected_bytes_recvd,
     const asio::error_code& err, size_t bytes_recvd)
 {
-  BOOST_CHECK(!err);
-  BOOST_CHECK(expected_bytes_recvd == bytes_recvd);
+  ASIO_CHECK(!err);
+  ASIO_CHECK(expected_bytes_recvd == bytes_recvd);
 }
 
 void test()
@@ -335,6 +339,14 @@
   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)
+
   io_service ios;
 
   ip::udp::socket s1(ios, ip::udp::endpoint(ip::udp::v4(), 0));
@@ -352,24 +364,20 @@
   size_t bytes_recvd = s1.receive_from(buffer(recv_msg, sizeof(recv_msg)),
       sender_endpoint);
 
-  BOOST_CHECK(bytes_recvd == sizeof(send_msg));
-  BOOST_CHECK(memcmp(send_msg, recv_msg, sizeof(send_msg)) == 0);
+  ASIO_CHECK(bytes_recvd == sizeof(send_msg));
+  ASIO_CHECK(memcmp(send_msg, recv_msg, sizeof(send_msg)) == 0);
 
   memset(recv_msg, 0, sizeof(recv_msg));
 
   target_endpoint = sender_endpoint;
   s1.async_send_to(buffer(send_msg, sizeof(send_msg)), target_endpoint,
-      boost::bind(handle_send, sizeof(send_msg),
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred));
+      bindns::bind(handle_send, sizeof(send_msg), _1, _2));
   s2.async_receive_from(buffer(recv_msg, sizeof(recv_msg)), sender_endpoint,
-      boost::bind(handle_recv, sizeof(recv_msg),
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred));
+      bindns::bind(handle_recv, sizeof(recv_msg), _1, _2));
 
   ios.run();
 
-  BOOST_CHECK(memcmp(send_msg, recv_msg, sizeof(send_msg)) == 0);
+  ASIO_CHECK(memcmp(send_msg, recv_msg, sizeof(send_msg)) == 0);
 }
 
 } // namespace ip_udp_socket_runtime
@@ -438,11 +446,10 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/udp");
-  test->add(BOOST_TEST_CASE(&ip_udp_socket_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_udp_socket_runtime::test));
-  test->add(BOOST_TEST_CASE(&ip_udp_resolver_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/udp",
+  ASIO_TEST_CASE(ip_udp_socket_compile::test)
+  ASIO_TEST_CASE(ip_udp_socket_runtime::test)
+  ASIO_TEST_CASE(ip_udp_resolver_compile::test)
+)
diff --git a/asio/src/tests/unit/ip/unicast.cpp b/asio/src/tests/unit/ip/unicast.cpp
index f31b6ff..290de1c 100644
--- a/asio/src/tests/unit/ip/unicast.cpp
+++ b/asio/src/tests/unit/ip/unicast.cpp
@@ -84,78 +84,78 @@
   sock_v6.bind(ep_v6, ec);
   bool have_v6 = !ec;
 
-  BOOST_CHECK(have_v4 || have_v6);
+  ASIO_CHECK(have_v4 || have_v6);
 
   // hops class.
 
   if (have_v4)
   {
     ip::unicast::hops hops1(1);
-    BOOST_CHECK(hops1.value() == 1);
+    ASIO_CHECK(hops1.value() == 1);
     sock_v4.set_option(hops1, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Option is not supported under Windows CE.
-    BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+    ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
         ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK(!ec);
+    ASIO_CHECK(!ec);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
     ip::unicast::hops hops2;
     sock_v4.get_option(hops2, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Option is not supported under Windows CE.
-    BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+    ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
         ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK(!ec);
-    BOOST_CHECK(hops2.value() == 1);
+    ASIO_CHECK(!ec);
+    ASIO_CHECK(hops2.value() == 1);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
     ip::unicast::hops hops3(255);
-    BOOST_CHECK(hops3.value() == 255);
+    ASIO_CHECK(hops3.value() == 255);
     sock_v4.set_option(hops3, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Option is not supported under Windows CE.
-    BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+    ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
         ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK(!ec);
+    ASIO_CHECK(!ec);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
     ip::unicast::hops hops4;
     sock_v4.get_option(hops4, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
     // Option is not supported under Windows CE.
-    BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+    ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
         ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-    BOOST_CHECK(!ec);
-    BOOST_CHECK(hops4.value() == 255);
+    ASIO_CHECK(!ec);
+    ASIO_CHECK(hops4.value() == 255);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
   }
 
   if (have_v6)
   {
     ip::unicast::hops hops1(1);
-    BOOST_CHECK(hops1.value() == 1);
+    ASIO_CHECK(hops1.value() == 1);
     sock_v6.set_option(hops1, ec);
-    BOOST_CHECK(!ec);
+    ASIO_CHECK(!ec);
 
     ip::unicast::hops hops2;
     sock_v6.get_option(hops2, ec);
-    BOOST_CHECK(!ec);
-    BOOST_CHECK(hops2.value() == 1);
+    ASIO_CHECK(!ec);
+    ASIO_CHECK(hops2.value() == 1);
 
     ip::unicast::hops hops3(255);
-    BOOST_CHECK(hops3.value() == 255);
+    ASIO_CHECK(hops3.value() == 255);
     sock_v6.set_option(hops3, ec);
-    BOOST_CHECK(!ec);
+    ASIO_CHECK(!ec);
 
     ip::unicast::hops hops4;
     sock_v6.get_option(hops4, ec);
-    BOOST_CHECK(!ec);
-    BOOST_CHECK(hops4.value() == 255);
+    ASIO_CHECK(!ec);
+    ASIO_CHECK(hops4.value() == 255);
   }
 }
 
@@ -163,10 +163,9 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/unicast");
-  test->add(BOOST_TEST_CASE(&ip_unicast_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_unicast_runtime::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/unicast",
+  ASIO_TEST_CASE(ip_unicast_compile::test)
+  ASIO_TEST_CASE(ip_unicast_runtime::test)
+)
diff --git a/asio/src/tests/unit/ip/v6_only.cpp b/asio/src/tests/unit/ip/v6_only.cpp
index 1db7b3d..f2ec232 100644
--- a/asio/src/tests/unit/ip/v6_only.cpp
+++ b/asio/src/tests/unit/ip/v6_only.cpp
@@ -87,38 +87,38 @@
   {
     ip::v6_only v6_only1;
     acceptor_v6.get_option(v6_only1, ec);
-    BOOST_CHECK(!ec);
+    ASIO_CHECK(!ec);
     bool have_dual_stack = !v6_only1.value();
 
     if (have_dual_stack)
     {
       ip::v6_only v6_only2(false);
-      BOOST_CHECK(!v6_only2.value());
-      BOOST_CHECK(!static_cast<bool>(v6_only2));
-      BOOST_CHECK(!v6_only2);
+      ASIO_CHECK(!v6_only2.value());
+      ASIO_CHECK(!static_cast<bool>(v6_only2));
+      ASIO_CHECK(!v6_only2);
       acceptor_v6.set_option(v6_only2, ec);
-      BOOST_CHECK(!ec);
+      ASIO_CHECK(!ec);
 
       ip::v6_only v6_only3;
       acceptor_v6.get_option(v6_only3, ec);
-      BOOST_CHECK(!ec);
-      BOOST_CHECK(!v6_only3.value());
-      BOOST_CHECK(!static_cast<bool>(v6_only3));
-      BOOST_CHECK(!v6_only3);
+      ASIO_CHECK(!ec);
+      ASIO_CHECK(!v6_only3.value());
+      ASIO_CHECK(!static_cast<bool>(v6_only3));
+      ASIO_CHECK(!v6_only3);
 
       ip::v6_only v6_only4(true);
-      BOOST_CHECK(v6_only4.value());
-      BOOST_CHECK(static_cast<bool>(v6_only4));
-      BOOST_CHECK(!!v6_only4);
+      ASIO_CHECK(v6_only4.value());
+      ASIO_CHECK(static_cast<bool>(v6_only4));
+      ASIO_CHECK(!!v6_only4);
       acceptor_v6.set_option(v6_only4, ec);
-      BOOST_CHECK(!ec);
+      ASIO_CHECK(!ec);
 
       ip::v6_only v6_only5;
       acceptor_v6.get_option(v6_only5, ec);
-      BOOST_CHECK(!ec);
-      BOOST_CHECK(v6_only5.value());
-      BOOST_CHECK(static_cast<bool>(v6_only5));
-      BOOST_CHECK(!!v6_only5);
+      ASIO_CHECK(!ec);
+      ASIO_CHECK(v6_only5.value());
+      ASIO_CHECK(static_cast<bool>(v6_only5));
+      ASIO_CHECK(!!v6_only5);
     }
   }
 }
@@ -127,10 +127,9 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ip/v6_only");
-  test->add(BOOST_TEST_CASE(&ip_v6_only_compile::test));
-  test->add(BOOST_TEST_CASE(&ip_v6_only_runtime::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ip/v6_only",
+  ASIO_TEST_CASE(ip_v6_only_compile::test)
+  ASIO_TEST_CASE(ip_v6_only_runtime::test)
+)
diff --git a/asio/src/tests/unit/is_read_buffered.cpp b/asio/src/tests/unit/is_read_buffered.cpp
index b63e6df..60bfcc1 100644
--- a/asio/src/tests/unit/is_read_buffered.cpp
+++ b/asio/src/tests/unit/is_read_buffered.cpp
@@ -16,8 +16,6 @@
 // Test that header file is self-contained.
 #include "asio/is_read_buffered.hpp"
 
-#include <boost/bind.hpp>
-#include <boost/noncopyable.hpp>
 #include "asio/buffered_read_stream.hpp"
 #include "asio/buffered_write_stream.hpp"
 #include "asio/io_service.hpp"
@@ -27,7 +25,6 @@
 using namespace std; // For memcmp, memcpy and memset.
 
 class test_stream
-  : private boost::noncopyable
 {
 public:
   typedef asio::io_service io_service_type;
@@ -95,35 +92,34 @@
 
 void is_read_buffered_test()
 {
-  BOOST_CHECK(!asio::is_read_buffered<
+  ASIO_CHECK(!asio::is_read_buffered<
       asio::ip::tcp::socket>::value);
 
-  BOOST_CHECK(!!asio::is_read_buffered<
+  ASIO_CHECK(!!asio::is_read_buffered<
       asio::buffered_read_stream<
         asio::ip::tcp::socket> >::value);
 
-  BOOST_CHECK(!asio::is_read_buffered<
+  ASIO_CHECK(!asio::is_read_buffered<
       asio::buffered_write_stream<
         asio::ip::tcp::socket> >::value);
 
-  BOOST_CHECK(!!asio::is_read_buffered<
+  ASIO_CHECK(!!asio::is_read_buffered<
       asio::buffered_stream<asio::ip::tcp::socket> >::value);
 
-  BOOST_CHECK(!asio::is_read_buffered<test_stream>::value);
+  ASIO_CHECK(!asio::is_read_buffered<test_stream>::value);
 
-  BOOST_CHECK(!!asio::is_read_buffered<
+  ASIO_CHECK(!!asio::is_read_buffered<
       asio::buffered_read_stream<test_stream> >::value);
 
-  BOOST_CHECK(!asio::is_read_buffered<
+  ASIO_CHECK(!asio::is_read_buffered<
       asio::buffered_write_stream<test_stream> >::value);
 
-  BOOST_CHECK(!!asio::is_read_buffered<
+  ASIO_CHECK(!!asio::is_read_buffered<
       asio::buffered_stream<test_stream> >::value);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("is_read_buffered");
-  test->add(BOOST_TEST_CASE(&is_read_buffered_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "is_read_buffered",
+  ASIO_TEST_CASE(is_read_buffered_test)
+)
diff --git a/asio/src/tests/unit/is_write_buffered.cpp b/asio/src/tests/unit/is_write_buffered.cpp
index 89c09d8..5c62096 100644
--- a/asio/src/tests/unit/is_write_buffered.cpp
+++ b/asio/src/tests/unit/is_write_buffered.cpp
@@ -16,8 +16,6 @@
 // Test that header file is self-contained.
 #include "asio/is_write_buffered.hpp"
 
-#include <boost/bind.hpp>
-#include <boost/noncopyable.hpp>
 #include "asio/buffered_read_stream.hpp"
 #include "asio/buffered_write_stream.hpp"
 #include "asio/io_service.hpp"
@@ -27,7 +25,6 @@
 using namespace std; // For memcmp, memcpy and memset.
 
 class test_stream
-  : private boost::noncopyable
 {
 public:
   typedef asio::io_service io_service_type;
@@ -95,35 +92,34 @@
 
 void is_write_buffered_test()
 {
-  BOOST_CHECK(!asio::is_write_buffered<
+  ASIO_CHECK(!asio::is_write_buffered<
       asio::ip::tcp::socket>::value);
 
-  BOOST_CHECK(!asio::is_write_buffered<
+  ASIO_CHECK(!asio::is_write_buffered<
       asio::buffered_read_stream<
         asio::ip::tcp::socket> >::value);
 
-  BOOST_CHECK(!!asio::is_write_buffered<
+  ASIO_CHECK(!!asio::is_write_buffered<
       asio::buffered_write_stream<
         asio::ip::tcp::socket> >::value);
 
-  BOOST_CHECK(!!asio::is_write_buffered<
+  ASIO_CHECK(!!asio::is_write_buffered<
       asio::buffered_stream<asio::ip::tcp::socket> >::value);
 
-  BOOST_CHECK(!asio::is_write_buffered<test_stream>::value);
+  ASIO_CHECK(!asio::is_write_buffered<test_stream>::value);
 
-  BOOST_CHECK(!asio::is_write_buffered<
+  ASIO_CHECK(!asio::is_write_buffered<
       asio::buffered_read_stream<test_stream> >::value);
 
-  BOOST_CHECK(!!asio::is_write_buffered<
+  ASIO_CHECK(!!asio::is_write_buffered<
       asio::buffered_write_stream<test_stream> >::value);
 
-  BOOST_CHECK(!!asio::is_write_buffered<
+  ASIO_CHECK(!!asio::is_write_buffered<
       asio::buffered_stream<test_stream> >::value);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("is_write_buffered");
-  test->add(BOOST_TEST_CASE(&is_write_buffered_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "is_write_buffered",
+  ASIO_TEST_CASE(is_write_buffered_test)
+)
diff --git a/asio/src/tests/unit/local/basic_endpoint.cpp b/asio/src/tests/unit/local/basic_endpoint.cpp
index 2091902..5791304 100644
--- a/asio/src/tests/unit/local/basic_endpoint.cpp
+++ b/asio/src/tests/unit/local/basic_endpoint.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("local/basic_endpoint");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "local/basic_endpoint",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/local/connect_pair.cpp b/asio/src/tests/unit/local/connect_pair.cpp
index 403c1a1..dd39104 100644
--- a/asio/src/tests/unit/local/connect_pair.cpp
+++ b/asio/src/tests/unit/local/connect_pair.cpp
@@ -70,9 +70,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("local/connect_pair");
-  test->add(BOOST_TEST_CASE(&local_connect_pair_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "local/connect_pair",
+  ASIO_TEST_CASE(local_connect_pair_compile::test)
+)
diff --git a/asio/src/tests/unit/local/datagram_protocol.cpp b/asio/src/tests/unit/local/datagram_protocol.cpp
index 1cc8133..b8fe8e9 100644
--- a/asio/src/tests/unit/local/datagram_protocol.cpp
+++ b/asio/src/tests/unit/local/datagram_protocol.cpp
@@ -16,7 +16,6 @@
 // Test that header file is self-contained.
 #include "asio/local/datagram_protocol.hpp"
 
-#include <boost/bind.hpp>
 #include <cstring>
 #include "asio/io_service.hpp"
 #include "../unit_test.hpp"
@@ -225,9 +224,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("local/datagram_protocol");
-  test->add(BOOST_TEST_CASE(&local_datagram_protocol_socket_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "local/datagram_protocol",
+  ASIO_TEST_CASE(local_datagram_protocol_socket_compile::test)
+)
diff --git a/asio/src/tests/unit/local/stream_protocol.cpp b/asio/src/tests/unit/local/stream_protocol.cpp
index b3aa552..91007fd 100644
--- a/asio/src/tests/unit/local/stream_protocol.cpp
+++ b/asio/src/tests/unit/local/stream_protocol.cpp
@@ -16,7 +16,6 @@
 // Test that header file is self-contained.
 #include "asio/local/stream_protocol.hpp"
 
-#include <boost/bind.hpp>
 #include <cstring>
 #include "asio/io_service.hpp"
 #include "../unit_test.hpp"
@@ -202,9 +201,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("local/stream_protocol");
-  test->add(BOOST_TEST_CASE(&local_stream_protocol_socket_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "local/stream_protocol",
+  ASIO_TEST_CASE(local_stream_protocol_socket_compile::test)
+)
diff --git a/asio/src/tests/unit/placeholders.cpp b/asio/src/tests/unit/placeholders.cpp
index 6a21a04..541d68a 100644
--- a/asio/src/tests/unit/placeholders.cpp
+++ b/asio/src/tests/unit/placeholders.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("placeholders");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "placeholders",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/posix/basic_descriptor.cpp b/asio/src/tests/unit/posix/basic_descriptor.cpp
index b313ef5..11e2478 100644
--- a/asio/src/tests/unit/posix/basic_descriptor.cpp
+++ b/asio/src/tests/unit/posix/basic_descriptor.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("posix/basic_descriptor");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "posix/basic_descriptor",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/posix/basic_stream_descriptor.cpp b/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
index 5ad1f15..fc24d6d 100644
--- a/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
+++ b/asio/src/tests/unit/posix/basic_stream_descriptor.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("posix/basic_stream_descriptor");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "posix/basic_stream_descriptor",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/posix/descriptor_base.cpp b/asio/src/tests/unit/posix/descriptor_base.cpp
index a282286..9218b77 100644
--- a/asio/src/tests/unit/posix/descriptor_base.cpp
+++ b/asio/src/tests/unit/posix/descriptor_base.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("posix/descriptor_base");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "posix/descriptor_base",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/posix/stream_descriptor.cpp b/asio/src/tests/unit/posix/stream_descriptor.cpp
index 221f822..7abb781 100644
--- a/asio/src/tests/unit/posix/stream_descriptor.cpp
+++ b/asio/src/tests/unit/posix/stream_descriptor.cpp
@@ -153,9 +153,9 @@
 } // namespace posix_stream_descriptor_compile
 
 //------------------------------------------------------------------------------
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("posix/stream_descriptor");
-  test->add(BOOST_TEST_CASE(&posix_stream_descriptor_compile::test));
-  return test;
-}
+
+ASIO_TEST_SUITE
+(
+  "posix/stream_descriptor",
+  ASIO_TEST_CASE(posix_stream_descriptor_compile::test)
+)
diff --git a/asio/src/tests/unit/posix/stream_descriptor_service.cpp b/asio/src/tests/unit/posix/stream_descriptor_service.cpp
index 51dbc50..d3f43e2 100644
--- a/asio/src/tests/unit/posix/stream_descriptor_service.cpp
+++ b/asio/src/tests/unit/posix/stream_descriptor_service.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("posix/stream_descriptor_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "posix/stream_descriptor_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/raw_socket_service.cpp b/asio/src/tests/unit/raw_socket_service.cpp
index 1771e62..e9c470c 100644
--- a/asio/src/tests/unit/raw_socket_service.cpp
+++ b/asio/src/tests/unit/raw_socket_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("raw_socket_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "raw_socket_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/read.cpp b/asio/src/tests/unit/read.cpp
index 776f39c..18f25de 100644
--- a/asio/src/tests/unit/read.cpp
+++ b/asio/src/tests/unit/read.cpp
@@ -16,23 +16,29 @@
 // Test that header file is self-contained.
 #include "asio/read.hpp"
 
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-#include <boost/array.hpp>
-#include <boost/bind.hpp>
-#include <boost/noncopyable.hpp>
 #include <cstring>
 #include <vector>
 #include "asio/io_service.hpp"
-#include "asio/placeholders.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_stream
-  : private boost::noncopyable
 {
 public:
   typedef asio::io_service io_service_type;
@@ -52,7 +58,7 @@
 
   void reset(const void* data, size_t length)
   {
-    BOOST_CHECK(length <= max_length);
+    ASIO_CHECK(length <= max_length);
 
     memcpy(data_, data, length);
     length_ = length;
@@ -133,7 +139,7 @@
   std::vector<asio::mutable_buffer> buffers;
 
   size_t bytes_transferred = asio::read(s, buffers);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 void test_2_arg_mutable_buffers_1_read()
@@ -147,22 +153,22 @@
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read(s, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 }
 
 void test_2_arg_vector_buffers_read()
@@ -177,22 +183,22 @@
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read(s, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 }
 
 void test_2_arg_streambuf_read()
@@ -204,25 +210,25 @@
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   size_t bytes_transferred = asio::read(s, sb);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
 }
 
 void test_3_arg_nothrow_zero_buffers_read()
@@ -233,8 +239,8 @@
 
   asio::error_code error;
   size_t bytes_transferred = asio::read(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == 0);
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(!error);
 }
 
 void test_3_arg_nothrow_mutable_buffers_1_read()
@@ -249,25 +255,25 @@
   memset(read_buf, 0, sizeof(read_buf));
   asio::error_code error;
   size_t bytes_transferred = asio::read(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_3_arg_nothrow_vector_buffers_read()
@@ -283,25 +289,25 @@
   memset(read_buf, 0, sizeof(read_buf));
   asio::error_code error;
   size_t bytes_transferred = asio::read(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_3_arg_nothrow_streambuf_read()
@@ -314,28 +320,28 @@
   sb.consume(sb.size());
   asio::error_code error;
   size_t bytes_transferred = asio::read(s, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 }
 
 bool old_style_transfer_all(const asio::error_code& ec,
@@ -362,202 +368,202 @@
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read(s, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 }
 
 void test_3_arg_vector_buffers_read()
@@ -573,202 +579,202 @@
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read(s, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 }
 
 void test_3_arg_streambuf_read()
@@ -781,229 +787,229 @@
   sb.consume(sb.size());
   size_t bytes_transferred = asio::read(s, sb,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(sb.data(), 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(sb.data(), 50));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
 }
 
 void test_4_arg_mutable_buffers_1_read()
@@ -1019,9 +1025,9 @@
   asio::error_code error;
   size_t bytes_transferred = asio::read(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1029,9 +1035,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1039,18 +1045,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1058,9 +1064,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1068,18 +1074,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1087,9 +1093,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1097,18 +1103,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1116,9 +1122,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1126,18 +1132,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1145,9 +1151,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1155,18 +1161,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1174,9 +1180,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1184,18 +1190,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1203,9 +1209,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1213,17 +1219,17 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1231,9 +1237,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1241,34 +1247,34 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_vector_buffers_read()
@@ -1285,9 +1291,9 @@
   asio::error_code error;
   size_t bytes_transferred = asio::read(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1295,9 +1301,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1305,18 +1311,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1324,9 +1330,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1334,18 +1340,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1353,9 +1359,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1363,18 +1369,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1382,9 +1388,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1392,18 +1398,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1411,9 +1417,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1421,18 +1427,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1440,9 +1446,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1450,18 +1456,18 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1469,9 +1475,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1479,17 +1485,17 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1497,9 +1503,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1507,34 +1513,34 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_streambuf_read()
@@ -1548,10 +1554,10 @@
   asio::error_code error;
   size_t bytes_transferred = asio::read(s, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1559,10 +1565,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1570,20 +1576,20 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1591,10 +1597,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1602,20 +1608,20 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1623,10 +1629,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1634,20 +1640,20 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1655,10 +1661,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1666,20 +1672,20 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(sb.data(), 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1687,10 +1693,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1698,20 +1704,20 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1719,10 +1725,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1730,20 +1736,20 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1751,10 +1757,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1762,19 +1768,19 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1782,10 +1788,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1793,50 +1799,58 @@
   error = asio::error_code();
   bytes_transferred = asio::read(s, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read(s, sb, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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);
 }
 
 void async_read_handler(const asio::error_code& e,
     size_t bytes_transferred, size_t expected_bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(!e);
-  BOOST_CHECK(bytes_transferred == expected_bytes_transferred);
+  ASIO_CHECK(!e);
+  ASIO_CHECK(bytes_transferred == expected_bytes_transferred);
 }
 
 void test_3_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_stream s(ios);
   char read_buf[sizeof(read_data)];
@@ -1847,46 +1861,49 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
   char read_buf[sizeof(read_data)];
@@ -1898,46 +1915,49 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
@@ -1950,47 +1970,49 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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)
+
   asio::io_service ios;
   test_stream s(ios);
   char read_buf[sizeof(read_data)];
@@ -2002,46 +2024,48 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 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)
+  namespace bindns = std;
+  using std::placeholders::_1;
+  using std::placeholders::_2;
+#endif // defined(ASIO_HAS_BOOST_BIND)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::streambuf sb(sizeof(read_data));
@@ -2050,49 +2074,51 @@
   sb.consume(sb.size());
   bool called = false;
   asio::async_read(s, sb,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
 }
 
 void test_4_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_stream s(ios);
   char read_buf[sizeof(read_data)];
@@ -2103,374 +2129,329 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
   char read_buf[sizeof(read_data)];
@@ -2482,374 +2463,329 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
@@ -2862,375 +2798,329 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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)
+
   asio::io_service ios;
   test_stream s(ios);
   char read_buf[sizeof(read_data)];
@@ -3242,374 +3132,328 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read(s, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 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)
+  namespace bindns = std;
+  using std::placeholders::_1;
+  using std::placeholders::_2;
+#endif // defined(ASIO_HAS_BOOST_BIND)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::streambuf sb(sizeof(read_data));
@@ -3618,425 +3462,370 @@
   sb.consume(sb.size());
   bool called = false;
   asio::async_read(s, sb, asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read(s, sb, asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read(s, sb, asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(sb.data(), 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(sb.data(), 50));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read(s, sb, asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read(s, sb, asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read(s, sb, asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 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),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read(s, sb, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read(s, sb, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), 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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data)));
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("read");
-  test->add(BOOST_TEST_CASE(&test_2_arg_zero_buffers_read));
-  test->add(BOOST_TEST_CASE(&test_2_arg_mutable_buffers_1_read));
-  test->add(BOOST_TEST_CASE(&test_2_arg_vector_buffers_read));
-  test->add(BOOST_TEST_CASE(&test_2_arg_streambuf_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_zero_buffers_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_mutable_buffers_1_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_vector_buffers_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_streambuf_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_mutable_buffers_1_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_vector_buffers_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_streambuf_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_streambuf_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_mutable_buffers_1_async_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_boost_array_buffers_async_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_std_array_buffers_async_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_vector_buffers_async_read));
-  test->add(BOOST_TEST_CASE(&test_3_arg_streambuf_async_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_async_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_async_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_boost_array_buffers_async_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_std_array_buffers_async_read));
-  test->add(BOOST_TEST_CASE(&test_4_arg_streambuf_async_read));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "read",
+  ASIO_TEST_CASE(test_2_arg_zero_buffers_read)
+  ASIO_TEST_CASE(test_2_arg_mutable_buffers_1_read)
+  ASIO_TEST_CASE(test_2_arg_vector_buffers_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_buffers_1_read)
+  ASIO_TEST_CASE(test_3_arg_nothrow_vector_buffers_read)
+  ASIO_TEST_CASE(test_3_arg_nothrow_streambuf_read)
+  ASIO_TEST_CASE(test_3_arg_mutable_buffers_1_read)
+  ASIO_TEST_CASE(test_3_arg_vector_buffers_read)
+  ASIO_TEST_CASE(test_3_arg_streambuf_read)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_read)
+  ASIO_TEST_CASE(test_4_arg_vector_buffers_read)
+  ASIO_TEST_CASE(test_4_arg_streambuf_read)
+  ASIO_TEST_CASE(test_3_arg_mutable_buffers_1_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_streambuf_async_read)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_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_streambuf_async_read)
+)
diff --git a/asio/src/tests/unit/read_at.cpp b/asio/src/tests/unit/read_at.cpp
index 3e4f64e..bc59da4 100644
--- a/asio/src/tests/unit/read_at.cpp
+++ b/asio/src/tests/unit/read_at.cpp
@@ -16,22 +16,28 @@
 // Test that header file is self-contained.
 #include "asio/read_at.hpp"
 
+#include <cstring>
+#include "asio/io_service.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)
-#include <boost/array.hpp>
-#include <boost/bind.hpp>
-#include <boost/noncopyable.hpp>
-#include <cstring>
-#include "asio/io_service.hpp"
-#include "asio/placeholders.hpp"
-#include "asio/streambuf.hpp"
-#include "unit_test.hpp"
 
 using namespace std; // For memcmp, memcpy and memset.
 
 class test_random_access_device
-  : private boost::noncopyable
 {
 public:
   typedef asio::io_service io_service_type;
@@ -50,7 +56,7 @@
 
   void reset(const void* data, size_t length)
   {
-    BOOST_CHECK(length <= max_length);
+    ASIO_CHECK(length <= max_length);
 
     length_ = 0;
     while (length_ + length < max_length)
@@ -139,42 +145,42 @@
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read_at(s, 0, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 void test_3_arg_vector_buffers_read_at()
@@ -189,42 +195,42 @@
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read_at(s, 0, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 void test_3_arg_streambuf_read_at()
@@ -236,48 +242,48 @@
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   size_t bytes_transferred = asio::read_at(s, 0, sb);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 }
 
 void test_4_arg_nothrow_mutable_buffers_1_read_at()
@@ -292,48 +298,48 @@
   memset(read_buf, 0, sizeof(read_buf));
   asio::error_code error;
   size_t bytes_transferred = asio::read_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_nothrow_vector_buffers_read_at()
@@ -349,48 +355,48 @@
   memset(read_buf, 0, sizeof(read_buf));
   asio::error_code error;
   size_t bytes_transferred = asio::read_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_nothrow_streambuf_read_at()
@@ -403,54 +409,54 @@
   sb.consume(sb.size());
   asio::error_code error;
   size_t bytes_transferred = asio::read_at(s, 0, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 }
 
 bool old_style_transfer_all(const asio::error_code& ec,
@@ -477,409 +483,409 @@
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 void test_4_arg_vector_buffers_read_at()
@@ -895,409 +901,409 @@
   memset(read_buf, 0, sizeof(read_buf));
   size_t bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   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,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   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,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   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,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 void test_4_arg_streambuf_read_at()
@@ -1310,463 +1316,463 @@
   sb.consume(sb.size());
   size_t bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 50));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 50));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(1);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  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));
   s.next_read_length(10);
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  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)));
 }
 
 void test_5_arg_mutable_buffers_1_read_at()
@@ -1782,17 +1788,17 @@
   asio::error_code error;
   size_t bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1800,9 +1806,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1810,9 +1816,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1820,9 +1826,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1830,27 +1836,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1858,9 +1864,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1868,9 +1874,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1878,9 +1884,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1888,27 +1894,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1916,9 +1922,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1926,9 +1932,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1936,9 +1942,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1946,27 +1952,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1974,9 +1980,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -1984,9 +1990,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -1994,9 +2000,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2004,27 +2010,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2032,9 +2038,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2042,9 +2048,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2052,9 +2058,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2062,27 +2068,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2090,9 +2096,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2100,9 +2106,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2110,9 +2116,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2120,27 +2126,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2148,9 +2154,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2158,9 +2164,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2168,9 +2174,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2178,25 +2184,25 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2204,9 +2210,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2214,9 +2220,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2224,9 +2230,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2234,25 +2240,25 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2260,9 +2266,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2270,9 +2276,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2280,9 +2286,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2290,9 +2296,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_5_arg_vector_buffers_read_at()
@@ -2309,17 +2315,17 @@
   asio::error_code error;
   size_t bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2327,9 +2333,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2337,9 +2343,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2347,9 +2353,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2357,27 +2363,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2385,9 +2391,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2395,9 +2401,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2405,9 +2411,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2415,27 +2421,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2443,9 +2449,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2453,9 +2459,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2463,9 +2469,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2473,27 +2479,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2501,9 +2507,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2511,9 +2517,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2521,9 +2527,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2531,27 +2537,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2559,9 +2565,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2569,9 +2575,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2579,9 +2585,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2589,27 +2595,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2617,9 +2623,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2627,9 +2633,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2637,9 +2643,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2647,27 +2653,27 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2675,9 +2681,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2685,9 +2691,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2695,9 +2701,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2705,25 +2711,25 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   bytes_transferred = asio::read_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2731,9 +2737,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2741,9 +2747,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2751,9 +2757,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2761,25 +2767,25 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   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);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2787,9 +2793,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2797,9 +2803,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2807,9 +2813,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2817,9 +2823,9 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_5_arg_streambuf_read_at()
@@ -2833,19 +2839,19 @@
   asio::error_code error;
   size_t bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2853,10 +2859,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2864,10 +2870,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2875,10 +2881,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2886,30 +2892,30 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2917,10 +2923,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2928,10 +2934,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2939,10 +2945,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -2950,30 +2956,30 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2981,10 +2987,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -2992,10 +2998,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3003,10 +3009,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3014,30 +3020,30 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3045,10 +3051,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3056,10 +3062,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3067,10 +3073,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3078,30 +3084,30 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 50));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3109,10 +3115,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3120,10 +3126,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3131,10 +3137,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3142,30 +3148,30 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3173,10 +3179,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3184,10 +3190,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3195,10 +3201,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3206,30 +3212,30 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3237,10 +3243,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3248,10 +3254,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3259,10 +3265,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3270,28 +3276,28 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3299,10 +3305,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3310,10 +3316,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3321,10 +3327,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3332,28 +3338,28 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 0, sb,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   bytes_transferred = asio::read_at(s, 1234, sb,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3361,10 +3367,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3372,10 +3378,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3383,10 +3389,10 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 0, sb,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3394,22 +3400,30 @@
   error = asio::error_code();
   bytes_transferred = asio::read_at(s, 1234, sb,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(read_data));
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
-  BOOST_CHECK(!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)));
+  ASIO_CHECK(!error);
 }
 
 void async_read_handler(const asio::error_code& e,
     size_t bytes_transferred, size_t expected_bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(!e);
-  BOOST_CHECK(bytes_transferred == expected_bytes_transferred);
+  ASIO_CHECK(!e);
+  ASIO_CHECK(bytes_transferred == expected_bytes_transferred);
 }
 
 void test_4_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   char read_buf[sizeof(read_data)];
@@ -3420,87 +3434,84 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
   char read_buf[sizeof(read_data)];
@@ -3512,87 +3523,84 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
@@ -3605,88 +3613,84 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   char read_buf[sizeof(read_data)];
@@ -3698,87 +3702,83 @@
   memset(read_buf, 0, sizeof(read_buf));
   bool called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   asio::streambuf sb(sizeof(read_data));
@@ -3787,93 +3787,89 @@
   sb.consume(sb.size());
   bool called = false;
   asio::async_read_at(s, 0, sb,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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());
   called = false;
   asio::async_read_at(s, 1234, sb,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(1);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(10);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 }
 
 void test_5_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   char read_buf[sizeof(read_data)];
@@ -3885,28 +3881,24 @@
   bool called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3914,14 +3906,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -3929,14 +3919,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3944,14 +3932,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -3959,42 +3945,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4002,14 +3982,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4017,14 +3995,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4032,14 +4008,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4047,42 +4021,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4090,14 +4058,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4105,14 +4071,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4120,14 +4084,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4135,42 +4097,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4178,14 +4134,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4193,14 +4147,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4208,14 +4160,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4223,42 +4173,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4266,14 +4210,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4281,14 +4223,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4296,14 +4236,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4311,42 +4249,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4354,14 +4286,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4369,14 +4299,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4384,14 +4312,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4399,42 +4325,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4442,14 +4362,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4457,14 +4375,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4472,14 +4388,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4487,182 +4401,165 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
   char read_buf[sizeof(read_data)];
@@ -4675,28 +4572,24 @@
   bool called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4704,14 +4597,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4719,14 +4610,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4734,14 +4623,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4749,42 +4636,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4792,14 +4673,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4807,14 +4686,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4822,14 +4699,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4837,42 +4712,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4880,14 +4749,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4895,14 +4762,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4910,14 +4775,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4925,42 +4788,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4968,14 +4825,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -4983,14 +4838,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -4998,14 +4851,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5013,42 +4864,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5056,14 +4901,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5071,14 +4914,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5086,14 +4927,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5101,42 +4940,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5144,14 +4977,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5159,14 +4990,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5174,14 +5003,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5189,42 +5016,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5232,14 +5053,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5247,14 +5066,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5262,14 +5079,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5277,182 +5092,165 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
@@ -5466,28 +5264,24 @@
   bool called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5495,14 +5289,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5510,14 +5302,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5525,14 +5315,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5540,42 +5328,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5583,14 +5365,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5598,14 +5378,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5613,14 +5391,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5628,42 +5404,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5671,14 +5441,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5686,14 +5454,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5701,14 +5467,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5716,42 +5480,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5759,14 +5517,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5774,14 +5530,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5789,14 +5543,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5804,42 +5556,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5847,14 +5593,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5862,14 +5606,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5877,14 +5619,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5892,42 +5632,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5935,14 +5669,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -5950,14 +5682,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5965,14 +5695,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -5980,42 +5708,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6023,14 +5745,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6038,14 +5758,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6053,14 +5771,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6068,183 +5784,165 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   char read_buf[sizeof(read_data)];
@@ -6257,28 +5955,24 @@
   bool called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6286,14 +5980,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6301,14 +5993,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6316,14 +6006,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6331,42 +6019,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6374,14 +6056,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6389,14 +6069,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6404,14 +6082,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6419,42 +6095,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6462,14 +6132,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6477,14 +6145,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6492,14 +6158,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6507,42 +6171,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6550,14 +6208,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6565,14 +6221,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6580,14 +6234,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6595,42 +6247,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6638,14 +6284,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6653,14 +6297,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6668,14 +6310,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6683,42 +6323,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6726,14 +6360,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6741,14 +6373,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6756,14 +6386,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6771,42 +6399,36 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6814,14 +6436,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -6829,14 +6449,12 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6844,14 +6462,12 @@
   called = false;
   asio::async_read_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -6859,182 +6475,164 @@
   called = false;
   asio::async_read_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   memset(read_buf, 0, sizeof(read_buf));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
 
   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,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 0, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   called = false;
   asio::async_read_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(read_data)));
 }
 
 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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   asio::streambuf sb(sizeof(read_data));
@@ -7044,30 +6642,26 @@
   bool called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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());
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7075,15 +6669,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(1);
@@ -7091,15 +6683,13 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7107,15 +6697,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(10);
@@ -7123,45 +6711,39 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_all(),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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());
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7169,15 +6751,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7185,15 +6765,13 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7201,15 +6779,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7217,45 +6793,39 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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());
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7263,15 +6833,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7279,15 +6847,13 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7295,15 +6861,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7311,45 +6875,39 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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());
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7357,15 +6915,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7373,15 +6929,13 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7389,15 +6943,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 50));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7405,45 +6957,39 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_at_least(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 50);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 50);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 50));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7451,15 +6997,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7467,15 +7011,13 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7483,15 +7025,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7499,45 +7039,39 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(1),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 1);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 1);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 1));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7545,15 +7079,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7561,15 +7093,13 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7577,15 +7107,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7593,45 +7121,39 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(10),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 10);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 10);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 10));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7639,15 +7161,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -7655,15 +7175,13 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7671,15 +7189,13 @@
   called = false;
   asio::async_read_at(s, 0, sb,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(0, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(0, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -7687,217 +7203,190 @@
   called = false;
   asio::async_read_at(s, 1234, sb,
       asio::transfer_exactly(42),
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_read_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == 42);
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == 42);
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), 42));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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());
   called = false;
   asio::async_read_at(s, 1234, sb, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(1);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(10);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb, old_style_transfer_all,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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());
   called = false;
   asio::async_read_at(s, 1234, sb, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(1);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 0, sb, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(0, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  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));
   s.next_read_length(10);
   sb.consume(sb.size());
   called = false;
   asio::async_read_at(s, 1234, sb, short_transfer,
-      boost::bind(async_read_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(read_data), &called));
+      bindns::bind(async_read_handler,
+        _1, _2, sizeof(read_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(sb.size() == sizeof(read_data));
-  BOOST_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(sb.size() == sizeof(read_data));
+  ASIO_CHECK(s.check_buffers(1234, sb.data(), sizeof(read_data)));
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("read_at");
-  test->add(BOOST_TEST_CASE(&test_3_arg_mutable_buffers_1_read_at));
-  test->add(BOOST_TEST_CASE(&test_3_arg_vector_buffers_read_at));
-  test->add(BOOST_TEST_CASE(&test_3_arg_streambuf_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_nothrow_mutable_buffers_1_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_nothrow_vector_buffers_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_nothrow_streambuf_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_streambuf_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_mutable_buffers_1_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_vector_buffers_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_streambuf_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_boost_array_buffers_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_std_array_buffers_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_streambuf_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_mutable_buffers_1_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_boost_array_buffers_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_std_array_buffers_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_vector_buffers_async_read_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_streambuf_async_read_at));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "read_at",
+  ASIO_TEST_CASE(test_3_arg_mutable_buffers_1_read_at)
+  ASIO_TEST_CASE(test_3_arg_vector_buffers_read_at)
+  ASIO_TEST_CASE(test_3_arg_streambuf_read_at)
+  ASIO_TEST_CASE(test_4_arg_nothrow_mutable_buffers_1_read_at)
+  ASIO_TEST_CASE(test_4_arg_nothrow_vector_buffers_read_at)
+  ASIO_TEST_CASE(test_4_arg_nothrow_streambuf_read_at)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_read_at)
+  ASIO_TEST_CASE(test_4_arg_vector_buffers_read_at)
+  ASIO_TEST_CASE(test_4_arg_streambuf_read_at)
+  ASIO_TEST_CASE(test_5_arg_mutable_buffers_1_read_at)
+  ASIO_TEST_CASE(test_5_arg_vector_buffers_read_at)
+  ASIO_TEST_CASE(test_5_arg_streambuf_read_at)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_async_read_at)
+  ASIO_TEST_CASE(test_4_arg_boost_array_buffers_async_read_at)
+  ASIO_TEST_CASE(test_4_arg_std_array_buffers_async_read_at)
+  ASIO_TEST_CASE(test_4_arg_vector_buffers_async_read_at)
+  ASIO_TEST_CASE(test_4_arg_streambuf_async_read_at)
+  ASIO_TEST_CASE(test_5_arg_mutable_buffers_1_async_read_at)
+  ASIO_TEST_CASE(test_5_arg_boost_array_buffers_async_read_at)
+  ASIO_TEST_CASE(test_5_arg_std_array_buffers_async_read_at)
+  ASIO_TEST_CASE(test_5_arg_vector_buffers_async_read_at)
+  ASIO_TEST_CASE(test_5_arg_streambuf_async_read_at)
+)
diff --git a/asio/src/tests/unit/read_until.cpp b/asio/src/tests/unit/read_until.cpp
index b2410f6..e632623 100644
--- a/asio/src/tests/unit/read_until.cpp
+++ b/asio/src/tests/unit/read_until.cpp
@@ -16,16 +16,18 @@
 // Test that header file is self-contained.
 #include "asio/read_until.hpp"
 
-#include <boost/bind.hpp>
-#include <boost/noncopyable.hpp>
 #include <cstring>
 #include "asio/io_service.hpp"
-#include "asio/placeholders.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
-  : private boost::noncopyable
 {
 public:
   typedef asio::io_service io_service_type;
@@ -47,7 +49,7 @@
   {
     using namespace std; // For memcpy.
 
-    BOOST_CHECK(length <= max_length);
+    ASIO_CHECK(length <= max_length);
 
     memcpy(data_, data, length);
     length_ = length;
@@ -109,79 +111,79 @@
   s.reset(read_data, sizeof(read_data));
   sb1.consume(sb1.size());
   std::size_t length = asio::read_until(s, sb1, 'Z');
-  BOOST_CHECK(length == 26);
+  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');
-  BOOST_CHECK(length == 26);
+  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');
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   sb1.consume(sb1.size());
   length = asio::read_until(s, sb1, 'Z', ec);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 }
 
 void test_string_read_until()
@@ -195,79 +197,79 @@
   s.reset(read_data, sizeof(read_data));
   sb1.consume(sb1.size());
   std::size_t length = asio::read_until(s, sb1, "XYZ");
-  BOOST_CHECK(length == 26);
+  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");
-  BOOST_CHECK(length == 26);
+  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");
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   sb1.consume(sb1.size());
   length = asio::read_until(s, sb1, "XYZ", ec);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 }
 
 class match_char
@@ -292,7 +294,9 @@
 
 namespace asio {
   template <> struct is_match_condition<match_char>
-    : public boost::true_type {};
+  {
+    enum { value = true };
+  };
 } // namespace asio
 
 void test_match_condition_read_until()
@@ -306,79 +310,79 @@
   s.reset(read_data, sizeof(read_data));
   sb1.consume(sb1.size());
   std::size_t length = asio::read_until(s, sb1, match_char('Z'));
-  BOOST_CHECK(length == 26);
+  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'));
-  BOOST_CHECK(length == 26);
+  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'));
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  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);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 }
 
 void async_read_handler(
@@ -392,6 +396,14 @@
 
 void test_char_async_read_until()
 {
+#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)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::streambuf sb1;
@@ -406,13 +418,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, 'Z',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -421,13 +433,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, 'Z',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -436,13 +448,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, 'Z',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   ec = asio::error_code();
@@ -450,13 +462,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, 'Z',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
@@ -465,13 +477,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, 'Z',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
@@ -480,13 +492,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, 'Z',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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();
@@ -494,13 +506,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, 'Y',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -509,13 +521,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, 'Y',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -524,17 +536,25 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, 'Y',
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 }
 
 void test_string_async_read_until()
 {
+#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)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::streambuf sb1;
@@ -549,13 +569,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, "XYZ",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -564,13 +584,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, "XYZ",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -579,13 +599,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, "XYZ",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   ec = asio::error_code();
@@ -593,13 +613,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, "XYZ",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
@@ -608,13 +628,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, "XYZ",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
@@ -623,13 +643,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, "XYZ",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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();
@@ -637,13 +657,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, "WXY",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -652,13 +672,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, "WXY",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -667,17 +687,25 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, "WXY",
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 }
 
 void test_match_condition_async_read_until()
 {
+#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)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::streambuf sb1;
@@ -692,13 +720,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, match_char('Z'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -707,13 +735,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, match_char('Z'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -722,13 +750,13 @@
   called = false;
   sb1.consume(sb1.size());
   asio::async_read_until(s, sb1, match_char('Z'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 26);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 26);
 
   s.reset(read_data, sizeof(read_data));
   ec = asio::error_code();
@@ -736,13 +764,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, match_char('Z'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
@@ -751,13 +779,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, match_char('Z'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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);
@@ -766,13 +794,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, match_char('Z'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(ec == asio::error::not_found);
-  BOOST_CHECK(length == 0);
+  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();
@@ -780,13 +808,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, match_char('Y'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(1);
@@ -795,13 +823,13 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, match_char('Y'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 
   s.reset(read_data, sizeof(read_data));
   s.next_read_length(10);
@@ -810,23 +838,22 @@
   called = false;
   sb2.consume(sb2.size());
   asio::async_read_until(s, sb2, match_char('Y'),
-      boost::bind(async_read_handler, asio::placeholders::error, &ec,
-        asio::placeholders::bytes_transferred, &length, &called));
+      bindns::bind(async_read_handler, _1, &ec,
+        _2, &length, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(!ec);
-  BOOST_CHECK(length == 25);
+  ASIO_CHECK(called);
+  ASIO_CHECK(!ec);
+  ASIO_CHECK(length == 25);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("read_until");
-  test->add(BOOST_TEST_CASE(&test_char_read_until));
-  test->add(BOOST_TEST_CASE(&test_string_read_until));
-  test->add(BOOST_TEST_CASE(&test_match_condition_read_until));
-  test->add(BOOST_TEST_CASE(&test_char_async_read_until));
-  test->add(BOOST_TEST_CASE(&test_string_async_read_until));
-  test->add(BOOST_TEST_CASE(&test_match_condition_async_read_until));
-  return test;
-}
+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)
+)
diff --git a/asio/src/tests/unit/seq_packet_socket_service.cpp b/asio/src/tests/unit/seq_packet_socket_service.cpp
index 2df38a9..74fed29 100644
--- a/asio/src/tests/unit/seq_packet_socket_service.cpp
+++ b/asio/src/tests/unit/seq_packet_socket_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("seq_packet_socket_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "seq_packet_socket_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/serial_port.cpp b/asio/src/tests/unit/serial_port.cpp
index f2399c9..858f17a 100644
--- a/asio/src/tests/unit/serial_port.cpp
+++ b/asio/src/tests/unit/serial_port.cpp
@@ -137,9 +137,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("serial_port");
-  test->add(BOOST_TEST_CASE(&serial_port_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "serial_port",
+  ASIO_TEST_CASE(serial_port_compile::test)
+)
diff --git a/asio/src/tests/unit/serial_port_base.cpp b/asio/src/tests/unit/serial_port_base.cpp
index ecd077d..eee729b 100644
--- a/asio/src/tests/unit/serial_port_base.cpp
+++ b/asio/src/tests/unit/serial_port_base.cpp
@@ -92,9 +92,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("serial_port_base");
-  test->add(BOOST_TEST_CASE(&serial_port_base_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "serial_port_base",
+  ASIO_TEST_CASE(serial_port_base_compile::test)
+)
diff --git a/asio/src/tests/unit/serial_port_service.cpp b/asio/src/tests/unit/serial_port_service.cpp
index 4862b14..e61543b 100644
--- a/asio/src/tests/unit/serial_port_service.cpp
+++ b/asio/src/tests/unit/serial_port_service.cpp
@@ -19,9 +19,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("serial_port_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "serial_port_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/signal_set.cpp b/asio/src/tests/unit/signal_set.cpp
index 3e5aec7..ffc7bf4 100644
--- a/asio/src/tests/unit/signal_set.cpp
+++ b/asio/src/tests/unit/signal_set.cpp
@@ -78,9 +78,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("signal_set");
-  test->add(BOOST_TEST_CASE(&signal_set_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "signal_set",
+  ASIO_TEST_CASE(signal_set_compile::test)
+)
diff --git a/asio/src/tests/unit/signal_set_service.cpp b/asio/src/tests/unit/signal_set_service.cpp
index 861eff8..147e11b 100644
--- a/asio/src/tests/unit/signal_set_service.cpp
+++ b/asio/src/tests/unit/signal_set_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("signal_set_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "signal_set_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/socket_acceptor_service.cpp b/asio/src/tests/unit/socket_acceptor_service.cpp
index 75b3687..75a1cca 100644
--- a/asio/src/tests/unit/socket_acceptor_service.cpp
+++ b/asio/src/tests/unit/socket_acceptor_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("socket_acceptor_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "socket_acceptor_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/socket_base.cpp b/asio/src/tests/unit/socket_base.cpp
index 7aac38f..8eaff05 100644
--- a/asio/src/tests/unit/socket_base.cpp
+++ b/asio/src/tests/unit/socket_base.cpp
@@ -208,52 +208,52 @@
   // broadcast class.
 
   socket_base::broadcast broadcast1(true);
-  BOOST_CHECK(broadcast1.value());
-  BOOST_CHECK(static_cast<bool>(broadcast1));
-  BOOST_CHECK(!!broadcast1);
+  ASIO_CHECK(broadcast1.value());
+  ASIO_CHECK(static_cast<bool>(broadcast1));
+  ASIO_CHECK(!!broadcast1);
   udp_sock.set_option(broadcast1, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::broadcast broadcast2;
   udp_sock.get_option(broadcast2, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(broadcast2.value());
-  BOOST_CHECK(static_cast<bool>(broadcast2));
-  BOOST_CHECK(!!broadcast2);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(broadcast2.value());
+  ASIO_CHECK(static_cast<bool>(broadcast2));
+  ASIO_CHECK(!!broadcast2);
 
   socket_base::broadcast broadcast3(false);
-  BOOST_CHECK(!broadcast3.value());
-  BOOST_CHECK(!static_cast<bool>(broadcast3));
-  BOOST_CHECK(!broadcast3);
+  ASIO_CHECK(!broadcast3.value());
+  ASIO_CHECK(!static_cast<bool>(broadcast3));
+  ASIO_CHECK(!broadcast3);
   udp_sock.set_option(broadcast3, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::broadcast broadcast4;
   udp_sock.get_option(broadcast4, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(!broadcast4.value());
-  BOOST_CHECK(!static_cast<bool>(broadcast4));
-  BOOST_CHECK(!broadcast4);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(!broadcast4.value());
+  ASIO_CHECK(!static_cast<bool>(broadcast4));
+  ASIO_CHECK(!broadcast4);
 
   // debug class.
 
   socket_base::debug debug1(true);
-  BOOST_CHECK(debug1.value());
-  BOOST_CHECK(static_cast<bool>(debug1));
-  BOOST_CHECK(!!debug1);
+  ASIO_CHECK(debug1.value());
+  ASIO_CHECK(static_cast<bool>(debug1));
+  ASIO_CHECK(!!debug1);
   udp_sock.set_option(debug1, ec);
 #if defined(__linux__)
   // On Linux, only root can set SO_DEBUG.
   bool not_root = (ec == asio::error::access_denied);
-  BOOST_CHECK(!ec || not_root);
+  ASIO_CHECK(!ec || not_root);
   BOOST_WARN_MESSAGE(!ec, "Must be root to set debug socket option");
 #else // defined(__linux__)
 # if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 # else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 # endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 #endif // defined(__linux__)
 
@@ -261,35 +261,35 @@
   udp_sock.get_option(debug2, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 # if defined(__linux__)
-  BOOST_CHECK(debug2.value() || not_root);
-  BOOST_CHECK(static_cast<bool>(debug2) || not_root);
-  BOOST_CHECK(!!debug2 || not_root);
+  ASIO_CHECK(debug2.value() || not_root);
+  ASIO_CHECK(static_cast<bool>(debug2) || not_root);
+  ASIO_CHECK(!!debug2 || not_root);
 # else // defined(__linux__)
-  BOOST_CHECK(debug2.value());
-  BOOST_CHECK(static_cast<bool>(debug2));
-  BOOST_CHECK(!!debug2);
+  ASIO_CHECK(debug2.value());
+  ASIO_CHECK(static_cast<bool>(debug2));
+  ASIO_CHECK(!!debug2);
 # endif // defined(__linux__)
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   socket_base::debug debug3(false);
-  BOOST_CHECK(!debug3.value());
-  BOOST_CHECK(!static_cast<bool>(debug3));
-  BOOST_CHECK(!debug3);
+  ASIO_CHECK(!debug3.value());
+  ASIO_CHECK(!static_cast<bool>(debug3));
+  ASIO_CHECK(!debug3);
   udp_sock.set_option(debug3, ec);
 #if defined(__linux__)
-  BOOST_CHECK(!ec || not_root);
+  ASIO_CHECK(!ec || not_root);
 #else // defined(__linux__)
 # if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 # else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 # endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 #endif // defined(__linux__)
 
@@ -297,359 +297,358 @@
   udp_sock.get_option(debug4, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 # if defined(__linux__)
-  BOOST_CHECK(!debug4.value() || not_root);
-  BOOST_CHECK(!static_cast<bool>(debug4) || not_root);
-  BOOST_CHECK(!debug4 || not_root);
+  ASIO_CHECK(!debug4.value() || not_root);
+  ASIO_CHECK(!static_cast<bool>(debug4) || not_root);
+  ASIO_CHECK(!debug4 || not_root);
 # else // defined(__linux__)
-  BOOST_CHECK(!debug4.value());
-  BOOST_CHECK(!static_cast<bool>(debug4));
-  BOOST_CHECK(!debug4);
+  ASIO_CHECK(!debug4.value());
+  ASIO_CHECK(!static_cast<bool>(debug4));
+  ASIO_CHECK(!debug4);
 # endif // defined(__linux__)
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   // do_not_route class.
 
   socket_base::do_not_route do_not_route1(true);
-  BOOST_CHECK(do_not_route1.value());
-  BOOST_CHECK(static_cast<bool>(do_not_route1));
-  BOOST_CHECK(!!do_not_route1);
+  ASIO_CHECK(do_not_route1.value());
+  ASIO_CHECK(static_cast<bool>(do_not_route1));
+  ASIO_CHECK(!!do_not_route1);
   udp_sock.set_option(do_not_route1, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   socket_base::do_not_route do_not_route2;
   udp_sock.get_option(do_not_route2, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(do_not_route2.value());
-  BOOST_CHECK(static_cast<bool>(do_not_route2));
-  BOOST_CHECK(!!do_not_route2);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(do_not_route2.value());
+  ASIO_CHECK(static_cast<bool>(do_not_route2));
+  ASIO_CHECK(!!do_not_route2);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   socket_base::do_not_route do_not_route3(false);
-  BOOST_CHECK(!do_not_route3.value());
-  BOOST_CHECK(!static_cast<bool>(do_not_route3));
-  BOOST_CHECK(!do_not_route3);
+  ASIO_CHECK(!do_not_route3.value());
+  ASIO_CHECK(!static_cast<bool>(do_not_route3));
+  ASIO_CHECK(!do_not_route3);
   udp_sock.set_option(do_not_route3, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   socket_base::do_not_route do_not_route4;
   udp_sock.get_option(do_not_route4, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(!do_not_route4.value());
-  BOOST_CHECK(!static_cast<bool>(do_not_route4));
-  BOOST_CHECK(!do_not_route4);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(!do_not_route4.value());
+  ASIO_CHECK(!static_cast<bool>(do_not_route4));
+  ASIO_CHECK(!do_not_route4);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   // keep_alive class.
 
   socket_base::keep_alive keep_alive1(true);
-  BOOST_CHECK(keep_alive1.value());
-  BOOST_CHECK(static_cast<bool>(keep_alive1));
-  BOOST_CHECK(!!keep_alive1);
+  ASIO_CHECK(keep_alive1.value());
+  ASIO_CHECK(static_cast<bool>(keep_alive1));
+  ASIO_CHECK(!!keep_alive1);
   tcp_sock.set_option(keep_alive1, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::keep_alive keep_alive2;
   tcp_sock.get_option(keep_alive2, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(keep_alive2.value());
-  BOOST_CHECK(static_cast<bool>(keep_alive2));
-  BOOST_CHECK(!!keep_alive2);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(keep_alive2.value());
+  ASIO_CHECK(static_cast<bool>(keep_alive2));
+  ASIO_CHECK(!!keep_alive2);
 
   socket_base::keep_alive keep_alive3(false);
-  BOOST_CHECK(!keep_alive3.value());
-  BOOST_CHECK(!static_cast<bool>(keep_alive3));
-  BOOST_CHECK(!keep_alive3);
+  ASIO_CHECK(!keep_alive3.value());
+  ASIO_CHECK(!static_cast<bool>(keep_alive3));
+  ASIO_CHECK(!keep_alive3);
   tcp_sock.set_option(keep_alive3, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::keep_alive keep_alive4;
   tcp_sock.get_option(keep_alive4, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(!keep_alive4.value());
-  BOOST_CHECK(!static_cast<bool>(keep_alive4));
-  BOOST_CHECK(!keep_alive4);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(!keep_alive4.value());
+  ASIO_CHECK(!static_cast<bool>(keep_alive4));
+  ASIO_CHECK(!keep_alive4);
 
   // send_buffer_size class.
 
   socket_base::send_buffer_size send_buffer_size1(4096);
-  BOOST_CHECK(send_buffer_size1.value() == 4096);
+  ASIO_CHECK(send_buffer_size1.value() == 4096);
   tcp_sock.set_option(send_buffer_size1, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::send_buffer_size send_buffer_size2;
   tcp_sock.get_option(send_buffer_size2, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(send_buffer_size2.value() == 4096);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(send_buffer_size2.value() == 4096);
 
   socket_base::send_buffer_size send_buffer_size3(16384);
-  BOOST_CHECK(send_buffer_size3.value() == 16384);
+  ASIO_CHECK(send_buffer_size3.value() == 16384);
   tcp_sock.set_option(send_buffer_size3, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::send_buffer_size send_buffer_size4;
   tcp_sock.get_option(send_buffer_size4, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(send_buffer_size4.value() == 16384);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(send_buffer_size4.value() == 16384);
 
   // send_low_watermark class.
 
   socket_base::send_low_watermark send_low_watermark1(4096);
-  BOOST_CHECK(send_low_watermark1.value() == 4096);
+  ASIO_CHECK(send_low_watermark1.value() == 4096);
   tcp_sock.set_option(send_low_watermark1, ec);
 #if defined(WIN32) || defined(__linux__) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows, Linux or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows, Linux or Solaris.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif
 
   socket_base::send_low_watermark send_low_watermark2;
   tcp_sock.get_option(send_low_watermark2, ec);
 #if defined(WIN32) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows or Solaris.
 #elif defined(__linux__)
-  BOOST_CHECK(!ec); // Not supported on Linux but can get value.
+  ASIO_CHECK(!ec); // Not supported on Linux but can get value.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(send_low_watermark2.value() == 4096);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(send_low_watermark2.value() == 4096);
 #endif
 
   socket_base::send_low_watermark send_low_watermark3(8192);
-  BOOST_CHECK(send_low_watermark3.value() == 8192);
+  ASIO_CHECK(send_low_watermark3.value() == 8192);
   tcp_sock.set_option(send_low_watermark3, ec);
 #if defined(WIN32) || defined(__linux__) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows, Linux or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows, Linux or Solaris.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif
 
   socket_base::send_low_watermark send_low_watermark4;
   tcp_sock.get_option(send_low_watermark4, ec);
 #if defined(WIN32) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows or Solaris.
 #elif defined(__linux__)
-  BOOST_CHECK(!ec); // Not supported on Linux but can get value.
+  ASIO_CHECK(!ec); // Not supported on Linux but can get value.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(send_low_watermark4.value() == 8192);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(send_low_watermark4.value() == 8192);
 #endif
 
   // receive_buffer_size class.
 
   socket_base::receive_buffer_size receive_buffer_size1(4096);
-  BOOST_CHECK(receive_buffer_size1.value() == 4096);
+  ASIO_CHECK(receive_buffer_size1.value() == 4096);
   tcp_sock.set_option(receive_buffer_size1, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   socket_base::receive_buffer_size receive_buffer_size2;
   tcp_sock.get_option(receive_buffer_size2, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK(!ec); // Not supported under Windows CE but can get value.
+  ASIO_CHECK(!ec); // Not supported under Windows CE but can get value.
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(receive_buffer_size2.value() == 4096);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(receive_buffer_size2.value() == 4096);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   socket_base::receive_buffer_size receive_buffer_size3(16384);
-  BOOST_CHECK(receive_buffer_size3.value() == 16384);
+  ASIO_CHECK(receive_buffer_size3.value() == 16384);
   tcp_sock.set_option(receive_buffer_size3, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
   // Option is not supported under Windows CE.
-  BOOST_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
+  ASIO_CHECK_MESSAGE(ec == asio::error::no_protocol_option,
       ec.value() << ", " << ec.message());
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   socket_base::receive_buffer_size receive_buffer_size4;
   tcp_sock.get_option(receive_buffer_size4, ec);
 #if defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK(!ec); // Not supported under Windows CE but can get value.
+  ASIO_CHECK(!ec); // Not supported under Windows CE but can get value.
 #else // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(receive_buffer_size4.value() == 16384);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(receive_buffer_size4.value() == 16384);
 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
 
   // receive_low_watermark class.
 
   socket_base::receive_low_watermark receive_low_watermark1(4096);
-  BOOST_CHECK(receive_low_watermark1.value() == 4096);
+  ASIO_CHECK(receive_low_watermark1.value() == 4096);
   tcp_sock.set_option(receive_low_watermark1, ec);
 #if defined(WIN32) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows or Solaris.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif
 
   socket_base::receive_low_watermark receive_low_watermark2;
   tcp_sock.get_option(receive_low_watermark2, ec);
 #if defined(WIN32) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows or Solaris.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(receive_low_watermark2.value() == 4096);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(receive_low_watermark2.value() == 4096);
 #endif
 
   socket_base::receive_low_watermark receive_low_watermark3(8192);
-  BOOST_CHECK(receive_low_watermark3.value() == 8192);
+  ASIO_CHECK(receive_low_watermark3.value() == 8192);
   tcp_sock.set_option(receive_low_watermark3, ec);
 #if defined(WIN32) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows or Solaris.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 #endif
 
   socket_base::receive_low_watermark receive_low_watermark4;
   tcp_sock.get_option(receive_low_watermark4, ec);
 #if defined(WIN32) || defined(__sun)
-  BOOST_CHECK(!!ec); // Not supported on Windows or Solaris.
+  ASIO_CHECK(!!ec); // Not supported on Windows or Solaris.
 #else
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(receive_low_watermark4.value() == 8192);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(receive_low_watermark4.value() == 8192);
 #endif
 
   // reuse_address class.
 
   socket_base::reuse_address reuse_address1(true);
-  BOOST_CHECK(reuse_address1.value());
-  BOOST_CHECK(static_cast<bool>(reuse_address1));
-  BOOST_CHECK(!!reuse_address1);
+  ASIO_CHECK(reuse_address1.value());
+  ASIO_CHECK(static_cast<bool>(reuse_address1));
+  ASIO_CHECK(!!reuse_address1);
   udp_sock.set_option(reuse_address1, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::reuse_address reuse_address2;
   udp_sock.get_option(reuse_address2, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(reuse_address2.value());
-  BOOST_CHECK(static_cast<bool>(reuse_address2));
-  BOOST_CHECK(!!reuse_address2);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(reuse_address2.value());
+  ASIO_CHECK(static_cast<bool>(reuse_address2));
+  ASIO_CHECK(!!reuse_address2);
 
   socket_base::reuse_address reuse_address3(false);
-  BOOST_CHECK(!reuse_address3.value());
-  BOOST_CHECK(!static_cast<bool>(reuse_address3));
-  BOOST_CHECK(!reuse_address3);
+  ASIO_CHECK(!reuse_address3.value());
+  ASIO_CHECK(!static_cast<bool>(reuse_address3));
+  ASIO_CHECK(!reuse_address3);
   udp_sock.set_option(reuse_address3, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::reuse_address reuse_address4;
   udp_sock.get_option(reuse_address4, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(!reuse_address4.value());
-  BOOST_CHECK(!static_cast<bool>(reuse_address4));
-  BOOST_CHECK(!reuse_address4);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(!reuse_address4.value());
+  ASIO_CHECK(!static_cast<bool>(reuse_address4));
+  ASIO_CHECK(!reuse_address4);
 
   // linger class.
 
   socket_base::linger linger1(true, 60);
-  BOOST_CHECK(linger1.enabled());
-  BOOST_CHECK(linger1.timeout() == 60);
+  ASIO_CHECK(linger1.enabled());
+  ASIO_CHECK(linger1.timeout() == 60);
   tcp_sock.set_option(linger1, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::linger linger2;
   tcp_sock.get_option(linger2, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(linger2.enabled());
-  BOOST_CHECK(linger2.timeout() == 60);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(linger2.enabled());
+  ASIO_CHECK(linger2.timeout() == 60);
 
   socket_base::linger linger3(false, 0);
-  BOOST_CHECK(!linger3.enabled());
-  BOOST_CHECK(linger3.timeout() == 0);
+  ASIO_CHECK(!linger3.enabled());
+  ASIO_CHECK(linger3.timeout() == 0);
   tcp_sock.set_option(linger3, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::linger linger4;
   tcp_sock.get_option(linger4, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(!linger4.enabled());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(!linger4.enabled());
 
   // enable_connection_aborted class.
 
   socket_base::enable_connection_aborted enable_connection_aborted1(true);
-  BOOST_CHECK(enable_connection_aborted1.value());
-  BOOST_CHECK(static_cast<bool>(enable_connection_aborted1));
-  BOOST_CHECK(!!enable_connection_aborted1);
+  ASIO_CHECK(enable_connection_aborted1.value());
+  ASIO_CHECK(static_cast<bool>(enable_connection_aborted1));
+  ASIO_CHECK(!!enable_connection_aborted1);
   tcp_acceptor.set_option(enable_connection_aborted1, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::enable_connection_aborted enable_connection_aborted2;
   tcp_acceptor.get_option(enable_connection_aborted2, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(enable_connection_aborted2.value());
-  BOOST_CHECK(static_cast<bool>(enable_connection_aborted2));
-  BOOST_CHECK(!!enable_connection_aborted2);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(enable_connection_aborted2.value());
+  ASIO_CHECK(static_cast<bool>(enable_connection_aborted2));
+  ASIO_CHECK(!!enable_connection_aborted2);
 
   socket_base::enable_connection_aborted enable_connection_aborted3(false);
-  BOOST_CHECK(!enable_connection_aborted3.value());
-  BOOST_CHECK(!static_cast<bool>(enable_connection_aborted3));
-  BOOST_CHECK(!enable_connection_aborted3);
+  ASIO_CHECK(!enable_connection_aborted3.value());
+  ASIO_CHECK(!static_cast<bool>(enable_connection_aborted3));
+  ASIO_CHECK(!enable_connection_aborted3);
   tcp_acceptor.set_option(enable_connection_aborted3, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::enable_connection_aborted enable_connection_aborted4;
   tcp_acceptor.get_option(enable_connection_aborted4, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
-  BOOST_CHECK(!enable_connection_aborted4.value());
-  BOOST_CHECK(!static_cast<bool>(enable_connection_aborted4));
-  BOOST_CHECK(!enable_connection_aborted4);
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK(!enable_connection_aborted4.value());
+  ASIO_CHECK(!static_cast<bool>(enable_connection_aborted4));
+  ASIO_CHECK(!enable_connection_aborted4);
 
   // non_blocking_io class.
 
   socket_base::non_blocking_io non_blocking_io1(true);
   tcp_sock.io_control(non_blocking_io1, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   socket_base::non_blocking_io non_blocking_io2(false);
   tcp_sock.io_control(non_blocking_io2, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 
   // bytes_readable class.
 
   socket_base::bytes_readable bytes_readable;
   udp_sock.io_control(bytes_readable, ec);
-  BOOST_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
+  ASIO_CHECK_MESSAGE(!ec, ec.value() << ", " << ec.message());
 }
 
 } // namespace socket_base_runtime
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("socket_base");
-  test->add(BOOST_TEST_CASE(&socket_base_compile::test));
-  test->add(BOOST_TEST_CASE(&socket_base_runtime::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "socket_base",
+  ASIO_TEST_CASE(socket_base_compile::test)
+  ASIO_TEST_CASE(socket_base_runtime::test)
+)
diff --git a/asio/src/tests/unit/ssl/basic_context.cpp b/asio/src/tests/unit/ssl/basic_context.cpp
index 2077acf..c6e5ddb 100644
--- a/asio/src/tests/unit/ssl/basic_context.cpp
+++ b/asio/src/tests/unit/ssl/basic_context.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/basic_context");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/basic_context",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ssl/context.cpp b/asio/src/tests/unit/ssl/context.cpp
index 9132841..5fa4296 100644
--- a/asio/src/tests/unit/ssl/context.cpp
+++ b/asio/src/tests/unit/ssl/context.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/context");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/context",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ssl/context_base.cpp b/asio/src/tests/unit/ssl/context_base.cpp
index 7d51ff8..0e14aea 100644
--- a/asio/src/tests/unit/ssl/context_base.cpp
+++ b/asio/src/tests/unit/ssl/context_base.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/context_base");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/context_base",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ssl/context_service.cpp b/asio/src/tests/unit/ssl/context_service.cpp
index cd47c0d..d8385b1 100644
--- a/asio/src/tests/unit/ssl/context_service.cpp
+++ b/asio/src/tests/unit/ssl/context_service.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/context_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/context_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ssl/rfc2818_verification.cpp b/asio/src/tests/unit/ssl/rfc2818_verification.cpp
index c666a0d..e0828d9 100644
--- a/asio/src/tests/unit/ssl/rfc2818_verification.cpp
+++ b/asio/src/tests/unit/ssl/rfc2818_verification.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/rfc2818_verification");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/rfc2818_verification",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ssl/stream.cpp b/asio/src/tests/unit/ssl/stream.cpp
index f54712b..56a6bea 100644
--- a/asio/src/tests/unit/ssl/stream.cpp
+++ b/asio/src/tests/unit/ssl/stream.cpp
@@ -148,9 +148,8 @@
 
 //------------------------------------------------------------------------------
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/stream");
-  test->add(BOOST_TEST_CASE(&ssl_stream_compile::test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/stream",
+  ASIO_TEST_CASE(ssl_stream_compile::test)
+)
diff --git a/asio/src/tests/unit/ssl/stream_base.cpp b/asio/src/tests/unit/ssl/stream_base.cpp
index 6c193dc..9d03ab1 100644
--- a/asio/src/tests/unit/ssl/stream_base.cpp
+++ b/asio/src/tests/unit/ssl/stream_base.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/stream_base");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/stream_base",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/ssl/stream_service.cpp b/asio/src/tests/unit/ssl/stream_service.cpp
index 9a93c02..e734fa4 100644
--- a/asio/src/tests/unit/ssl/stream_service.cpp
+++ b/asio/src/tests/unit/ssl/stream_service.cpp
@@ -18,9 +18,8 @@
 
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("ssl/stream_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "ssl/stream_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/steady_timer.cpp b/asio/src/tests/unit/steady_timer.cpp
index 6f80a71..c9c562f 100644
--- a/asio/src/tests/unit/steady_timer.cpp
+++ b/asio/src/tests/unit/steady_timer.cpp
@@ -23,9 +23,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("steady_timer");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "steady_timer",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/strand.cpp b/asio/src/tests/unit/strand.cpp
index 989167a..f50c19c 100644
--- a/asio/src/tests/unit/strand.cpp
+++ b/asio/src/tests/unit/strand.cpp
@@ -17,14 +17,41 @@
 #include "asio/strand.hpp"
 
 #include <sstream>
-#include <boost/bind.hpp>
-#include "asio/deadline_timer.hpp"
 #include "asio/io_service.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)
+
+#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_STD_CHRONO)
+typedef steady_timer timer;
+namespace chronons = std::chrono;
+#elif defined(ASIO_HAS_BOOST_CHRONO)
+typedef steady_timer timer;
+namespace chronons = boost::chrono;
+#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
+
 void increment(int* count)
 {
   ++(*count);
@@ -34,27 +61,27 @@
 {
   int original_count = *count;
 
-  s->dispatch(boost::bind(increment, count));
+  s->dispatch(bindns::bind(increment, count));
 
   // No other functions are currently executing through the locking dispatcher,
   // so the previous call to dispatch should have successfully nested.
-  BOOST_CHECK(*count == original_count + 1);
+  ASIO_CHECK(*count == original_count + 1);
 }
 
 void increment_with_lock(strand* s, int* count)
 {
   int original_count = *count;
 
-  s->dispatch(boost::bind(increment, count));
+  s->dispatch(bindns::bind(increment, count));
 
   // The current function already holds the strand's lock, so the
   // previous call to dispatch should have successfully nested.
-  BOOST_CHECK(*count == original_count + 1);
+  ASIO_CHECK(*count == original_count + 1);
 }
 
 void sleep_increment(io_service* ios, int* count)
 {
-  deadline_timer t(*ios, boost::posix_time::seconds(2));
+  timer t(*ios, chronons::seconds(2));
   t.wait();
 
   ++(*count);
@@ -63,13 +90,13 @@
 void start_sleep_increments(io_service* ios, strand* s, int* count)
 {
   // Give all threads a chance to start.
-  deadline_timer t(*ios, boost::posix_time::seconds(2));
+  timer t(*ios, chronons::seconds(2));
   t.wait();
 
   // Start three increments.
-  s->post(boost::bind(sleep_increment, ios, count));
-  s->post(boost::bind(sleep_increment, ios, count));
-  s->post(boost::bind(sleep_increment, ios, count));
+  s->post(bindns::bind(sleep_increment, ios, count));
+  s->post(bindns::bind(sleep_increment, ios, count));
+  s->post(bindns::bind(sleep_increment, ios, count));
 }
 
 void throw_exception()
@@ -88,63 +115,63 @@
   strand s(ios);
   int count = 0;
 
-  ios.post(boost::bind(increment_without_lock, &s, &count));
+  ios.post(bindns::bind(increment_without_lock, &s, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(count == 1);
 
   count = 0;
   ios.reset();
-  s.post(boost::bind(increment_with_lock, &s, &count));
+  s.post(bindns::bind(increment_with_lock, &s, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
 
   ios.run();
 
   // The run() call will not return until all work has finished.
-  BOOST_CHECK(count == 1);
+  ASIO_CHECK(count == 1);
 
   count = 0;
   ios.reset();
-  ios.post(boost::bind(start_sleep_increments, &ios, &s, &count));
-  thread thread1(boost::bind(io_service_run, &ios));
-  thread thread2(boost::bind(io_service_run, &ios));
+  ios.post(bindns::bind(start_sleep_increments, &ios, &s, &count));
+  thread thread1(bindns::bind(io_service_run, &ios));
+  thread thread2(bindns::bind(io_service_run, &ios));
 
   // Check all events run one after another even though there are two threads.
-  deadline_timer timer1(ios, boost::posix_time::seconds(3));
+  timer timer1(ios, chronons::seconds(3));
   timer1.wait();
-  BOOST_CHECK(count == 0);
-  timer1.expires_at(timer1.expires_at() + boost::posix_time::seconds(2));
+  ASIO_CHECK(count == 0);
+  timer1.expires_at(timer1.expires_at() + chronons::seconds(2));
   timer1.wait();
-  BOOST_CHECK(count == 1);
-  timer1.expires_at(timer1.expires_at() + boost::posix_time::seconds(2));
+  ASIO_CHECK(count == 1);
+  timer1.expires_at(timer1.expires_at() + chronons::seconds(2));
   timer1.wait();
-  BOOST_CHECK(count == 2);
+  ASIO_CHECK(count == 2);
 
   thread1.join();
   thread2.join();
 
   // The run() calls will not return until all work has finished.
-  BOOST_CHECK(count == 3);
+  ASIO_CHECK(count == 3);
 
   count = 0;
   int exception_count = 0;
   ios.reset();
   s.post(throw_exception);
-  s.post(boost::bind(increment, &count));
-  s.post(boost::bind(increment, &count));
+  s.post(bindns::bind(increment, &count));
+  s.post(bindns::bind(increment, &count));
   s.post(throw_exception);
-  s.post(boost::bind(increment, &count));
+  s.post(bindns::bind(increment, &count));
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(count == 0);
-  BOOST_CHECK(exception_count == 0);
+  ASIO_CHECK(count == 0);
+  ASIO_CHECK(exception_count == 0);
 
   for (;;)
   {
@@ -160,8 +187,8 @@
   }
 
   // The run() calls will not return until all work has finished.
-  BOOST_CHECK(count == 3);
-  BOOST_CHECK(exception_count == 2);
+  ASIO_CHECK(count == 3);
+  ASIO_CHECK(exception_count == 2);
 
   count = 0;
   ios.reset();
@@ -170,18 +197,17 @@
   // are abandoned.
   {
     strand s2(ios);
-    s2.post(boost::bind(increment, &count));
-    s2.post(boost::bind(increment, &count));
-    s2.post(boost::bind(increment, &count));
+    s2.post(bindns::bind(increment, &count));
+    s2.post(bindns::bind(increment, &count));
+    s2.post(bindns::bind(increment, &count));
   }
 
   // No handlers can be called until run() is called.
-  BOOST_CHECK(count == 0);
+  ASIO_CHECK(count == 0);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("strand");
-  test->add(BOOST_TEST_CASE(&strand_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "strand",
+  ASIO_TEST_CASE(strand_test)
+)
diff --git a/asio/src/tests/unit/stream_socket_service.cpp b/asio/src/tests/unit/stream_socket_service.cpp
index 7dec23c..bd22aa5 100644
--- a/asio/src/tests/unit/stream_socket_service.cpp
+++ b/asio/src/tests/unit/stream_socket_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("stream_socket_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "stream_socket_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/streambuf.cpp b/asio/src/tests/unit/streambuf.cpp
index f11c4e8..d353c38 100644
--- a/asio/src/tests/unit/streambuf.cpp
+++ b/asio/src/tests/unit/streambuf.cpp
@@ -25,39 +25,38 @@
 
   sb.sputn("abcd", 4);
 
-  BOOST_CHECK(sb.size() == 4);
+  ASIO_CHECK(sb.size() == 4);
 
   for (int i = 0; i < 100; ++i)
   {
     sb.consume(3);
 
-    BOOST_CHECK(sb.size() == 1);
+    ASIO_CHECK(sb.size() == 1);
 
     char buf[1];
     sb.sgetn(buf, 1);
 
-    BOOST_CHECK(sb.size() == 0);
+    ASIO_CHECK(sb.size() == 0);
 
     sb.sputn("ab", 2);
 
-    BOOST_CHECK(sb.size() == 2);
+    ASIO_CHECK(sb.size() == 2);
 
     asio::buffer_copy(sb.prepare(10), asio::buffer("cd", 2));
     sb.commit(2);
 
-    BOOST_CHECK(sb.size() == 4);
+    ASIO_CHECK(sb.size() == 4);
   }
 
-  BOOST_CHECK(sb.size() == 4);
+  ASIO_CHECK(sb.size() == 4);
 
   sb.consume(4);
 
-  BOOST_CHECK(sb.size() == 0);
+  ASIO_CHECK(sb.size() == 0);
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("streambuf");
-  test->add(BOOST_TEST_CASE(&streambuf_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "streambuf",
+  ASIO_TEST_CASE(streambuf_test)
+)
diff --git a/asio/src/tests/unit/system_timer.cpp b/asio/src/tests/unit/system_timer.cpp
index 0a2fb1d..a20c08a 100644
--- a/asio/src/tests/unit/system_timer.cpp
+++ b/asio/src/tests/unit/system_timer.cpp
@@ -23,9 +23,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("system_timer");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "system_timer",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/thread.cpp b/asio/src/tests/unit/thread.cpp
index 5add4e8..e4f396a 100644
--- a/asio/src/tests/unit/thread.cpp
+++ b/asio/src/tests/unit/thread.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("thread");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "thread",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/time_traits.cpp b/asio/src/tests/unit/time_traits.cpp
index 8bffbb5..4732453 100644
--- a/asio/src/tests/unit/time_traits.cpp
+++ b/asio/src/tests/unit/time_traits.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("time_traits");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "time_traits",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/unit_test.cpp b/asio/src/tests/unit/unit_test.cpp
index 1d21438..7632006 100644
--- a/asio/src/tests/unit/unit_test.cpp
+++ b/asio/src/tests/unit/unit_test.cpp
@@ -9,10 +9,11 @@
 //
 
 #include "unit_test.hpp"
-#include <boost/version.hpp>
 
-#if (BOOST_VERSION < 104800)
-# include <boost/test/included/unit_test_framework.hpp>
-#else
-# include <boost/test/included/unit_test.hpp>
+#if !defined(ASIO_STANDALONE)
+# if (BOOST_VERSION < 104800)
+#  include <boost/test/included/unit_test_framework.hpp>
+# else
+#  include <boost/test/included/unit_test.hpp>
+# endif
 #endif
diff --git a/asio/src/tests/unit/unit_test.hpp b/asio/src/tests/unit/unit_test.hpp
index c1d469f..824d7bf 100644
--- a/asio/src/tests/unit/unit_test.hpp
+++ b/asio/src/tests/unit/unit_test.hpp
@@ -11,7 +11,7 @@
 #ifndef UNIT_TEST_HPP
 #define UNIT_TEST_HPP
 
-#include <boost/config.hpp>
+#include "asio/detail/config.hpp"
 
 #if defined(__sun)
 # include <stdlib.h> // Needed for lrand48.
@@ -28,18 +28,68 @@
 
 #endif // defined(__BORLANDC__)
 
-#if defined(BOOST_MSVC)
+#if defined(ASIO_MSVC)
 # pragma warning (push)
 # pragma warning (disable:4244)
 # pragma warning (disable:4702)
-#endif // defined(BOOST_MSVC)
+#endif // defined(ASIO_MSVC)
+
+#if defined(ASIO_STANDALONE)
+
+#include <cassert>
+#include <iostream>
+
+#if defined(NDEBUG)
+# error NDEBUG must not be defined when building these unit tests
+#endif // defined(NDEBUG)
+
+#define ASIO_CHECK(expr) assert(expr)
+
+#define ASIO_CHECK_MESSAGE(expr, message) \
+  do { if (!(expr)) { std::cout << message << std::endl; assert(expr); } } while (0)
+
+#define ASIO_ERROR(message) assert(0 && message)
+
+#define ASIO_TEST_SUITE(name, tests) \
+  int main() \
+  { \
+    std::cout << name << " test suite begins" << std::endl; \
+    tests \
+    std::cout << name << " test suite ends" << std::endl; \
+    return 0; \
+  }
+
+#define ASIO_TEST_CASE(test) \
+  test(); \
+  std::cout << #test << " passed" << std::endl;
+
+#else // defined(ASIO_STANDALONE)
 
 #include <boost/test/unit_test.hpp>
 using boost::unit_test::test_suite;
 
-#if defined(BOOST_MSVC)
+#define ASIO_CHECK(expr) BOOST_CHECK(expr)
+
+#define ASIO_CHECK_MESSAGE(expr, msg) BOOST_CHECK_MESSAGE(expr, msg)
+
+#define ASIO_ERROR(expr) BOOST_ERROR(expr)
+
+#define ASIO_TEST_SUITE(name, tests) \
+  test_suite* init_unit_test_suite(int, char*[]) \
+  { \
+    test_suite* t = BOOST_TEST_SUITE(name); \
+    tests \
+    return t; \
+  }
+
+#define ASIO_TEST_CASE(test) \
+  t->add(BOOST_TEST_CASE(&test));
+
+#endif // defined(ASIO_STANDALONE)
+
+#if defined(ASIO_MSVC)
 # pragma warning (pop)
-#endif // defined(BOOST_MSVC)
+#endif // defined(ASIO_MSVC)
 
 inline void null_test()
 {
diff --git a/asio/src/tests/unit/wait_traits.cpp b/asio/src/tests/unit/wait_traits.cpp
index 2891765..f693954 100644
--- a/asio/src/tests/unit/wait_traits.cpp
+++ b/asio/src/tests/unit/wait_traits.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("wait_traits");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "wait_traits",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/waitable_timer_service.cpp b/asio/src/tests/unit/waitable_timer_service.cpp
index aff2206..ee2b06d 100644
--- a/asio/src/tests/unit/waitable_timer_service.cpp
+++ b/asio/src/tests/unit/waitable_timer_service.cpp
@@ -18,9 +18,8 @@
 
 #include "unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("waitable_timer_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "waitable_timer_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/windows/basic_handle.cpp b/asio/src/tests/unit/windows/basic_handle.cpp
index fd5bbc9..977b01f 100644
--- a/asio/src/tests/unit/windows/basic_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_handle.cpp
@@ -19,9 +19,8 @@
 #include "asio.hpp"
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/basic_handle");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "windows/basic_handle",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/windows/basic_object_handle.cpp b/asio/src/tests/unit/windows/basic_object_handle.cpp
index bea5c3f..abf46ff 100644
--- a/asio/src/tests/unit/windows/basic_object_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_object_handle.cpp
@@ -19,9 +19,8 @@
 #include "asio.hpp"
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/basic_object_handle");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "windows/basic_object_handle",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/windows/basic_random_access_handle.cpp b/asio/src/tests/unit/windows/basic_random_access_handle.cpp
index 0db24c4..75d08de 100644
--- a/asio/src/tests/unit/windows/basic_random_access_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_random_access_handle.cpp
@@ -19,9 +19,8 @@
 #include "asio.hpp"
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/basic_random_access_handle");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "windows/basic_random_access_handle",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/windows/basic_stream_handle.cpp b/asio/src/tests/unit/windows/basic_stream_handle.cpp
index e12b32d..7be7bb1 100644
--- a/asio/src/tests/unit/windows/basic_stream_handle.cpp
+++ b/asio/src/tests/unit/windows/basic_stream_handle.cpp
@@ -19,9 +19,8 @@
 #include "asio.hpp"
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/basic_stream_handle");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "windows/basic_stream_handle",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/windows/object_handle.cpp b/asio/src/tests/unit/windows/object_handle.cpp
index be37b77..9d0d08d 100644
--- a/asio/src/tests/unit/windows/object_handle.cpp
+++ b/asio/src/tests/unit/windows/object_handle.cpp
@@ -109,9 +109,9 @@
 } // namespace windows_object_handle_compile
 
 //------------------------------------------------------------------------------
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/object_handle");
-  test->add(BOOST_TEST_CASE(&windows_object_handle_compile::test));
-  return test;
-}
+
+ASIO_TEST_SUITE
+(
+  "windows/object_handle",
+  ASIO_TEST_CASE(windows_object_handle_compile::test)
+)
diff --git a/asio/src/tests/unit/windows/object_handle_service.cpp b/asio/src/tests/unit/windows/object_handle_service.cpp
index 891da12..10a069b 100644
--- a/asio/src/tests/unit/windows/object_handle_service.cpp
+++ b/asio/src/tests/unit/windows/object_handle_service.cpp
@@ -19,9 +19,8 @@
 #include "asio.hpp"
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/object_handle_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "windows/object_handle_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/windows/overlapped_ptr.cpp b/asio/src/tests/unit/windows/overlapped_ptr.cpp
index 22fb444..757893f 100644
--- a/asio/src/tests/unit/windows/overlapped_ptr.cpp
+++ b/asio/src/tests/unit/windows/overlapped_ptr.cpp
@@ -87,9 +87,9 @@
 } // namespace windows_overlapped_ptr_compile
 
 //------------------------------------------------------------------------------
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/overlapped_ptr");
-  test->add(BOOST_TEST_CASE(&windows_overlapped_ptr_compile::test));
-  return test;
-}
+
+ASIO_TEST_SUITE
+(
+  "windows/overlapped_ptr",
+  ASIO_TEST_CASE(windows_overlapped_ptr_compile::test)
+)
diff --git a/asio/src/tests/unit/windows/random_access_handle.cpp b/asio/src/tests/unit/windows/random_access_handle.cpp
index 14972d5..b7f4eb1 100644
--- a/asio/src/tests/unit/windows/random_access_handle.cpp
+++ b/asio/src/tests/unit/windows/random_access_handle.cpp
@@ -130,9 +130,9 @@
 } // namespace windows_random_access_handle_compile
 
 //------------------------------------------------------------------------------
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/random_access_handle");
-  test->add(BOOST_TEST_CASE(&windows_random_access_handle_compile::test));
-  return test;
-}
+
+ASIO_TEST_SUITE
+(
+  "windows/random_access_handle",
+  ASIO_TEST_CASE(windows_random_access_handle_compile::test)
+)
diff --git a/asio/src/tests/unit/windows/random_access_handle_service.cpp b/asio/src/tests/unit/windows/random_access_handle_service.cpp
index 79be33d..2a031f1 100644
--- a/asio/src/tests/unit/windows/random_access_handle_service.cpp
+++ b/asio/src/tests/unit/windows/random_access_handle_service.cpp
@@ -19,9 +19,8 @@
 #include "asio.hpp"
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/random_access_handle_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "windows/random_access_handle_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/windows/stream_handle.cpp b/asio/src/tests/unit/windows/stream_handle.cpp
index 1c88318..a5690c7 100644
--- a/asio/src/tests/unit/windows/stream_handle.cpp
+++ b/asio/src/tests/unit/windows/stream_handle.cpp
@@ -126,9 +126,9 @@
 } // namespace windows_stream_handle_compile
 
 //------------------------------------------------------------------------------
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/stream_handle");
-  test->add(BOOST_TEST_CASE(&windows_stream_handle_compile::test));
-  return test;
-}
+
+ASIO_TEST_SUITE
+(
+  "windows/stream_handle",
+  ASIO_TEST_CASE(windows_stream_handle_compile::test)
+)
diff --git a/asio/src/tests/unit/windows/stream_handle_service.cpp b/asio/src/tests/unit/windows/stream_handle_service.cpp
index 22b232f..7db71eb 100644
--- a/asio/src/tests/unit/windows/stream_handle_service.cpp
+++ b/asio/src/tests/unit/windows/stream_handle_service.cpp
@@ -19,9 +19,8 @@
 #include "asio.hpp"
 #include "../unit_test.hpp"
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("windows/stream_handle_service");
-  test->add(BOOST_TEST_CASE(&null_test));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "windows/stream_handle_service",
+  ASIO_TEST_CASE(null_test)
+)
diff --git a/asio/src/tests/unit/write.cpp b/asio/src/tests/unit/write.cpp
index 099e466..83e89e2 100644
--- a/asio/src/tests/unit/write.cpp
+++ b/asio/src/tests/unit/write.cpp
@@ -16,22 +16,28 @@
 // Test that header file is self-contained.
 #include "asio/write.hpp"
 
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-#include <boost/array.hpp>
-#include <boost/bind.hpp>
-#include <boost/noncopyable.hpp>
 #include <cstring>
 #include <vector>
 #include "asio/io_service.hpp"
-#include "asio/placeholders.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
-  : private boost::noncopyable
 {
 public:
   typedef asio::io_service io_service_type;
@@ -52,7 +58,7 @@
 
   void reset(size_t length = max_length)
   {
-    BOOST_CHECK(length <= max_length);
+    ASIO_CHECK(length <= max_length);
 
     memset(data_, 0, max_length);
     length_ = length;
@@ -134,7 +140,7 @@
   std::vector<asio::const_buffer> buffers;
 
   size_t bytes_transferred = asio::write(s, buffers);
-  BOOST_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(bytes_transferred == 0);
 }
 
 void test_2_arg_const_buffers_1_write()
@@ -146,20 +152,20 @@
 
   s.reset();
   size_t bytes_transferred = asio::write(s, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
 void test_2_arg_mutable_buffers_1_write()
@@ -171,20 +177,20 @@
 
   s.reset();
   size_t bytes_transferred = asio::write(s, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 }
 
 void test_2_arg_vector_buffers_write()
@@ -197,20 +203,20 @@
 
   s.reset();
   size_t bytes_transferred = asio::write(s, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
 void test_3_arg_nothrow_zero_buffers_write()
@@ -221,8 +227,8 @@
 
   asio::error_code error;
   size_t bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == 0);
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 0);
+  ASIO_CHECK(!error);
 }
 
 void test_3_arg_nothrow_const_buffers_1_write()
@@ -235,23 +241,23 @@
   s.reset();
   asio::error_code error;
   size_t bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_3_arg_nothrow_mutable_buffers_1_write()
@@ -264,23 +270,23 @@
   s.reset();
   asio::error_code error;
   size_t bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_3_arg_nothrow_vector_buffers_write()
@@ -294,23 +300,23 @@
   s.reset();
   asio::error_code error;
   size_t bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!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,
@@ -335,176 +341,176 @@
   s.reset();
   size_t bytes_transferred = asio::write(s, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
 void test_3_arg_mutable_buffers_1_write()
@@ -517,176 +523,176 @@
   s.reset();
   size_t bytes_transferred = asio::write(s, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 }
 
 void test_3_arg_vector_buffers_write()
@@ -700,176 +706,176 @@
   s.reset();
   size_t bytes_transferred = asio::write(s, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
 void test_4_arg_const_buffers_1_write()
@@ -883,230 +889,230 @@
   asio::error_code error;
   size_t bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_mutable_buffers_1_write()
@@ -1120,230 +1126,230 @@
   asio::error_code error;
   size_t bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_vector_buffers_write()
@@ -1358,242 +1364,250 @@
   asio::error_code error;
   size_t bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write(s, buffers, short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 }
 
 void async_write_handler(const asio::error_code& e,
     size_t bytes_transferred, size_t expected_bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(!e);
-  BOOST_CHECK(bytes_transferred == expected_bytes_transferred);
+  ASIO_CHECK(!e);
+  ASIO_CHECK(bytes_transferred == expected_bytes_transferred);
 }
 
 void test_3_arg_const_buffers_1_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)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::const_buffers_1 buffers
@@ -1602,44 +1616,46 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
 void test_3_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::mutable_buffers_1 buffers
@@ -1648,44 +1664,47 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
   boost::array<asio::const_buffer, 2> buffers = { {
@@ -1695,44 +1714,47 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
@@ -1743,45 +1765,47 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  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)
+
   asio::io_service ios;
   test_stream s(ios);
   std::vector<asio::const_buffer> buffers;
@@ -1791,44 +1815,46 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
 void test_4_arg_const_buffers_1_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)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::const_buffers_1 buffers
@@ -1837,348 +1863,302 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
 void test_4_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_stream s(ios);
   asio::mutable_buffers_1 buffers
@@ -2187,348 +2167,303 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(mutable_write_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
   boost::array<asio::const_buffer, 2> buffers = { {
@@ -2538,348 +2473,303 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_stream s(ios);
@@ -2890,349 +2780,303 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  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)
+
   asio::io_service ios;
   test_stream s(ios);
   std::vector<asio::const_buffer> buffers;
@@ -3242,372 +3086,317 @@
   s.reset();
   bool called = false;
   asio::async_write(s, buffers, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write(s, buffers, asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write(s, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  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,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(buffers, sizeof(write_data)));
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("write");
-  test->add(BOOST_TEST_CASE(&test_2_arg_zero_buffers_write));
-  test->add(BOOST_TEST_CASE(&test_2_arg_const_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_2_arg_mutable_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_2_arg_vector_buffers_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_zero_buffers_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_const_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_mutable_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_nothrow_vector_buffers_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_const_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_mutable_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_vector_buffers_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_const_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_const_buffers_1_async_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_mutable_buffers_1_async_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_boost_array_buffers_async_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_std_array_buffers_async_write));
-  test->add(BOOST_TEST_CASE(&test_3_arg_vector_buffers_async_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_const_buffers_1_async_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_async_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_boost_array_buffers_async_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_std_array_buffers_async_write));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_async_write));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "write",
+  ASIO_TEST_CASE(test_2_arg_zero_buffers_write)
+  ASIO_TEST_CASE(test_2_arg_const_buffers_1_write)
+  ASIO_TEST_CASE(test_2_arg_mutable_buffers_1_write)
+  ASIO_TEST_CASE(test_2_arg_vector_buffers_write)
+  ASIO_TEST_CASE(test_3_arg_nothrow_zero_buffers_write)
+  ASIO_TEST_CASE(test_3_arg_nothrow_const_buffers_1_write)
+  ASIO_TEST_CASE(test_3_arg_nothrow_mutable_buffers_1_write)
+  ASIO_TEST_CASE(test_3_arg_nothrow_vector_buffers_write)
+  ASIO_TEST_CASE(test_3_arg_const_buffers_1_write)
+  ASIO_TEST_CASE(test_3_arg_mutable_buffers_1_write)
+  ASIO_TEST_CASE(test_3_arg_vector_buffers_write)
+  ASIO_TEST_CASE(test_4_arg_const_buffers_1_write)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_write)
+  ASIO_TEST_CASE(test_4_arg_vector_buffers_write)
+  ASIO_TEST_CASE(test_3_arg_const_buffers_1_async_write)
+  ASIO_TEST_CASE(test_3_arg_mutable_buffers_1_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_4_arg_const_buffers_1_async_write)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_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)
+)
diff --git a/asio/src/tests/unit/write_at.cpp b/asio/src/tests/unit/write_at.cpp
index 1ef6382..96e595f 100644
--- a/asio/src/tests/unit/write_at.cpp
+++ b/asio/src/tests/unit/write_at.cpp
@@ -16,21 +16,27 @@
 // Test that header file is self-contained.
 #include "asio/write_at.hpp"
 
+#include <cstring>
+#include "asio/io_service.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)
-#include <boost/array.hpp>
-#include <boost/bind.hpp>
-#include <boost/noncopyable.hpp>
-#include <cstring>
-#include "asio/io_service.hpp"
-#include "asio/placeholders.hpp"
-#include "unit_test.hpp"
 
 using namespace std; // For memcmp, memcpy and memset.
 
 class test_random_access_device
-  : private boost::noncopyable
 {
 public:
   typedef asio::io_service io_service_type;
@@ -131,37 +137,37 @@
 
   s.reset();
   size_t bytes_transferred = asio::write_at(s, 0, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 }
 
 void test_3_arg_mutable_buffers_1_write_at()
@@ -173,37 +179,37 @@
 
   s.reset();
   size_t bytes_transferred = asio::write_at(s, 0, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 }
 
 void test_3_arg_vector_buffers_write_at()
@@ -216,37 +222,37 @@
 
   s.reset();
   size_t bytes_transferred = asio::write_at(s, 0, buffers);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 }
 
 void test_4_arg_nothrow_const_buffers_1_write_at()
@@ -259,43 +265,43 @@
   s.reset();
   asio::error_code error;
   size_t bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_nothrow_mutable_buffers_1_write_at()
@@ -308,43 +314,43 @@
   s.reset();
   asio::error_code error;
   size_t bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_4_arg_nothrow_vector_buffers_write_at()
@@ -358,43 +364,43 @@
   s.reset();
   asio::error_code error;
   size_t bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 }
 
 bool old_style_transfer_all(const asio::error_code& ec,
@@ -419,356 +425,356 @@
   s.reset();
   size_t bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 }
 
 void test_4_arg_mutable_buffers_1_write_at()
@@ -781,356 +787,356 @@
   s.reset();
   size_t bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 }
 
 void test_4_arg_vector_buffers_write_at()
@@ -1144,356 +1150,356 @@
   s.reset();
   size_t bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_all());
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42));
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1));
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10));
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42));
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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,
       old_style_transfer_all);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers, short_transfer);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 }
 
 void test_5_arg_const_buffers_1_write_at()
@@ -1507,464 +1513,464 @@
   asio::error_code error;
   size_t bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_5_arg_mutable_buffers_1_write_at()
@@ -1978,464 +1984,464 @@
   asio::error_code error;
   size_t bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!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();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(mutable_write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(mutable_write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(!error);
 }
 
 void test_5_arg_vector_buffers_write_at()
@@ -2450,476 +2456,484 @@
   asio::error_code error;
   size_t bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_all(), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(1), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_at_least(42), error);
-  BOOST_CHECK(bytes_transferred == 50);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 50);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(1), error);
-  BOOST_CHECK(bytes_transferred == 1);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 1);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(10), error);
-  BOOST_CHECK(bytes_transferred == 10);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 10);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       asio::transfer_exactly(42), error);
-  BOOST_CHECK(bytes_transferred == 42);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == 42);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       old_style_transfer_all, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!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);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(1);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 0, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 
   s.reset();
   s.next_write_length(10);
   error = asio::error_code();
   bytes_transferred = asio::write_at(s, 1234, buffers,
       short_transfer, error);
-  BOOST_CHECK(bytes_transferred == sizeof(write_data));
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
-  BOOST_CHECK(!error);
+  ASIO_CHECK(bytes_transferred == sizeof(write_data));
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(!error);
 }
 
 void async_write_handler(const asio::error_code& e,
     size_t bytes_transferred, size_t expected_bytes_transferred, bool* called)
 {
   *called = true;
-  BOOST_CHECK(!e);
-  BOOST_CHECK(bytes_transferred == expected_bytes_transferred);
+  ASIO_CHECK(!e);
+  ASIO_CHECK(bytes_transferred == expected_bytes_transferred);
 }
 
 void test_4_arg_const_buffers_1_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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   asio::const_buffers_1 buffers
@@ -2928,94 +2942,88 @@
   s.reset();
   bool called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 }
 
 void test_4_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   asio::mutable_buffers_1 buffers
@@ -3024,94 +3032,89 @@
   s.reset();
   bool called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
   boost::array<asio::const_buffer, 2> buffers = { {
@@ -3121,94 +3124,89 @@
   s.reset();
   bool called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
@@ -3219,95 +3217,89 @@
   s.reset();
   bool called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   std::vector<asio::const_buffer> buffers;
@@ -3317,94 +3309,88 @@
   s.reset();
   bool called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 }
 
 void test_5_arg_const_buffers_1_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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   asio::const_buffers_1 buffers
@@ -3414,731 +3400,631 @@
   bool called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 }
 
 void test_5_arg_mutable_buffers_1_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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   asio::mutable_buffers_1 buffers
@@ -4148,731 +4034,632 @@
   bool called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(mutable_write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(mutable_write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(mutable_write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(mutable_write_data)));
 }
 
 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)
+
+#if defined(ASIO_HAS_BOOST_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
   boost::array<asio::const_buffer, 2> buffers = { {
@@ -4883,731 +4670,632 @@
   bool called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+#endif // defined(ASIO_HAS_BOOST_ARRAY)
 }
 
 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)
+
 #if defined(ASIO_HAS_STD_ARRAY)
   asio::io_service ios;
   test_random_access_device s(ios);
@@ -5619,732 +5307,632 @@
   bool called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, 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)
+
   asio::io_service ios;
   test_random_access_device s(ios);
   std::vector<asio::const_buffer> buffers;
@@ -6355,753 +5943,644 @@
   bool called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_all(),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 50));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_at_least(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        50, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 50, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 50));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 50));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 1));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(1),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        1, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 1, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 1));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 1));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 10));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(10),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        10, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 10, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 10));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 10));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, 42));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers,
       asio::transfer_exactly(42),
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        42, &called));
+      bindns::bind(async_write_handler,
+        _1, _2, 42, &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, 42));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, 42));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, old_style_transfer_all,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(1);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 0, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(0, buffers, sizeof(write_data)));
 
   s.reset();
   s.next_write_length(10);
   called = false;
   asio::async_write_at(s, 1234, buffers, short_transfer,
-      boost::bind(async_write_handler,
-        asio::placeholders::error,
-        asio::placeholders::bytes_transferred,
-        sizeof(write_data), &called));
+      bindns::bind(async_write_handler,
+        _1, _2, sizeof(write_data), &called));
   ios.reset();
   ios.run();
-  BOOST_CHECK(called);
-  BOOST_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
+  ASIO_CHECK(called);
+  ASIO_CHECK(s.check_buffers(1234, buffers, sizeof(write_data)));
 }
 
-test_suite* init_unit_test_suite(int, char*[])
-{
-  test_suite* test = BOOST_TEST_SUITE("write_at");
-  test->add(BOOST_TEST_CASE(&test_3_arg_const_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_3_arg_mutable_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_3_arg_vector_buffers_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_nothrow_const_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_nothrow_mutable_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_nothrow_vector_buffers_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_const_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_const_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_mutable_buffers_1_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_vector_buffers_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_const_buffers_1_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_mutable_buffers_1_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_boost_array_buffers_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_std_array_buffers_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_4_arg_vector_buffers_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_const_buffers_1_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_mutable_buffers_1_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_boost_array_buffers_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_std_array_buffers_async_write_at));
-  test->add(BOOST_TEST_CASE(&test_5_arg_vector_buffers_async_write_at));
-  return test;
-}
+ASIO_TEST_SUITE
+(
+  "write_at",
+  ASIO_TEST_CASE(test_3_arg_const_buffers_1_write_at)
+  ASIO_TEST_CASE(test_3_arg_mutable_buffers_1_write_at)
+  ASIO_TEST_CASE(test_3_arg_vector_buffers_write_at)
+  ASIO_TEST_CASE(test_4_arg_nothrow_const_buffers_1_write_at)
+  ASIO_TEST_CASE(test_4_arg_nothrow_mutable_buffers_1_write_at)
+  ASIO_TEST_CASE(test_4_arg_nothrow_vector_buffers_write_at)
+  ASIO_TEST_CASE(test_4_arg_const_buffers_1_write_at)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_write_at)
+  ASIO_TEST_CASE(test_4_arg_vector_buffers_write_at)
+  ASIO_TEST_CASE(test_5_arg_const_buffers_1_write_at)
+  ASIO_TEST_CASE(test_5_arg_mutable_buffers_1_write_at)
+  ASIO_TEST_CASE(test_5_arg_vector_buffers_write_at)
+  ASIO_TEST_CASE(test_4_arg_const_buffers_1_async_write_at)
+  ASIO_TEST_CASE(test_4_arg_mutable_buffers_1_async_write_at)
+  ASIO_TEST_CASE(test_4_arg_boost_array_buffers_async_write_at)
+  ASIO_TEST_CASE(test_4_arg_std_array_buffers_async_write_at)
+  ASIO_TEST_CASE(test_4_arg_vector_buffers_async_write_at)
+  ASIO_TEST_CASE(test_5_arg_const_buffers_1_async_write_at)
+  ASIO_TEST_CASE(test_5_arg_mutable_buffers_1_async_write_at)
+  ASIO_TEST_CASE(test_5_arg_boost_array_buffers_async_write_at)
+  ASIO_TEST_CASE(test_5_arg_std_array_buffers_async_write_at)
+  ASIO_TEST_CASE(test_5_arg_vector_buffers_async_write_at)
+)