[iter] Add hb_drain
diff --git a/src/hb-iter.hh b/src/hb-iter.hh
index 2c885d6..730f682 100644
--- a/src/hb-iter.hh
+++ b/src/hb-iter.hh
@@ -430,6 +430,17 @@
   { return hb_sink_t<Sink&> (*s); }
 } hb_sink HB_UNUSED;
 
+static const struct
+{
+  template <typename Iter,
+	    hb_enable_if (hb_is_iterator (Iter))>
+  void
+  operator () (Iter it) const
+  {
+    for (; it; ++it)
+      (void) *it;
+  }
+} hb_drain HB_UNUSED;
 
 /*
  * Algorithms operating on iterators.
diff --git a/src/test-iter.cc b/src/test-iter.cc
index a966163..d7e9a00 100644
--- a/src/test-iter.cc
+++ b/src/test-iter.cc
@@ -149,7 +149,12 @@
   ;
 
   + hb_iter (src)
-  | hb_apply (&st);
+  | hb_apply (&st)
+  ;
+
+  + hb_iter (src)
+  | hb_drain
+  ;
 
   t << 1;
   long vl;