I’m still experimenting with tagging in Emacs. I think my current favorite is using gnu-global.
Unfortunately I just joined a team where all their c++ header files start with .h. By default gnu-global treats these as c, and results are poor. While I think there’s a more sophisticated way to handle the problem, I just use:
export GTAGSFORCECPP=””