The explanation is simple:
Here is the definition of the macro F():
#define F(string_literal) (reinterpret_cast<__FlashStringHelper*>(PSTR(string_literal)))
This macro gives you a pointer to the class __FlashStringHelper, so that is what your code needs to accept as a formal parameter.