remove_reference is not needed in async_completion constructor.
diff --git a/asio/include/asio/async_result.hpp b/asio/include/asio/async_result.hpp index d835761..12ccd1e 100644 --- a/asio/include/asio/async_result.hpp +++ b/asio/include/asio/async_result.hpp
@@ -66,7 +66,7 @@ */ #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION) explicit async_completion( - typename remove_reference<Handler>::type& orig_handler) + Handler& orig_handler) : handler(static_cast<typename conditional< is_same<Handler, handler_type>::value, handler_type&, Handler&&>::type>(orig_handler)),