Не уверен, что понимаю, что именно вам нужно, но ...
Вы уверены, что вам нужна рекурсия?
Вы можете разработать что-то похожее на C ++ 17, распаковывая variadic args...
, используя инициализацию неиспользуемого массива в стиле C, следующим образом
template <typename Container, typename ... Args>
void push_back (Container & con, Args ... args ) {
using unused = int[];
(void)unused { 0, ((void)con.push_back(args), std::cout << args << std::endl, 0)... };
}
или просто следующим образом
template <typename Container, typename ... Args>
void push_back (Container & con, Args ... args ) {
using unused = int[];
(void)unused { 0, ((void)con.push_back(args), 0)... };
}
, если часть std::cout
предназначена только для целей отладки.