How can I write a function that accepts a variable number of arguments? Is this possible, how?
Using variadic templates, example to reproduce console.log as seen in JavaScript:
Console console;
console.log("bunch", "of", "arguments");
console.warn("or some numbers:", 1, 2, 3);
console.error("just a prank", "bro");
Filename e.g. js_console.h:
#include
#include
class Console {
protected:
template
void log_argument(T t) {
std::cout << t << " ";
}
public:
template
void log(Args&&... args) {
int dummy[] = { 0, ((void) log_argument(std::forward(args)),0)... };
cout << endl;
}
template
void warn(Args&&... args) {
cout << "WARNING: ";
int dummy[] = { 0, ((void) log_argument(std::forward(args)),0)... };
cout << endl;
}
template
void error(Args&&... args) {
cout << "ERROR: ";
int dummy[] = { 0, ((void) log_argument(std::forward(args)),0)... };
cout << endl;
}
};