@@ -83,7 +83,7 @@ struct AttributeConverter
8383  {
8484    return  OwnedAttributeValue (std::string (v));
8585  }
86-   OwnedAttributeValue operator ()(std::string v) { return  OwnedAttributeValue (v ); }
86+   OwnedAttributeValue operator ()(std::string v) { return  OwnedAttributeValue (std::move (v) ); }
8787  OwnedAttributeValue operator ()(const  char  *v) { return  OwnedAttributeValue (std::string (v)); }
8888  OwnedAttributeValue operator ()(nostd::span<const  uint8_t > v) { return  convertSpan<uint8_t >(v); }
8989  OwnedAttributeValue operator ()(nostd::span<const  bool > v) { return  convertSpan<bool >(v); }
@@ -100,8 +100,7 @@ struct AttributeConverter
100100  template  <typename  T, typename  U = T>
101101  OwnedAttributeValue convertSpan (nostd::span<const  U> vals)
102102  {
103-     const  std::vector<T> copy (vals.begin (), vals.end ());
104-     return  OwnedAttributeValue (std::move (copy));
103+     return  OwnedAttributeValue (std::vector<T>(vals.begin (), vals.end ()));
105104  }
106105};
107106
@@ -171,23 +170,15 @@ class AttributeMap : public std::unordered_map<std::string, OwnedAttributeValue>
171170  //  Construct attribute map and populate with attributes
172171  AttributeMap (const  opentelemetry::common::KeyValueIterable &attributes) : AttributeMap()
173172  {
174-     attributes.ForEachKeyValue (
175-         [&](nostd::string_view key, opentelemetry::common::AttributeValue value) noexcept  {
176-           SetAttribute (key, value);
177-           return  true ;
178-         });
173+     ConstructFrom (attributes);
179174  }
180175
181176  //  Construct attribute map and populate with optional attributes
182177  AttributeMap (const  opentelemetry::common::KeyValueIterable *attributes) : AttributeMap()
183178  {
184179    if  (attributes != nullptr )
185180    {
186-       attributes->ForEachKeyValue (
187-           [&](nostd::string_view key, opentelemetry::common::AttributeValue value) noexcept  {
188-             SetAttribute (key, value);
189-             return  true ;
190-           });
181+       ConstructFrom (*attributes);
191182    }
192183  }
193184
@@ -203,6 +194,15 @@ class AttributeMap : public std::unordered_map<std::string, OwnedAttributeValue>
203194    }
204195  }
205196
197+   void  ConstructFrom (const  opentelemetry::common::KeyValueIterable &attributes)
198+   {
199+     attributes.ForEachKeyValue (
200+         [&](nostd::string_view key, const  opentelemetry::common::AttributeValue &value) noexcept  {
201+           SetAttribute (key, value);
202+           return  true ;
203+         });
204+   }
205+ 
206206  //  Returns a reference to this map
207207  const  std::unordered_map<std::string, OwnedAttributeValue> &GetAttributes () const  noexcept 
208208  {
@@ -213,7 +213,7 @@ class AttributeMap : public std::unordered_map<std::string, OwnedAttributeValue>
213213  void  SetAttribute (nostd::string_view key,
214214                    const  opentelemetry::common::AttributeValue &value) noexcept 
215215  {
216-     (*this )[std::string (key)] = nostd::visit (converter_ , value);
216+     (*this )[std::string (key)] = nostd::visit (AttributeConverter () , value);
217217  }
218218
219219  //  Compare the attributes of this map with another KeyValueIterable
@@ -235,18 +235,14 @@ class AttributeMap : public std::unordered_map<std::string, OwnedAttributeValue>
235235            {
236236              //  Order of arguments is important here. OwnedAttributeValue is first then
237237              //  AttributeValue AttributeEqualToVisitor does not support the reverse order
238-               return  nostd::visit (equal_to_visitor_ , kv.second , value);
238+               return  nostd::visit (AttributeEqualToVisitor () , kv.second , value);
239239            }
240240          }
241241          return  false ;
242242        });
243243
244244    return  is_equal;
245245  }
246- 
247- private: 
248-   AttributeConverter converter_;
249-   AttributeEqualToVisitor equal_to_visitor_;
250246};
251247
252248/* *
@@ -291,11 +287,8 @@ class OrderedAttributeMap : public std::map<std::string, OwnedAttributeValue>
291287  void  SetAttribute (nostd::string_view key,
292288                    const  opentelemetry::common::AttributeValue &value) noexcept 
293289  {
294-     (*this )[std::string (key)] = nostd::visit (converter_ , value);
290+     (*this )[std::string (key)] = nostd::visit (AttributeConverter () , value);
295291  }
296- 
297- private: 
298-   AttributeConverter converter_;
299292};
300293
301294}  //  namespace common
0 commit comments