Commit dd00fd81 authored by Hans Fugal's avatar Hans Fugal Committed by Andrii Grynenko

Move this `reduce` to `helpers.h`

Summary: just a lowly non-erroring semantic merge conflict

Test Plan: builds

Reviewed By: jsedgwick@fb.com

Subscribers: trunkagent, exa, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2029593

Signature: t1:2029593:1430319785:2cd96927b9080fe18b168ab95ad201afc4f00857
parent f0901aec
......@@ -404,17 +404,6 @@ class Future {
};
// Sugar for the most common case
template <class Collection, class T, class F>
auto reduce(Collection&& c, T&& initial, F&& func)
-> decltype(reduce(c.begin(), c.end(), initial, func)) {
return reduce(
c.begin(),
c.end(),
std::forward<T>(initial),
std::forward<F>(func));
}
} // folly
#include <folly/futures/Future-inl.h>
......@@ -153,7 +153,7 @@ Future<std::vector<Try<
typename std::iterator_traits<InputIterator>::value_type::value_type>>>
collectAll(InputIterator first, InputIterator last);
// Sugar for the most common case
/// Sugar for the most common case
template <class Collection>
auto collectAll(Collection&& c) -> decltype(collectAll(c.begin(), c.end())) {
return collectAll(c.begin(), c.end());
......@@ -177,7 +177,7 @@ Future<typename detail::CollectContext<
>::result_type>
collect(InputIterator first, InputIterator last);
// Sugar for the most common case
/// Sugar for the most common case
template <class Collection>
auto collect(Collection&& c) -> decltype(collect(c.begin(), c.end())) {
return collect(c.begin(), c.end());
......@@ -195,7 +195,7 @@ Future<std::pair<
Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>
collectAny(InputIterator first, InputIterator last);
// Sugar for the most common case
/// Sugar for the most common case
template <class Collection>
auto collectAny(Collection&& c) -> decltype(collectAny(c.begin(), c.end())) {
return collectAny(c.begin(), c.end());
......@@ -213,7 +213,7 @@ Future<std::vector<std::pair<
Try<typename std::iterator_traits<InputIterator>::value_type::value_type>>>>
collectN(InputIterator first, InputIterator last, size_t n);
// Sugar for the most common case
/// Sugar for the most common case
template <class Collection>
auto collectN(Collection&& c, size_t n)
-> decltype(collectN(c.begin(), c.end(), n)) {
......@@ -246,4 +246,15 @@ template <class It, class T, class F,
typename std::enable_if<isFutureResult<F, T, Arg>::value, Future<T>>::type
reduce(It first, It last, T initial, F func);
/// Sugar for the most common case
template <class Collection, class T, class F>
auto reduce(Collection&& c, T&& initial, F&& func)
-> decltype(reduce(c.begin(), c.end(), initial, func)) {
return reduce(
c.begin(),
c.end(),
std::forward<T>(initial),
std::forward<F>(func));
}
} // namespace folly
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment