You ought to strive to name your functions well enough that they do not need to include the parameter name to be clear as to what they do. If you see a method prototype:
void save(const std::string&);
what is it doing? Is it saving that string? Or is it saving to a filepath represented by the string? Or...?
So you could do:
void save(const std::string& filepath);
to clarify. But this only clarified when someone is looking to at the header. If instead you do:
void saveToFilepath(const std::string&);
it should be quite clear everywhere. Of course, as you add more paramters, this becomes more cumbersome (but is one more reason to not add too many parameters; see Bob Martin's Clean Code on that; he commends nullary and unary functions, is hesitant about binary functions, quite reticent about trinary functions, and unwilling for any more than that).
So my advice is strive to not have a reason to include your parameters names in your function headers, not so much as an end in itself (though I am all for every bit of reduced duplication and increased brevity) but as a heuristic for how well you are naming your functions. (Note that if you are working with legacy code, you may want to cut yourself slack—but with the end goal in mind.)
This approach means that you will have to stop and think every time you type in a function header to check yourself, rather than following a black-and-white rule about whether to include the parameter names. Programmers tend to prefer to charge ahead rather than stopping to think about things like naming, but stopping to reflect is valuable on many different levels.
In sum, strive to not need to include the parameter names in the headers; and when you don't need them, don't bother to include them, for brevity and reduced duplication.