15 #include <benchmark/benchmark.h>
22 size_t size_impl() {
return 0; }
24 template <
typename Head,
typename... Tail>
25 size_t size_impl(
const Head& head,
const Tail&... tail) {
26 return head.size() + size_impl(tail...);
33 template <
typename Head,
typename... Tail>
34 void join_impl(
std::string& s,
const char delimiter,
const Head& head,
35 const Tail&... tail) {
36 if (!
s.empty() && !head.empty()) {
42 join_impl(s, delimiter, tail...);
45 template <
typename... Ts>
48 s.reserve(
sizeof...(Ts) + size_impl(ts...));
49 join_impl(s, delimiter, ts...);