Правильный ответ - нет, вы не можете определить только переменные аргументы, потому что механизм в C / C ++ для этого использует фиксированный аргумент для вычисления адреса, например:
void f(int a, ...) {
va_list args;
va_start(args, a); // without a, this macro DOESN'T WORK!!!
}
Ответ, который вы пометили, обходит его, по умолчанию аргументы. Но чему это должно научить новичков, так это то, что дефолт аргументов не означает, что аргументы не переданы, это означает, что вам не нужно их вводить.
void f (int a = 0, ...)
Поэтому, когда вы звоните f, вы можете написать:
f();
но внутри он пишет f (0)