var call_with_ptr(var self, var* args) { int num = 0; while(args[num] != (var)-1) { num++; } return call_with(self, $(List, num, num, args, 0)); }
friend std::string to_string(const select_query& q, Formatter& formatter) { std::string(*build_fn)(const TColumns&..., Formatter&) = &impl::select_query_impl<TColumns...>::build_select_query; return call_with(build_fn, q._columns, formatter); }