[llvm] r363477 - Add a map_range function for applying map_iterator to a range.

Richard Smith via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 14 16:56:40 PDT 2019


Author: rsmith
Date: Fri Jun 14 16:56:40 2019
New Revision: 363477

URL: http://llvm.org/viewvc/llvm-project?rev=363477&view=rev
Log:
Add a map_range function for applying map_iterator to a range.

In preparation for use in Clang.

Modified:
    llvm/trunk/include/llvm/ADT/STLExtras.h

Modified: llvm/trunk/include/llvm/ADT/STLExtras.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/STLExtras.h?rev=363477&r1=363476&r2=363477&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/STLExtras.h (original)
+++ llvm/trunk/include/llvm/ADT/STLExtras.h Fri Jun 14 16:56:40 2019
@@ -240,6 +240,13 @@ inline mapped_iterator<ItTy, FuncTy> map
   return mapped_iterator<ItTy, FuncTy>(std::move(I), std::move(F));
 }
 
+template <class ContainerTy, class FuncTy>
+auto map_range(ContainerTy &&C, FuncTy F)
+    -> decltype(make_range(map_iterator(C.begin(), F),
+                           map_iterator(C.end(), F))) {
+  return make_range(map_iterator(C.begin(), F), map_iterator(C.end(), F));
+}
+
 /// Helper to determine if type T has a member called rbegin().
 template <typename Ty> class has_rbegin_impl {
   using yes = char[1];




More information about the llvm-commits mailing list