It's clang-based, so suffers from none of the tags-type issues: it's context-sensitive, and can see straight through gnarly stuff such as identifiers generated by token pasting.
Good points:
- Only mildly fiddly to set up
- Code browsing works well
- Code completion works well when it works
- Cute gcc/g++/etc. wrapper trick means you don't have to change any build settings
Bad points:
- Making it work with code you haven't built yourself on your local system (e.g., 3rd party stuff that's not complete, code for another platform) is less straightforward
- Code completion sometimes doesn't work with certain files (and for no reason that I've ever been able to figure out)
- It's probably my own limitations but I found it extremely inconvenient to debug (internally it's surprisingly complicated: separate client and server, lots of lengthy command lines, client code writes elisp code to stdout and elisp in emacs eats it up, the actual completion popup is a separate package, etc.)