diff --git a/src/hb-set.hh b/src/hb-set.hh
index a1a09d3..58188b5 100644
--- a/src/hb-set.hh
+++ b/src/hb-set.hh
@@ -49,10 +49,10 @@
   hb_sparseset_t& operator= (hb_sparseset_t&& other) { hb_swap (*this, other); return *this; }
   friend void swap (hb_sparseset_t& a, hb_sparseset_t& b) { hb_swap (a.s, b.s); }
 
-  hb_sparseset_t (std::initializer_list<hb_codepoint_t> l) : hb_sparseset_t ()
+  hb_sparseset_t (std::initializer_list<hb_codepoint_t> lst) : hb_sparseset_t ()
   {
-    for (auto&& i : l)
-      add (i);
+    for (auto&& item : lst)
+      add (item);
   }
   template <typename Iterable,
 	    hb_requires (hb_is_iterable (Iterable))>
@@ -162,7 +162,7 @@
   hb_set_t (hb_set_t& o) = default;
   hb_set_t& operator= (const hb_set_t& other) = default;
   hb_set_t& operator= (hb_set_t&& other) = default;
-  hb_set_t (std::initializer_list<hb_codepoint_t> l) : hb_sparseset_t<hb_bit_set_invertible_t> (l) {}
+  hb_set_t (std::initializer_list<hb_codepoint_t> lst) : hb_sparseset_t<hb_bit_set_invertible_t> (lst) {}
   template <typename Iterable,
 	    hb_requires (hb_is_iterable (Iterable))>
   hb_set_t (const Iterable &o) : hb_sparseset_t<hb_bit_set_invertible_t> (o) {}
diff --git a/src/hb-vector.hh b/src/hb-vector.hh
index 108aa09..286b79f 100644
--- a/src/hb-vector.hh
+++ b/src/hb-vector.hh
@@ -41,11 +41,11 @@
   static constexpr unsigned item_size = hb_static_size (Type);
 
   hb_vector_t () = default;
-  hb_vector_t (std::initializer_list<Type> l) : hb_vector_t ()
+  hb_vector_t (std::initializer_list<Type> lst) : hb_vector_t ()
   {
-    alloc (l.size ());
-    for (auto&& i : l)
-      push (i);
+    alloc (lst.size ());
+    for (auto&& item : lst)
+      push (item);
   }
   template <typename Iterable,
 	    hb_requires (hb_is_iterable (Iterable))>
@@ -314,7 +314,7 @@
 struct hb_sorted_vector_t : hb_vector_t<Type>
 {
   hb_sorted_vector_t () : hb_vector_t<Type> () {}
-  hb_sorted_vector_t (std::initializer_list<Type> l) : hb_vector_t<Type> (l) {}
+  hb_sorted_vector_t (std::initializer_list<Type> lst) : hb_vector_t<Type> (lst) {}
   hb_sorted_vector_t (hb_sorted_vector_t& o) : hb_vector_t<Type> (o) {}
 
   hb_sorted_array_t<      Type> as_array ()       { return hb_sorted_array (this->arrayZ, this->length); }
