If this is a valid [formal] parameter, what does it mean?
Yes ... the unnamed [formal] parameter is valid and useful in least two ways.
1) an invoking code can provide an [actual] parameter, even if the [formal] parameter is not named. This does not require the implementation to use it, and is a common approach to avoiding some specific warnings.
example:
int main (int, char**) { return foo(); }
int main (int argc, char* argv[]) { return foo(argc, argv); }
Both are valid implementations. In the first, foo has no use for the parameters, and by not naming them, the compiler will not generate warnings about 'unused arguments'. Yes, the runtime always presents an argc, but it will be 0 when the shell finds no parameters. Note that in the first example, the int (for argc) will be provided (the value 0 indicates the array does not), and the invocation of foo() never references it.
2) the function parameters contribute to the 'signature' of a function.
Mystring& foo(const char * ); // 1
Mystring& foo(); // 2
Mystring& foo(const int& ); // 3
the 3 foo(...)'s are unique. This allows the compiler to select the best match (or generate an error that the invocation does not match any version), and the linker to find the appropriate implementation of foo().
And if it's not valid, why doesn't it generate an error?
The [formal] and [actual] function parameters have always been a part of the language i.e. they are valid. So there is no error. You should review the topic if you don't remember them.