Rtags is accurate, if code compiles. But it will fail with preprocessed code bits. For instance, if there are separate pieces for linux and for windows, only one of them will be compiled at a time.
The feature, which impressed me the most is “rename symbol under cursor”. That’s already a feature of IDE: refactoring.
Note: to reduce SSD wear I tend to use
tmpfs for transient data everywhere.