Regex para analisar declarações de funções C / C ++

Preciso analisar e dividir as funções C e C ++ nos componentes principais (tipo de retorno, nome da função / classe e método, parâmetros, etc.).

Estou trabalhando em cabeçalhos ou em uma lista em que as assinaturas assumem a forma:

public: void __thiscall myClass :: method (int, classe myOtherClass *)

Eu tenho o seguinte regex, que funciona para a maioria das funções:

(?<expo>public\:|protected\:|private\:) (?<ret>(const )*(void|int|unsigned int|long|unsigned long|float|double|(class .*)|(enum .*))) (?<decl>__thiscall|__cdecl|__stdcall|__fastcall|__clrcall) (?<ns>.*)\:\:(?<class>(.*)((<.*>)*))\:\:(?<method>(.*)((<.*>)*))\((?<params>((.*(<.*>)?)(,)?)*)\)

Existem algumas funções que ele não gosta de analisar, mas parecem corresponder ao padrão. Não estou preocupado com a correspondência de funções que não são membros de uma classe no momento (podemos lidar com isso mais tarde). A expressão é usada em um programa C #, portanto, o<label>s são para recuperar facilmente os grupos.

Gostaria de saber se existe um regex padrão para analisar todas as funções, ou como melhorar o meu para lidar com as exceções ímpares?

questionAnswers(3)

yourAnswerToTheQuestion