@@ -1061,15 +1061,15 @@ struct TableIterator : IP, C... {
10611061
10621062 TableIterator (arrow::ChunkedArray* columnData[sizeof ...(C)], IP&& policy)
10631063 : IP{policy},
1064- C (columnData[framework::has_type_at_v<C>(all_columns {})])...
1064+ C (columnData[framework::has_type_at_v<C>(framework::pack<C...> {})])...
10651065 {
10661066 bind ();
10671067 }
10681068
10691069 TableIterator (arrow::ChunkedArray* columnData[sizeof ...(C)], IP&& policy)
10701070 requires (has_index<C...>)
10711071 : IP{policy},
1072- C (columnData[framework::has_type_at_v<C>(all_columns {})])...
1072+ C (columnData[framework::has_type_at_v<C>(framework::pack<C...> {})])...
10731073 {
10741074 bind ();
10751075 // In case we have an index column might need to constrain the actual
@@ -1147,60 +1147,38 @@ struct TableIterator : IP, C... {
11471147 return *this ;
11481148 }
11491149
1150- template <typename ... CL, typename TA>
1151- void doSetCurrentIndex (framework::pack<CL...>, TA* current)
1152- {
1153- (doSetCurrentIndexImpl<CL>(current), ...);
1154- }
1155-
11561150 template <typename CL>
11571151 auto getCurrent () const
11581152 {
11591153 return CL::getCurrentRaw ();
11601154 }
11611155
1162- template <typename ... Cs>
1163- auto getIndexBindingsImpl (framework::pack<Cs...>) const
1156+ auto getIndexBindings () const
11641157 {
11651158 std::vector<o2::soa::Binding> result;
1166- (doGetIndexBindingImpl<Cs >(result), ...);
1159+ (doGetIndexBindingImpl<C >(result), ...);
11671160 return result;
11681161 }
11691162
1170- auto getIndexBindings () const
1171- {
1172- return getIndexBindingsImpl (all_columns{});
1173- }
1174-
11751163 template <typename ... TA>
11761164 void bindExternalIndices (TA*... current)
11771165 {
1178- (doSetCurrentIndex (all_columns{}, current), ...);
1179- }
1180-
1181- template <typename ... Cs>
1182- void doSetCurrentIndexRaw (framework::pack<Cs...> p, std::vector<o2::soa::Binding>&& bindings)
1183- {
1184- (doSetCurrentIndexRawImpl<Cs>(bindings[framework::has_type_at_v<Cs>(p)]), ...);
1185- }
1186-
1187- template <typename ... Cs, typename I>
1188- void doSetCurrentInternal (framework::pack<Cs...>, I const * ptr)
1189- {
1190- o2::soa::Binding b;
1191- b.bind (ptr);
1192- (doSetCurrentInternalImpl<Cs>(b), ...);
1166+ ([this ]<typename ... Cs, typename TT>(framework::pack<Cs...>, TT* t){
1167+ (doSetCurrentIndexImpl<Cs>(t), ...);
1168+ }(framework::pack<C...>{}, current), ...);
11931169 }
11941170
11951171 void bindExternalIndicesRaw (std::vector<o2::soa::Binding>&& bindings)
11961172 {
1197- doSetCurrentIndexRaw (all_columns{}, std::forward<std::vector<o2::soa::Binding>>(bindings) );
1173+ (doSetCurrentIndexRawImpl<C>(bindings[framework::has_type_at_v<C>(framework::pack<C...>{})]), ... );
11981174 }
11991175
12001176 template <typename I>
12011177 void bindInternalIndices (I const * table)
12021178 {
1203- doSetCurrentInternal (all_columns{}, table);
1179+ o2::soa::Binding b;
1180+ b.bind (table);
1181+ (doSetCurrentInternalImpl<C>(b), ...);
12041182 }
12051183
12061184 private:
0 commit comments