YCM is really painful to set up, but once it's running, I found myself unable to go back to anything else (even deoplete). It's auto completion for C++ based on the cmake configuration is extremely powerful.
It works surprisingly well for languages like JavaScript and rust as well.
I've used YCM quite a bit in the past, but I haven't had it installed on my new laptop (Dell XPS 13). It uses racer for Rust and Jedi for Python, both of which I already use. I should look into it again.