]> granicus.if.org Git - llvm/commitdiff
[ADT] Add a range variant of std::transform
authorDavid Majnemer <david.majnemer@gmail.com>
Thu, 23 Jun 2016 00:14:26 +0000 (00:14 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Thu, 23 Jun 2016 00:14:26 +0000 (00:14 +0000)
This will be used in a followup change in clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273520 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/STLExtras.h

index 3d2ca9eb14882feb30d439c5a81eafee01328ba0..abd39dacc671351d940d3edca4fc680169f63635 100644 (file)
@@ -427,6 +427,14 @@ auto count_if(R &&Range, UnaryPredicate &&P)
   return std::count_if(Range.begin(), Range.end(), P);
 }
 
+/// Wrapper function around std::transform to apply a function to a range and
+/// store the result elsewhere.
+template <typename R, class OutputIt, typename UnaryPredicate>
+OutputIt transform(R &&Range, OutputIt d_first, UnaryPredicate &&P) {
+  return std::transform(Range.begin(), Range.end(), d_first,
+                        std::forward<UnaryPredicate>(P));
+}
+
 //===----------------------------------------------------------------------===//
 //     Extra additions to <memory>
 //===----------------------------------------------------------------------===//