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));