--- contrib/libs/apache/arrow/cpp/src/arrow/result.h (2e0006a95f0ad665eca5b48386842a8a0354061f) +++ contrib/libs/apache/arrow/cpp/src/arrow/result.h (working tree) @@ -385,7 +385,7 @@ class ARROW_MUST_USE_TYPE Result : public util::EqualityComparable> { /// Apply a function to the internally stored value to produce a new result or propagate /// the stored error. template - typename EnsureResult::type>::type Map(M&& m) && { + typename EnsureResult()(std::declval()))>::type Map(M&& m) && { if (!ok()) { return status(); } @@ -395,7 +395,7 @@ class ARROW_MUST_USE_TYPE Result : public util::EqualityComparable> { /// Apply a function to the internally stored value to produce a new result or propagate /// the stored error. template - typename EnsureResult::type>::type Map( + typename EnsureResult()(std::declval()))>::type Map( M&& m) const& { if (!ok()) { return status(); --- contrib/libs/apache/arrow/cpp/src/arrow/util/bitmap_generate.h (2e0006a95f0ad665eca5b48386842a8a0354061f) +++ contrib/libs/apache/arrow/cpp/src/arrow/util/bitmap_generate.h (working tree) @@ -62,7 +62,7 @@ void GenerateBits(uint8_t* bitmap, int64_t start_offset, int64_t length, Generat template void GenerateBitsUnrolled(uint8_t* bitmap, int64_t start_offset, int64_t length, Generator&& g) { - static_assert(std::is_same::type, bool>::value, + static_assert(std::is_same()()), bool>::value, "Functor passed to GenerateBitsUnrolled must return bool"); if (length == 0) { --- contrib/libs/apache/arrow/cpp/src/arrow/util/functional.h (2e0006a95f0ad665eca5b48386842a8a0354061f) +++ contrib/libs/apache/arrow/cpp/src/arrow/util/functional.h (working tree) @@ -129,7 +129,7 @@ class FnOnce { template ::type, R>::value>::type> + decltype(std::declval()(std::declval()...)), R>::value>::type> FnOnce(Fn fn) : impl_(new FnImpl(std::move(fn))) { // NOLINT runtime/explicit } --- contrib/libs/apache/arrow/cpp/src/arrow/util/future.h (2e0006a95f0ad665eca5b48386842a8a0354061f) +++ contrib/libs/apache/arrow/cpp/src/arrow/util/future.h (working tree) @@ -47,8 +47,17 @@ struct is_future : std::false_type {}; template struct is_future> : std::true_type {}; +template +struct result_of; + +template +struct result_of()(std::declval()...))>> { + using type = decltype(std::declval()(std::declval()...)); +}; + template -using result_of_t = typename std::result_of::type; +using result_of_t = typename result_of::type; // Helper to find the synchronous counterpart for a Future template