The problem with the C++ example is that `setter`, `getter`, `indexer` are types not functions, they should be highlighted as types. Whilst `pl::Path::root`, pl::Path::segment` and `pl::Path::scheme` are functions and should be highlighted as such.
(Ok, I was mean not telling you that, but I want to make the point that in C++, purely syntax does not designate a function.)
usually no one use such prototypes, usually parameters names present in prototypes
In C the names are not left out, but in C++ it is more common, and as I said above if a parameter is not used the name _must_ be left out to avoid compiler warnings. Remember in C++ a derived class can override functions of a parent class, but often doesn't need to use all the parameters.
Thanks for the opportunity to use my catch phrase "C++ is not C". Assumptions that its just C with classes are wrong, it has evolved into a very different language. Thats why I suggested above that its ok to submit this to Scintilla for C (and any other Lexcpp languages that it works for) but not yet C++.