r202590 - [C++11] Replace verbose functors with succinct lambdas

Jonathan Roelofs jonathan at codesourcery.com
Tue Mar 4 17:25:24 PST 2014



On 3/1/14, 6:48 AM, Benjamin Kramer wrote:
> Modified: cfe/trunk/lib/Driver/Multilib.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Multilib.cpp?rev=202590&r1=202589&r2=202590&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/Multilib.cpp (original)
> +++ cfe/trunk/lib/Driver/Multilib.cpp Sat Mar  1 08:48:57 2014
> @@ -338,20 +338,11 @@ MultilibSet::filterCopy(const MultilibSe
>     return Copy;
>   }
>
> -namespace {
> -// Wrapper for FilterCallback to make operator() nonvirtual so it
> -// can be passed by value to std::remove_if
> -class FilterWrapper {
> -  const MultilibSet::FilterCallback &F;
> -public:
> -  FilterWrapper(const MultilibSet::FilterCallback &F) : F(F) {}
> -  bool operator()(const Multilib &M) const { return F(M); }
> -};
> -} // end anonymous namespace
> -
>   void MultilibSet::filterInPlace(const MultilibSet::FilterCallback &F,
>                                   multilib_list &Ms) {
> -  Ms.erase(std::remove_if(Ms.begin(), Ms.end(), FilterWrapper(F)), Ms.end());
> +  Ms.erase(std::remove_if(Ms.begin(), Ms.end(),
> +                          [&F](const Multilib &M) { return F(M); }),
IMHO `std::cref(F)` would be even more succinct than the lambda for this case. 
(That's what I had originally intended to write here, but couldn't because we 
didn't have c++11 turned on at the time).
> +           Ms.end());
>   }
>
>   raw_ostream &clang::driver::operator<<(raw_ostream &OS, const MultilibSet &MS) {
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>

-- 
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded



More information about the cfe-commits mailing list