@@ -157,7 +157,7 @@ struct BuilderUtils {
157157
158158 // / Appender for the vector case.
159159 template <typename HolderType, typename T>
160- static arrow::Status append (HolderType& holder, std::vector <T> const & data)
160+ static arrow::Status append (HolderType& holder, std::span <T> data)
161161 {
162162 using ArrowType = typename detail::ConversionTraits<T>::ArrowType;
163163 using ValueBuilderType = typename arrow::TypeTraits<ArrowType>::BuilderType;
@@ -170,7 +170,7 @@ struct BuilderUtils {
170170 }
171171
172172 template <typename HolderType, typename T>
173- static void unsafeAppend (HolderType& holder, std::vector <T> const & value)
173+ static void unsafeAppend (HolderType& holder, std::span <T> value)
174174 {
175175 auto status = append (holder, value);
176176 if (!status.ok ()) {
@@ -224,7 +224,7 @@ struct BuilderUtils {
224224
225225template <typename T>
226226struct BuilderMaker {
227- using FillType = T;
227+ using FillType = T const & ;
228228 using STLValueType = T;
229229 using ArrowType = typename detail::ConversionTraits<T>::ArrowType;
230230 using BuilderType = typename arrow::TypeTraits<ArrowType>::BuilderType;
@@ -276,7 +276,7 @@ struct BuilderMaker<bool> {
276276
277277template <typename ITERATOR>
278278struct BuilderMaker <std::pair<ITERATOR, ITERATOR>> {
279- using FillType = std::pair<ITERATOR, ITERATOR>;
279+ using FillType = std::pair<ITERATOR, ITERATOR> const & ;
280280 using STLValueType = typename ITERATOR::value_type;
281281 using ArrowType = arrow::ListType;
282282 using ValueType = typename detail::ConversionTraits<typename ITERATOR::value_type>::ArrowType;
@@ -361,7 +361,7 @@ struct BuilderMaker<std::array<T, N>> {
361361
362362template <typename T>
363363struct BuilderMaker <std::vector<T>> {
364- using FillType = std::vector <T>;
364+ using FillType = std::span <T>;
365365 using BuilderType = arrow::ListBuilder;
366366 using ArrowType = arrow::ListType;
367367 using ElementType = typename detail::ConversionTraits<T>::ArrowType;
@@ -647,7 +647,7 @@ class TableBuilder
647647 {
648648 auto persister = persistTuple (framework::pack<ARG0, ARGS...>{}, columnNames);
649649 // Callback used to fill the builders
650- return [persister = persister](unsigned int slot, typename BuilderMaker<ARG0>::FillType const & arg, typename BuilderMaker<ARGS>::FillType... args) -> void {
650+ return [persister = persister](unsigned int slot, typename BuilderMaker<ARG0>::FillType arg, typename BuilderMaker<ARGS>::FillType... args) -> void {
651651 persister (slot, std::forward_as_tuple (arg, args...));
652652 };
653653 }
0 commit comments