Added
Link Here
|
1 |
--- src/third_party/abseil-cpp/absl/meta/type_traits.h.orig 2021-10-21 06:15:41 UTC |
2 |
+++ src/third_party/abseil-cpp/absl/meta/type_traits.h |
3 |
@@ -616,19 +616,14 @@ using common_type_t = typename std::common_type<T...>: |
4 |
template <typename T> |
5 |
using underlying_type_t = typename std::underlying_type<T>::type; |
6 |
|
7 |
-#if _MSVC_LANG > 201703L |
8 |
-template <typename T> |
9 |
-struct result_of_helper; |
10 |
-template <typename F, typename ...Args> |
11 |
-struct result_of_helper<F(Args...)> { |
12 |
- using type = std::invoke_result_t<F, Args...>; |
13 |
-}; |
14 |
-template <typename T> |
15 |
-using result_of_t = typename result_of_helper<T>::type; |
16 |
-#else // C++20 |
17 |
-template <typename T> |
18 |
-using result_of_t = typename std::result_of<T>::type; |
19 |
-#endif // C++20 |
20 |
+#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) |
21 |
+// std::result_of is deprecated (C++17) or removed (C++20) |
22 |
+template<typename> struct result_of; |
23 |
+template<typename F, typename... Args> |
24 |
+struct result_of<F(Args...)> : std::invoke_result<F, Args...> {}; |
25 |
+#else |
26 |
+template<typename F> using result_of = std::result_of<F>; |
27 |
+#endif |
28 |
|
29 |
namespace type_traits_internal { |
30 |
// In MSVC we can't probe std::hash or stdext::hash because it triggers a |