From 78c3ff332180203cd2a35fbee240023326651730 Mon Sep 17 00:00:00 2001 From: Alexander Taepper Date: Wed, 29 Jul 2026 17:02:28 +0200 Subject: [PATCH 1/2] replace `return_type` and `enable_if_return` with helpers --- .../arrow/compute/kernels/codegen_internal.h | 14 +++--- .../compute/kernels/hash_aggregate_internal.h | 15 ++++--- cpp/src/arrow/util/cache_internal.h | 5 +-- cpp/src/arrow/util/functional.h | 43 ------------------- cpp/src/arrow/util/iterator.h | 22 ++++------ cpp/src/arrow/util/parallel.h | 6 +-- cpp/src/arrow/util/vector.h | 10 ++--- cpp/src/arrow/visit_data_inline.h | 32 ++++++++------ 8 files changed, 55 insertions(+), 92 deletions(-) diff --git a/cpp/src/arrow/compute/kernels/codegen_internal.h b/cpp/src/arrow/compute/kernels/codegen_internal.h index fa89c86183fc..bfc529dc0a46 100644 --- a/cpp/src/arrow/compute/kernels/codegen_internal.h +++ b/cpp/src/arrow/compute/kernels/codegen_internal.h @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -479,9 +480,9 @@ struct UnboxScalar { // values, such as Decimal128 rather than std::string_view. template -static typename ::arrow::internal::call_traits::enable_if_return::type -VisitArrayValuesInline(const ArraySpan& arr, VisitFunc&& valid_func, - NullFunc&& null_func) { + requires std::is_void_v::T>> +static void VisitArrayValuesInline(const ArraySpan& arr, VisitFunc&& valid_func, + NullFunc&& null_func) { VisitArraySpanInline( arr, [&](typename GetViewType::PhysicalType v) { @@ -491,9 +492,10 @@ VisitArrayValuesInline(const ArraySpan& arr, VisitFunc&& valid_func, } template -static typename ::arrow::internal::call_traits::enable_if_return::type -VisitArrayValuesInline(const ArraySpan& arr, VisitFunc&& valid_func, - NullFunc&& null_func) { + requires std::is_same_v::T>, + Status> +static Status VisitArrayValuesInline(const ArraySpan& arr, VisitFunc&& valid_func, + NullFunc&& null_func) { return VisitArraySpanInline( arr, [&](typename GetViewType::PhysicalType v) { diff --git a/cpp/src/arrow/compute/kernels/hash_aggregate_internal.h b/cpp/src/arrow/compute/kernels/hash_aggregate_internal.h index f6462669adf0..1ba21bd9b89e 100644 --- a/cpp/src/arrow/compute/kernels/hash_aggregate_internal.h +++ b/cpp/src/arrow/compute/kernels/hash_aggregate_internal.h @@ -18,6 +18,7 @@ #pragma once #include +#include #include "arrow/array/data.h" #include "arrow/buffer_builder.h" @@ -149,9 +150,10 @@ struct GroupedValueTraits { }; template -typename arrow::internal::call_traits::enable_if_return::type -VisitGroupedValues(const ExecSpan& batch, ConsumeValue&& valid_func, - ConsumeNull&& null_func) { + requires std::is_void_v< + std::invoke_result_t::T>> +void VisitGroupedValues(const ExecSpan& batch, ConsumeValue&& valid_func, + ConsumeNull&& null_func) { auto g = batch[1].array.GetValues(1); if (batch[0].is_array()) { VisitArrayValuesInline( @@ -174,9 +176,10 @@ VisitGroupedValues(const ExecSpan& batch, ConsumeValue&& valid_func, } template -typename arrow::internal::call_traits::enable_if_return::type -VisitGroupedValues(const ExecSpan& batch, ConsumeValue&& valid_func, - ConsumeNull&& null_func) { + requires std::is_same_v< + std::invoke_result_t::T>, Status> +Status VisitGroupedValues(const ExecSpan& batch, ConsumeValue&& valid_func, + ConsumeNull&& null_func) { auto g = batch[1].array.GetValues(1); if (batch[0].is_array()) { return VisitArrayValuesInline( diff --git a/cpp/src/arrow/util/cache_internal.h b/cpp/src/arrow/util/cache_internal.h index 05e4ef2a34ee..fe10af8bb2aa 100644 --- a/cpp/src/arrow/util/cache_internal.h +++ b/cpp/src/arrow/util/cache_internal.h @@ -167,9 +167,8 @@ struct ThreadUnsafeMemoizer { }; template