<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 13, 2016 at 11:12 AM, Alexander Droste <span dir="ltr"><<a href="mailto:alexander.ra.droste@googlemail.com" target="_blank">alexander.ra.droste@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I tried:<br>
<br>
template <typename R, typename E><br>
bool is_contained(R &&Range, const E &Element) {<br>
  return any_of(Range, std::equal_to<E>(Element));<br>
}<br>
<br>
what does not work. Is another non std::equal_to implementation<br>
necessary in order to realize the is_contained function<br>
with equal_to?</blockquote><div><br></div><div>Not sure I quite understand your question - is that producing a specific compilation error message (could you copy/paste it)?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
<br>
On 11.01.16 18:12, David Blaikie wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<br>
<br>
On Mon, Jan 11, 2016 at 9:09 AM, Benjamin Kramer <<a href="mailto:benny.kra@gmail.com" target="_blank">benny.kra@gmail.com</a><br></span><span class="">
<mailto:<a href="mailto:benny.kra@gmail.com" target="_blank">benny.kra@gmail.com</a>>> wrote:<br>
<br>
    I have a slight preference for the equal_to solution because it's<br>
    standard C++14, but no strong opinion here.<br>
<br>
<br>
Likewise - means not having to come up with another name, etc.<br>
<br>
Benjamin - did you want to implement an llvm::equal_to, or perhaps Alexander can<br>
instead of this patch?<br>
<br>
<br>
    On Mon, Jan 11, 2016 at 5:43 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a><br></span><span class="">
    <mailto:<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>>> wrote:<br>
    > Benjamin and I were just discussing a similar piece of code to this in a<br>
    > review<br>
    ><br>
    > I think we were settling on something like "any_of(R, is_equal<>(E))" but<br>
    > I'm OK adding something like "contains" or "is_contained" (contains seems<br>
    > like the right name, but might be too often used elsewhere to be<br>
    > convenient?)<br>
    ><br>
    > Benjamin - any thoughts/preferences here?<br>
    ><br>
    > On Mon, Jan 11, 2016 at 5:26 AM, Alexander Droste via llvm-commits<br></span><div><div class="h5">
    > <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a> <mailto:<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>>> wrote:<br>
    >><br>
    >> Alexander_Droste updated the summary for this revision.<br>
    >> Alexander_Droste added a reviewer: dblaikie.<br>
    >> Alexander_Droste updated this revision to Diff 44471.<br>
    >> Alexander_Droste added a comment.<br>
    >><br>
    >> - changed name to `is_contained()` because `contains()` caused name<br>
    >> conflicts<br>
    >> - adapted the style of other functions in `STLExtras.h`<br>
    >><br>
    >> - @David: I hope its ok that I added you as a reviewer. Googling for<br>
    >> 'stlextras llvm reviewer' you<br>
    >><br>
    >> were the first author that appeared.<br>
    >><br>
    >><br>
    >><a href="http://reviews.llvm.org/D16053" rel="noreferrer" target="_blank">http://reviews.llvm.org/D16053</a><br>
    >><br>
    >> Files:<br>
    >>   include/llvm/ADT/STLExtras.h<br>
    >><br>
    >> Index: include/llvm/ADT/STLExtras.h<br>
    >> ===================================================================<br>
    >> --- include/llvm/ADT/STLExtras.h<br>
    >> +++ include/llvm/ADT/STLExtras.h<br>
    >> @@ -386,6 +386,13 @@<br>
    >>    return std::find(Range.begin(), Range.end(), val);<br>
    >>  }<br>
    >><br>
    >> +/// Wrapper function around std::find to detect if an element exists<br>
    >> +/// in a container.<br>
    >> +template <typename R, typename E><br>
    >> +bool is_contained(R && Range, const E &Element) {<br>
    >> +  return std::find(Range.begin(), Range.end(), Element) != Range.end();<br>
    >> +}<br>
    >> +<br>
    >><br>
    >> //===----------------------------------------------------------------------===//<br>
    >>  //     Extra additions to <memory><br>
    >><br>
    >> //===----------------------------------------------------------------------===//<br>
    >><br>
    >><br>
    >><br>
    >> _______________________________________________<br>
    >> llvm-commits mailing list<br></div></div>
    >><a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a> <mailto:<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
    >><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
    >><br>
    ><br>
<br>
<br>
</blockquote>
</blockquote></div><br></div></div>