Is it possible to give a default value to a parameter of a function while we are passing the parameter by reference. in C++
For example, when I try to declare a function like:
virtual const ULONG Write(ULONG &State = 0, bool sequence = true);
When I do this it gives an error:
error C2440: 'default argument' : cannot convert from 'const int' to 'unsigned long &'
A reference that is not to 'const' cannot be bound to a non-lvalue
Best Answer
You can do it for a const reference, but not for a non-const one. This is because C++ does not allow a temporary (the default value in this case) to be bound to non-const reference.
One way round this would be to use an actual instance as the default:
but this is of very limited practical use.