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