> 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 > >