<div dir="ltr">How am I supposed to use this?  If I write this:<div><br></div><div><div>    template <typename Ret, typename Param></div><div>    LLVM_ATTRIBUTE_UNUSED_RESULT StringRef drop_until(function_ref<Ret(Param)> F) const {</div></div><div><br></div><div>And call it like this:</div><div><br></div><div><div>  StringRef Taken = Test.take_while(::isdigit);</div></div><div><br></div><div>Then I get an error that the template types cannot be deduced.  I don't want to hardcode it to function_ref<bool(char)> because functions like is_digit etc exist and should be allowed.</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Sep 22, 2016 at 2:06 PM David Majnemer <<a href="mailto:david.majnemer@gmail.com">david.majnemer@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">majnemer added inline comments.<br class="gmail_msg">
<br class="gmail_msg">
================<br class="gmail_msg">
Comment at: include/llvm/ADT/StringRef.h:499-511<br class="gmail_msg">
@@ -498,1 +498,15 @@<br class="gmail_msg">
<br class="gmail_msg">
+    template <typename Func><br class="gmail_msg">
+    LLVM_ATTRIBUTE_UNUSED_RESULT StringRef take_while(Func F) const {<br class="gmail_msg">
+      StringRef S(*this);<br class="gmail_msg">
+      while (!S.empty()) {<br class="gmail_msg">
+        if (!F(S.front()))<br class="gmail_msg">
+          break;<br class="gmail_msg">
+        S = S.drop_front();<br class="gmail_msg">
+      }<br class="gmail_msg">
+      return drop_back(S.size());<br class="gmail_msg">
+    }<br class="gmail_msg">
+<br class="gmail_msg">
+    template <typename Func><br class="gmail_msg">
+    LLVM_ATTRIBUTE_UNUSED_RESULT StringRef take_until(Func F) const {<br class="gmail_msg">
+      StringRef S(*this);<br class="gmail_msg">
----------------<br class="gmail_msg">
davide wrote:<br class="gmail_msg">
> Oh, and maybe if you can add a comment at the beginning of each function (e.g. as consume_front() already does) it would be good.<br class="gmail_msg">
Can you use function_ref instead?<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://reviews.llvm.org/D24842" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D24842</a><br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>