mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Park" <mp...@apache.org>
Subject Re: Review Request 41461: stout: Added SFINAE-friendly `result_of`.
Date Wed, 06 Jan 2016 01:09:14 GMT


> On Jan. 4, 2016, 5:30 p.m., Alexander Rojas wrote:
> > 3rdparty/libprocess/3rdparty/stout/include/stout/result_of.hpp, line 41
> > <https://reviews.apache.org/r/41461/diff/5/?file=1174022#file1174022line41>
> >
> >     my question here is, why does `result_of_type` needs to take parameters?, just
so `fail result_of_type` can take and then ignore them?
> 
> Alexander Rukletsov wrote:
>     Looks like the compiler cannot disambiguate between `<ret-type> foo(...)` and
`<ret-type> foo()` because there is no conversion happening (my guess is based on a
note in http://en.cppreference.com/w/cpp/language/variadic_arguments). MPark, looks like a
comment here can be really helpful : ).

If the expression SFINAEs out the non-`fail` version, then we're only left with the `fail`
version and we use that. If the expression __does not__ SFINAE out the non-`fail` version,
then we have both overloads in the overload set, and we want the non-`fail` version to win.
In order to achieve this we pass `int` is a better match than `...` with `0` as the argument,
so it wins overload resolution.

I've updated this to use the pattern in `future.hpp` instead, which is `Prefer` and `LessPrefer`.
It's the same concept. `Prefer` inherits from `LessPrefer`, so they are both viable, but `Prefer`
is a better match than `LessPrefer` with `Prefer()` as the argument.


- Michael


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/41461/#review112599
-----------------------------------------------------------


On Jan. 6, 2016, 12:55 a.m., Michael Park wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/41461/
> -----------------------------------------------------------
> 
> (Updated Jan. 6, 2016, 12:55 a.m.)
> 
> 
> Review request for mesos, Benjamin Hindman, Alex Clemmer, and Joris Van Remoortere.
> 
> 
> Bugs: MESOS-4220
>     https://issues.apache.org/jira/browse/MESOS-4220
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> VS 2015 won't support C++14 `std::result_of` SFINAE until Update 2, so `result_of` must
be replaced with `decltype(invoke)`.
> 
> Here, we implement SFINAE `result_of` in `stout`.
> 
> Follow-up from [r40114](https://reviews.apache.org/r/40114/).
> 
> 
> Diffs
> -----
> 
>   3rdparty/libprocess/3rdparty/stout/include/Makefile.am b2dea9b93adfa3ea0415a0b5c81a369dd29b6cfe

>   3rdparty/libprocess/3rdparty/stout/include/stout/result_of.hpp PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/41461/diff/
> 
> 
> Testing
> -------
> 
> `make check` on OS X, compiled on Windows.
> 
> 
> Thanks,
> 
> Michael Park
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message