Seems like some extraneous function definition is being made for the calltip. But it never appears in the symbol list.
Actually it does: when you don't have the `(` yet, the parser extracts `ns::C::f (junk, rubbish)`. Apparently it's the `public:` part that confuses it the most, if you drop it you don't get the erroneous `f` function. So yeah it's not great, but fixing that would require getting the parser not confused by this particular invalid input.
And ... if there happen to be other functions named `f` the calltips will cycle through the prototypes of those functions and never come back to the erroneous one.
That's a "funny" side effect of the details of the issue: once you typed the `(`, the parser doesn't see a `f` any more; and when you cycle through the calltips, apparently (?) we query the possible candidates again, so at this point we don't find the erroneous `ns::C::f` as the parser doesn't report it anymore.