You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2017/08/05 06:31:12 UTC
mesos git commit: Fixes for Windows compilation errors.
Repository: mesos
Updated Branches:
refs/heads/master 68e9bd439 -> 5693e3554
Fixes for Windows compilation errors.
Two issues when compiling on Windows:
(1) Need to use `result_of` from Stout since `std::result_of` doesn't
do what we want on Windows.
(2) The Windows compiler can't deduce the template parameter
`Iterable` in circumstances where there are more than one template
parameter for `Iterable`. This change adds the variadic template
parameters to capture these cases.
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/5693e355
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/5693e355
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/5693e355
Branch: refs/heads/master
Commit: 5693e3554517cd204b18716b494f493f69f0882c
Parents: 68e9bd4
Author: Benjamin Hindman <be...@gmail.com>
Authored: Fri Aug 4 23:26:40 2017 -0700
Committer: Benjamin Hindman <be...@gmail.com>
Committed: Fri Aug 4 23:30:51 2017 -0700
----------------------------------------------------------------------
3rdparty/stout/include/stout/lambda.hpp | 33 +++++++++++++++++-----------
1 file changed, 20 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/5693e355/3rdparty/stout/include/stout/lambda.hpp
----------------------------------------------------------------------
diff --git a/3rdparty/stout/include/stout/lambda.hpp b/3rdparty/stout/include/stout/lambda.hpp
index 5d7cd29..a61d97b 100644
--- a/3rdparty/stout/include/stout/lambda.hpp
+++ b/3rdparty/stout/include/stout/lambda.hpp
@@ -17,6 +17,8 @@
#include <functional>
#include <vector>
+#include <stout/result_of.hpp>
+
namespace lambda {
using std::bind;
@@ -31,8 +33,9 @@ template <
template <typename...> class Iterable,
typename F,
typename U,
- typename V = typename std::result_of<F(U)>::type>
-Iterable<V> map(F&& f, const Iterable<U>& input)
+ typename V = typename result_of<F(U)>::type,
+ typename... Us>
+Iterable<V> map(F&& f, const Iterable<U, Us...>& input)
{
Iterable<V> output;
std::transform(
@@ -49,8 +52,9 @@ template <
template <typename...> class InputIterable,
typename F,
typename U,
- typename V = typename std::result_of<F(U)>::type>
-OutputIterable<V> map(F&& f, const InputIterable<U>& input)
+ typename V = typename result_of<F(U)>::type,
+ typename... Us>
+OutputIterable<V> map(F&& f, const InputIterable<U, Us...>& input)
{
OutputIterable<V> output;
std::transform(
@@ -66,10 +70,11 @@ template <
template <typename...> class Iterable,
typename F,
typename U,
- typename V = typename std::result_of<F(U)>::type,
+ typename V = typename result_of<F(U)>::type,
typename = typename std::enable_if<
- !std::is_same<U, V>::value>::type>
-Iterable<V> map(F&& f, Iterable<U>&& input)
+ !std::is_same<U, V>::value>::type,
+ typename... Us>
+Iterable<V> map(F&& f, Iterable<U, Us...>&& input)
{
Iterable<V> output;
std::transform(
@@ -86,8 +91,9 @@ template <
typename F,
typename U,
typename = typename std::enable_if<
- std::is_same<U, typename std::result_of<F(U)>::type>::value>::type>
-Iterable<U>&& map(F&& f, Iterable<U>&& iterable)
+ std::is_same<U, typename result_of<F(U)>::type>::value>::type,
+ typename... Us>
+Iterable<U, Us...>&& map(F&& f, Iterable<U, Us...>&& iterable)
{
std::transform(
std::make_move_iterator(iterable.begin()),
@@ -103,8 +109,9 @@ template <
template <typename...> class InputIterable,
typename F,
typename U,
- typename V = typename std::result_of<F(U)>::type>
-OutputIterable<V> map(F&& f, InputIterable<U>&& input)
+ typename V = typename result_of<F(U)>::type,
+ typename... Us>
+OutputIterable<V> map(F&& f, InputIterable<U, Us...>&& input)
{
OutputIterable<V> output;
std::transform(
@@ -120,7 +127,7 @@ template <
template <typename...> class OutputIterable,
typename F,
typename U,
- typename V = typename std::result_of<F(U)>::type>
+ typename V = typename result_of<F(U)>::type>
OutputIterable<V> map(F&& f, std::initializer_list<U> input)
{
OutputIterable<V> output;
@@ -136,7 +143,7 @@ OutputIterable<V> map(F&& f, std::initializer_list<U> input)
template <
typename F,
typename U,
- typename V = typename std::result_of<F(U)>::type>
+ typename V = typename result_of<F(U)>::type>
std::vector<V> map(F&& f, std::initializer_list<U> input)
{
std::vector<V> output;