A default argument may not occur in the middle of the parameter list unless all parameters to the right of that argument also have default arguments.
int fun1(float var1, int k, int i=0, int j=0) ; is legal. int fun1(float var1 = 0.0f, int k, int i, int j) ; is not.
One can get around this by overloading the function:
1 2 3 4 5 6 7 8 9
int fun1(float var1, int k, int i, int j )
{
// ...
}
int fun1(float var1, int k, int j)
{
return fun1(var1, k, 0, j) ;
}
although that obviously gets a little hairy if you want to provide overloads with different variables of the same type elided from the parameter list. You might google the Named Parameter idiom if you find it necessary.