Use the workaround syntax for specifying a return type with boost::bind.
Needed for the SSL support to work on some older compilers (in particular,
g++ 3.4.5 as used with MinGW).
diff --git a/asio/include/asio/ssl/detail/openssl_stream_service.hpp b/asio/include/asio/ssl/detail/openssl_stream_service.hpp
index a393a50..3bf939f 100644
--- a/asio/include/asio/ssl/detail/openssl_stream_service.hpp
+++ b/asio/include/asio/ssl/detail/openssl_stream_service.hpp
@@ -336,7 +336,7 @@
         buffer_size = max_buffer_size;
 
       boost::function<int (SSL*)> send_func =
-        boost::bind<int>(&::SSL_write, boost::arg<1>(),  
+        boost::bind(boost::type<int>(), &::SSL_write, boost::arg<1>(),  
             asio::buffer_cast<const void*>(*buffers.begin()),
             static_cast<int>(buffer_size));
       openssl_operation<Stream> op(
@@ -372,7 +372,7 @@
       buffer_size = max_buffer_size;
 
     boost::function<int (SSL*)> send_func =
-      boost::bind<int>(&::SSL_write, boost::arg<1>(),
+      boost::bind(boost::type<int>(), &::SSL_write, boost::arg<1>(),
           asio::buffer_cast<const void*>(*buffers.begin()),
           static_cast<int>(buffer_size));
 
@@ -410,7 +410,7 @@
         buffer_size = max_buffer_size;
 
       boost::function<int (SSL*)> recv_func =
-        boost::bind<int>(&::SSL_read, boost::arg<1>(),
+        boost::bind(boost::type<int>(), &::SSL_read, boost::arg<1>(),
             asio::buffer_cast<void*>(*buffers.begin()),
             static_cast<int>(buffer_size));
       openssl_operation<Stream> op(recv_func,
@@ -446,7 +446,7 @@
       buffer_size = max_buffer_size;
 
     boost::function<int (SSL*)> recv_func =
-      boost::bind<int>(&::SSL_read, boost::arg<1>(),
+      boost::bind(boost::type<int>(), &::SSL_read, boost::arg<1>(),
           asio::buffer_cast<void*>(*buffers.begin()),
           static_cast<int>(buffer_size));