Note that optional parameters must have a constant default value. It's not allowed to define an optional parameter that takes the return value of a function like now (the corresponding compilation error is Constant expression required).
For truly optional parameters (that is: optional parameters without specifying a default value), isMissing() can be used to check if an actual value was passed for the argument.