@@ -1058,15 +1058,15 @@ struct TableIterator : IP, C... {
10581058
10591059 TableIterator (arrow::ChunkedArray* columnData[sizeof ...(C)], IP&& policy)
10601060 : IP{policy},
1061- C (columnData[framework::has_type_at_v<C>(all_columns {})])...
1061+ C (columnData[framework::has_type_at_v<C>(framework::pack<C...> {})])...
10621062 {
10631063 bind ();
10641064 }
10651065
10661066 TableIterator (arrow::ChunkedArray* columnData[sizeof ...(C)], IP&& policy)
10671067 requires (has_index<C...>)
10681068 : IP{policy},
1069- C (columnData[framework::has_type_at_v<C>(all_columns {})])...
1069+ C (columnData[framework::has_type_at_v<C>(framework::pack<C...> {})])...
10701070 {
10711071 bind ();
10721072 // In case we have an index column might need to constrain the actual
@@ -1144,60 +1144,38 @@ struct TableIterator : IP, C... {
11441144 return *this ;
11451145 }
11461146
1147- template <typename ... CL, typename TA>
1148- void doSetCurrentIndex (framework::pack<CL...>, TA* current)
1149- {
1150- (doSetCurrentIndexImpl<CL>(current), ...);
1151- }
1152-
11531147 template <typename CL>
11541148 auto getCurrent () const
11551149 {
11561150 return CL::getCurrentRaw ();
11571151 }
11581152
1159- template <typename ... Cs>
1160- auto getIndexBindingsImpl (framework::pack<Cs...>) const
1153+ auto getIndexBindings () const
11611154 {
11621155 std::vector<o2::soa::Binding> result;
1163- (doGetIndexBindingImpl<Cs >(result), ...);
1156+ (doGetIndexBindingImpl<C >(result), ...);
11641157 return result;
11651158 }
11661159
1167- auto getIndexBindings () const
1168- {
1169- return getIndexBindingsImpl (all_columns{});
1170- }
1171-
11721160 template <typename ... TA>
11731161 void bindExternalIndices (TA*... current)
11741162 {
1175- (doSetCurrentIndex (all_columns{}, current), ...);
1176- }
1177-
1178- template <typename ... Cs>
1179- void doSetCurrentIndexRaw (framework::pack<Cs...> p, std::vector<o2::soa::Binding>&& bindings)
1180- {
1181- (doSetCurrentIndexRawImpl<Cs>(bindings[framework::has_type_at_v<Cs>(p)]), ...);
1182- }
1183-
1184- template <typename ... Cs, typename I>
1185- void doSetCurrentInternal (framework::pack<Cs...>, I const * ptr)
1186- {
1187- o2::soa::Binding b;
1188- b.bind (ptr);
1189- (doSetCurrentInternalImpl<Cs>(b), ...);
1163+ ([this ]<typename ... Cs, typename TT>(framework::pack<Cs...>, TT* t){
1164+ (doSetCurrentIndexImpl<Cs>(t), ...);
1165+ }(framework::pack<C...>{}, current), ...);
11901166 }
11911167
11921168 void bindExternalIndicesRaw (std::vector<o2::soa::Binding>&& bindings)
11931169 {
1194- doSetCurrentIndexRaw (all_columns{}, std::forward<std::vector<o2::soa::Binding>>(bindings) );
1170+ (doSetCurrentIndexRawImpl<C>(bindings[framework::has_type_at_v<C>(framework::pack<C...>{})]), ... );
11951171 }
11961172
11971173 template <typename I>
11981174 void bindInternalIndices (I const * table)
11991175 {
1200- doSetCurrentInternal (all_columns{}, table);
1176+ o2::soa::Binding b;
1177+ b.bind (table);
1178+ (doSetCurrentInternalImpl<C>(b), ...);
12011179 }
12021180
12031181 private:
0 commit comments