Open 215020267 opened 4 years ago
as a starting point, since result_of is available in versions <= 17, and invoke_result is available in versions >= 17, I did this:
// rx-util.hpp
#if _HAS_CXX17
template<class F, class... TN> using invoke_result_t = typename std::invoke_result<F, TN...>::type;
#else
template<class F, class... TN> using invoke_result_t = typename std::result_of<F(TN...)>::type;
#endif
...
template<typename T>
struct is_hashable<T,
typename rxu::types_checked_from<
typename filtered_hash<T>::result_type,
typename filtered_hash<T>::argument_type,
typename std::invoke_result<filtered_hash<T>, T>::type>::type>
: std::true_type {};
then I changed all usages from rxu::result_of_t<A(B)>
to rxu::invoke_result_t<A, B>
Do you know the steps to reproduce it on Mac? I'm looking into this issue but couldn't reproduce it.
Can this issue be closed since patch is merged?
Description: In /std:c++17 mode, this triggers a deprecation warning in recent versions of MSVC. In /std:c++latest mode, now that microsoft/STL#380 has been merged, this will trigger an error in VS 2019 16.6 Preview 2.
Reproduce steps:
ErrorMessage: F:\gitP\Reactive-Extensions\RxCpp\Rx\v2\src\rxcpp\rx-util.hpp(49): error C2039: 'result_of': is not a member of 'std' [F:\gitP\Reactive-Extensions\RxCpp\build_amd64\test\rxcpp_test_defer.vcxproj]