С здесь ,
Параметры с аргументами по умолчанию должны быть конечными параметрами в списке параметров объявления функции.
Например:
void f(int a, int b = 2, int c = 3); // trailing defaults
void g(int a = 1, int b = 2, int c); // error, leading defaults
void h(int a, int b = 3, int c); // error, default in middle
Так что, если вы являетесь тем, кто объявляет и определяет вашу spawn()
функцию, у вас могут быть значения по умолчанию в конце .. И наоборот не возможно ..