diff --git a/Framework/Core/include/Framework/TableBuilder.h b/Framework/Core/include/Framework/TableBuilder.h index f941bf29bd8c8..eb56791acfd3c 100644 --- a/Framework/Core/include/Framework/TableBuilder.h +++ b/Framework/Core/include/Framework/TableBuilder.h @@ -456,10 +456,16 @@ struct CachedInsertion { int pos = 0; }; -template -struct BuilderHolder : P { +template +struct InsertionTrait { + static consteval DirectInsertion policy(); + using Policy = decltype(policy()); +}; + +template +struct BuilderHolder : InsertionTrait::Policy { static constexpr size_t index = I; - using Policy = P; + using Policy = typename InsertionTrait::Policy; using ArrowType = typename detail::ConversionTraits::ArrowType; using BuilderType = typename arrow::TypeTraits::BuilderType; @@ -520,12 +526,6 @@ constexpr auto tuple_to_pack(std::tuple&&) return framework::pack{}; } -template -struct InsertionTrait { - static consteval DirectInsertion policy(); - using Policy = decltype(policy()); -}; - /// Helper function to convert a brace-initialisable struct to /// a tuple. template @@ -553,7 +553,7 @@ template constexpr auto makeHolderTypes() { return [](std::index_sequence) { - return std::tuple(BuilderHolder::Policy>(arrow::default_memory_pool())...); + return std::tuple(BuilderHolder(arrow::default_memory_pool())...); }(std::make_index_sequence{}); } @@ -561,7 +561,7 @@ template auto makeHolders(arrow::MemoryPool* pool, size_t nRows) { return [pool, nRows](std::index_sequence) { - return new std::tuple(BuilderHolder::Policy>(pool, nRows)...); + return new std::tuple(BuilderHolder(pool, nRows)...); }(std::make_index_sequence{}); } @@ -579,7 +579,7 @@ class TableBuilder static void throwError(RuntimeErrorRef const& ref); template - using HoldersTuple = typename std::tuple::Policy>...>; + using HoldersTuple = typename std::tuple...>; template using HoldersTupleIndexed = decltype(makeHolderTypes());