From 355831b13da23ebc1fd22fe8a38cb526d7906fd2 Mon Sep 17 00:00:00 2001 From: Ryan Prichard Date: Tue, 27 Feb 2024 13:22:11 -0800 Subject: C++20 compat: use invoke_result_t instead of result_of C++20 removes std::result_of in favor of std::invoke_result[_t], which was added in C++17. Android builds this code with C++20. Bug: 175635923 Test: m MODULES-IN-external-grpc-grpc Change-Id: Ief1c688a567eb4e31f07db897cb659f3506af046 --- src/core/lib/promise/detail/promise_like.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/lib/promise/detail/promise_like.h b/src/core/lib/promise/detail/promise_like.h index 395c325873..70be971cc6 100644 --- a/src/core/lib/promise/detail/promise_like.h +++ b/src/core/lib/promise/detail/promise_like.h @@ -69,9 +69,16 @@ class PromiseLike; template <> class PromiseLike; +// Android local modification: Android builds grpc with C++20, which removes +// std::result_of. Use std::invoke_result_t instead. template class PromiseLike::type>::value>> { +#if __cplusplus >= 201703L + std::invoke_result_t +#else + typename std::result_of::type +#endif + >::value>> { private: GPR_NO_UNIQUE_ADDRESS F f_; -- cgit v1.2.3