Skip to content

Commit

Permalink
Fix std::result_of removed in C++20 (#551)
Browse files Browse the repository at this point in the history
  • Loading branch information
Asaaj authored Aug 26, 2021
1 parent 9002d9b commit 76de2c1
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions Rx/v2/src/rxcpp/rx-util.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,18 @@ namespace util {

template<class T> using value_type_t = typename std::decay<T>::type::value_type;
template<class T> using decay_t = typename std::decay<T>::type;
template<class... TN> using result_of_t = typename std::result_of<TN...>::type;
#ifdef __cpp_lib_is_invocable
template <class> struct result_of;

template <class F, class... TN>
struct result_of<F(TN...)>
{
using type = std::invoke_result_t<F, TN...>;
};
#else
template<class... TN> using result_of = std::result_of<TN...>;
#endif
template<class... TN> using result_of_t = typename result_of<TN...>::type;

template<class T, std::size_t size>
std::vector<T> to_vector(const T (&arr) [size]) {
Expand Down Expand Up @@ -1013,7 +1024,7 @@ struct is_hashable<T,
typename rxu::types_checked_from<
typename filtered_hash<T>::result_type,
typename filtered_hash<T>::argument_type,
typename std::result_of<filtered_hash<T>(T)>::type>::type>
typename rxu::result_of<filtered_hash<T>(T)>::type>::type>
: std::true_type {};

}
Expand Down

0 comments on commit 76de2c1

Please sign in to comment.