Kde překladač píše chybu? Jestli je problém s aplikací operátoru <<, zkusil bych něco takovéhoto:
template <typename T, typename ... Args>
class logger {
static void log (T & a1, Args & ... args)
{
cout << T;
log(args);
}
}
template <>
class logger {
static void log ()
{
cout << endl;
log(args);
}
}
Prostě takový trošku funkcionální přístup. Ale berte to jen přibližně, už je to pár let, co jsem si s tímhle hrál. Obvykle se v těchto případech spokojím s variadickým pojetím funkcí z C a formátovacími řetězci.