diff --git a/quiche/common/structured_headers.cc b/quiche/common/structured_headers.cc
index f19d15c..b348c22 100644
--- a/quiche/common/structured_headers.cc
+++ b/quiche/common/structured_headers.cc
@@ -756,8 +756,8 @@
 ParameterizedItem::ParameterizedItem(const ParameterizedItem&) = default;
 ParameterizedItem& ParameterizedItem::operator=(const ParameterizedItem&) =
     default;
-ParameterizedItem::ParameterizedItem(Item id, const Parameters& ps)
-    : item(std::move(id)), params(ps) {}
+ParameterizedItem::ParameterizedItem(Item id, Parameters ps)
+    : item(std::move(id)), params(std::move(ps)) {}
 ParameterizedItem::~ParameterizedItem() = default;
 
 ParameterizedMember::ParameterizedMember() = default;
@@ -766,23 +766,27 @@
     const ParameterizedMember&) = default;
 ParameterizedMember::ParameterizedMember(std::vector<ParameterizedItem> id,
                                          bool member_is_inner_list,
-                                         const Parameters& ps)
+                                         Parameters ps)
     : member(std::move(id)),
       member_is_inner_list(member_is_inner_list),
-      params(ps) {}
+      params(std::move(ps)) {}
 ParameterizedMember::ParameterizedMember(std::vector<ParameterizedItem> id,
-                                         const Parameters& ps)
-    : member(std::move(id)), member_is_inner_list(true), params(ps) {}
-ParameterizedMember::ParameterizedMember(Item id, const Parameters& ps)
-    : member({{std::move(id), {}}}), member_is_inner_list(false), params(ps) {}
+                                         Parameters ps)
+    : member(std::move(id)),
+      member_is_inner_list(true),
+      params(std::move(ps)) {}
+ParameterizedMember::ParameterizedMember(Item id, Parameters ps)
+    : member({{std::move(id), {}}}),
+      member_is_inner_list(false),
+      params(std::move(ps)) {}
 ParameterizedMember::~ParameterizedMember() = default;
 
 ParameterisedIdentifier::ParameterisedIdentifier(
     const ParameterisedIdentifier&) = default;
 ParameterisedIdentifier& ParameterisedIdentifier::operator=(
     const ParameterisedIdentifier&) = default;
-ParameterisedIdentifier::ParameterisedIdentifier(Item id, const Parameters& ps)
-    : identifier(std::move(id)), params(ps) {}
+ParameterisedIdentifier::ParameterisedIdentifier(Item id, Parameters ps)
+    : identifier(std::move(id)), params(std::move(ps)) {}
 ParameterisedIdentifier::~ParameterisedIdentifier() = default;
 
 Dictionary::Dictionary() = default;
diff --git a/quiche/common/structured_headers.h b/quiche/common/structured_headers.h
index 6b338a7..f0eda84 100644
--- a/quiche/common/structured_headers.h
+++ b/quiche/common/structured_headers.h
@@ -132,7 +132,7 @@
 
   ParameterisedIdentifier(const ParameterisedIdentifier&);
   ParameterisedIdentifier& operator=(const ParameterisedIdentifier&);
-  ParameterisedIdentifier(Item, const Parameters&);
+  ParameterisedIdentifier(Item, Parameters);
   ~ParameterisedIdentifier();
 };
 
@@ -150,7 +150,7 @@
 
   ParameterizedItem(const ParameterizedItem&);
   ParameterizedItem& operator=(const ParameterizedItem&);
-  ParameterizedItem(Item, const Parameters&);
+  ParameterizedItem(Item, Parameters);
   ~ParameterizedItem();
 };
 
@@ -178,11 +178,11 @@
   ParameterizedMember(const ParameterizedMember&);
   ParameterizedMember& operator=(const ParameterizedMember&);
   ParameterizedMember(std::vector<ParameterizedItem>, bool member_is_inner_list,
-                      const Parameters&);
+                      Parameters);
   // Shorthand constructor for a member which is an inner list.
-  ParameterizedMember(std::vector<ParameterizedItem>, const Parameters&);
+  ParameterizedMember(std::vector<ParameterizedItem>, Parameters);
   // Shorthand constructor for a member which is a single Item.
-  ParameterizedMember(Item, const Parameters&);
+  ParameterizedMember(Item, Parameters);
   ~ParameterizedMember();
 };
 
