Is there any particular reason why this is accepted? (I introduced it by mistake): void foo(int = 3) {} I guess it could be useful to ensure binary compatibility when you expect to add the parameter later?