@@ -164,17 +164,23 @@ std::vector<std::string> split(const std::string &str, char delimiter = ',') {
164164 }
165165 return tokens;
166166}
167- // Helper to print tuple elements
168- template <std::size_t I = 0 , typename ... Ts>
169- typename std::enable_if<I == sizeof ...(Ts), void >::type print_tuple (
170- const std::tuple<Ts...> &) {}
171-
172- template <std::size_t I = 0 , typename ... Ts>
173- typename std::enable_if <
174- I<sizeof ...(Ts), void >::type print_tuple (const std::tuple<Ts...> &t) {
175- if (I > 0 ) std::cerr << " , " ;
176- std::cerr << std::get<I>(t);
177- print_tuple<I + 1 , Ts...>(t);
167+ template <std::size_t I, std::size_t TupleSize, typename Tuple>
168+ struct print_tuple_helper {
169+ static void print (const Tuple& t) {
170+ if (I > 0 ) std::cerr << " , " ;
171+ std::cerr << std::get<I>(t);
172+ print_tuple_helper<I + 1 , TupleSize, Tuple>::print (t);
173+ }
174+ };
175+
176+ template <std::size_t TupleSize, typename Tuple>
177+ struct print_tuple_helper <TupleSize, TupleSize, Tuple> {
178+ static void print (const Tuple&) {}
179+ };
180+
181+ template <typename ... Ts>
182+ void print_tuple (const std::tuple<Ts...>& t) {
183+ print_tuple_helper<0 , sizeof ...(Ts), std::tuple<Ts...>>::print (t);
178184}
179185} // namespace
180186
0 commit comments