That's because the type of DefaultVal is void ( int ). Function types cannot encode the default'ness of parameters.