What you want will depend on what you mean by "parsing". If you want to actually pull out the separate parameters, and especially if you need to handle templates, the problem gets complicated. I'd look into just pulling code out of Inline::CPP or SWIG, since they can both handle fairly hairy declarations.
If you just need to recognize the declarations in a file, and don't care about templates, you can get away with something much simpler along the lines of what you already have, e.g. /^([\w:]+)\(([^)]*)\)/s