If you're passing in a pointer, you can only specify the default value of the actual pointer itself - i.e. the memory address which the pointer will be pointing to. Unless your default is 0 (i.e, NULL), that's inherently dangerous.
If you want to set a default value on the input parameter, and still pass back a new value for the parameter, the simplest way would be to have your function take a plain bool as an input (with a default value), and return the new value:
false is a literal; it is an integral constant prvalue that evaluates to zero (at compile time).
It can be used as a null pointer constant.
1 2 3 4 5 6 7 8 9 10 11 12 13
bool* pointer ;
// all these set the pointer to a null pointer
pointer = nullptr ;
pointer = 0 ;
pointer = false ; // *** warning: converting 'false' to pointer type
pointer = int(false) ;
pointer = 0ULL ;
pointer = int(0.0) ;
pointer = false + 0 ;
// this is an error
pointer = 0.0 ; // *** error: 0.0 is not an integral constant expression