You are the "expert" if you know more than the rest of us
To really gain expertise on any broader topic, my educated guess is that you have to be intensively exposed to the topic for about 10000 hours (about 5 years at work).
To your question: don't focus on languages - choose a current language that serves your professional life in the short term and be prepared to learn several languages in your career. More important are the general (language) concepts and how they are implemented/available in your chosen language, how to solve problems in general, how to express your thoughts, etc. At the end of the day, programming (in whatever language) solves some real existing problems in a good enough manner. Some languages help more than the others, depend on the problem and the circumstances.
Choose an employer who has interesting problems to solve and dig into it...
If you are a student, choose a faculty that provides interesting problems to solve and dig into it...
If you are a hobbyist, choose an interesting problem to solve and dig into it...
Finally: try to do whatever you do in a team - the team helps you getting ahead with less pain.
If you really want to focus on a computer language, view it like it was with written human language: from learning the alphabet, over the vocabulary, grammar, reading, understand style, actively writing, good writing, publishing written texts, teaching language, etc. How far do you want to get?
E.g. for C++ that you mention above: how much do you know about C++? All the operators and their precedence, the type system, template programming, how inheritance and virtuality works, object model, the compiler, linker, optimization options and their effects, writing effective code, write maintainable code, writing modularized code, writing robust code, writing useful documentation, knowing the runtime system, knowing the supporting libraries, knowing the debugging and "performance" analysis tools, knowing the testing approaches and tools, avoiding memory leaks, applying patterns, knowing and applying idiomatic C++ constructs, exception handling, threading model, etc.? How far do you want to go here?
The sky is the limit
You decide how far you want to go, and where you go the "extra mile" just for fun and since you *really* want to *know* it.