diff --git a/asio/include/asio/buffer.hpp b/asio/include/asio/buffer.hpp
index b2da915..e5f3a72 100644
--- a/asio/include/asio/buffer.hpp
+++ b/asio/include/asio/buffer.hpp
@@ -1360,6 +1360,8 @@
    * sequence. The object stores a reference to the string and the user is
    * responsible for ensuring that the string object remains valid until the
    * dynamic_string_buffer object is destroyed.
+   *
+   * @param maximum_size Specifies a maximum size for the buffer, in bytes.
    */
   explicit dynamic_string_buffer(std::basic_string<Elem, Traits, Allocator>& s,
       std::size_t maximum_size = (std::numeric_limits<std::size_t>::max)())
@@ -1503,11 +1505,13 @@
 
   /// Construct a dynamic buffer from a string.
   /**
-   * @param s The string to be used as backing storage for the dynamic buffer.
-   * Any existing data in the string is treated as the dynamic buffer's input
-   * sequence. The object stores a reference to the string and the user is
-   * responsible for ensuring that the string object remains valid until the
+   * @param v The vector to be used as backing storage for the dynamic buffer.
+   * Any existing data in the vector is treated as the dynamic buffer's input
+   * sequence. The object stores a reference to the vector and the user is
+   * responsible for ensuring that the vector object remains valid until the
    * dynamic_vector_buffer object is destroyed.
+   *
+   * @param maximum_size Specifies a maximum size for the buffer, in bytes.
    */
   explicit dynamic_vector_buffer(std::vector<Elem, Allocator>& v,
       std::size_t maximum_size = (std::numeric_limits<std::size_t>::max)())
diff --git a/asio/include/asio/execution_context.hpp b/asio/include/asio/execution_context.hpp
index 060e2d6..0666917 100644
--- a/asio/include/asio/execution_context.hpp
+++ b/asio/include/asio/execution_context.hpp
@@ -212,7 +212,7 @@
    * given service type. If there is no existing implementation of the service,
    * then the io_service will create a new instance of the service.
    *
-   * @param i The io_service object that owns the service.
+   * @param ios The io_service object that owns the service.
    *
    * @return The service interface implementing the specified service type.
    * Ownership of the service interface is not transferred to the caller.
@@ -221,7 +221,7 @@
    * that inherit from io_service::service.
    */
   template <typename Service>
-  friend Service& use_service(io_service& i);
+  friend Service& use_service(io_service& ios);
 
 #if defined(GENERATING_DOCUMENTATION)
 
diff --git a/asio/include/asio/ip/address_v6.hpp b/asio/include/asio/ip/address_v6.hpp
index 74569e8..005f6df 100644
--- a/asio/include/asio/ip/address_v6.hpp
+++ b/asio/include/asio/ip/address_v6.hpp
@@ -268,10 +268,16 @@
 enum v4_mapped_t { v4_mapped };
 
 /// Create an IPv4 address from a IPv4-mapped IPv6 address.
+/**
+ * @relates address_v4
+ */
 ASIO_DECL address_v4 make_address_v4(
     v4_mapped_t, const address_v6& v6_addr);
 
 /// Create an IPv4-mapped IPv6 address from an IPv4 address.
+/**
+ * @relates address_v6
+ */
 ASIO_DECL address_v6 make_address_v6(
     v4_mapped_t, const address_v4& v4_addr);
 
