Take structured header parameters by value in constructors instead of by const ref

The former allows moves to work properly; as written, the following instances of `std::move(*parameters)` result in copies rather than moves because they end up invoking the const-ref constructor:

1. http://google3/third_party/quiche/common/structured_headers.cc;l=143;rcl=465934185
2. http://google3/third_party/quiche/common/structured_headers.cc;l=244;rcl=465934185
3. http://google3/third_party/quiche/common/structured_headers.cc;l=306;rcl=465934185
4. http://google3/third_party/quiche/common/structured_headers.cc;l=187;rcl=465934185
5. http://google3/third_party/quiche/common/structured_headers.cc;l=258;rcl=465934185

PiperOrigin-RevId: 466502726
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();
 };