1515// specific language governing permissions and limitations
1616// under the License.
1717
18+ #include < array>
19+
1820#include " parquet/level_comparison.h"
1921
2022#if defined(ARROW_HAVE_RUNTIME_AVX2)
2527#include " parquet/level_comparison_inc.h"
2628#undef PARQUET_IMPL_NAMESPACE
2729
28- #include < vector>
29-
3030#include " arrow/util/dispatch_internal.h"
3131
3232namespace parquet ::internal {
@@ -40,25 +40,27 @@ using ::arrow::internal::DynamicDispatch;
4040
4141struct GreaterThanDynamicFunction {
4242 using FunctionType = decltype (&GreaterThanBitmap);
43+ using Implementation = std::pair<DispatchLevel, FunctionType>;
4344
44- static std::vector<std::pair<DispatchLevel, FunctionType>> implementations () {
45- return {{DispatchLevel::NONE, standard::GreaterThanBitmapImpl}
45+ static constexpr auto implementations () {
46+ return std::array{
47+ Implementation{DispatchLevel::NONE, standard::GreaterThanBitmapImpl},
4648#if defined(ARROW_HAVE_RUNTIME_AVX2)
47- ,
48- {DispatchLevel::AVX2, GreaterThanBitmapAvx2}
49+ Implementation{DispatchLevel::AVX2, GreaterThanBitmapAvx2},
4950#endif
5051 };
5152 }
5253};
5354
5455struct MinMaxDynamicFunction {
5556 using FunctionType = decltype (&FindMinMax);
57+ using Implementation = std::pair<DispatchLevel, FunctionType>;
5658
57- static std::vector<std::pair<DispatchLevel, FunctionType>> implementations () {
58- return {{DispatchLevel::NONE, standard::FindMinMaxImpl}
59+ static constexpr auto implementations () {
60+ return std::array{
61+ Implementation{DispatchLevel::NONE, standard::FindMinMaxImpl},
5962#if defined(ARROW_HAVE_RUNTIME_AVX2)
60- ,
61- {DispatchLevel::AVX2, FindMinMaxAvx2}
63+ Implementation{DispatchLevel::AVX2, FindMinMaxAvx2},
6264#endif
6365 };
6466 }
0 commit comments