C ++の「優れた」知識を構成するものについて、広く受け入れられている定義があるとは思いません。
言語、フレームワーク、プラットフォーム、または何を持っているかについての「良い」、「優れた」、「優れた」などの知識を構成するものに対する明確な答えを出すのは難しい傾向があります。多くの場合、本当に役立つ知識と、基本的に多くの雑学を知っている知識の間に明確な線を引くことは特に困難です。
これは、C ++のように数十年前からあり、多くの異なる方法で適用され、その期間にわたってさまざまなスタイルで記述されている場合に特に当てはまります。問題をうまく解決するためにそれを使用することとほとんどまったく関係のない言語について誰かが学ぶことができる恐ろしいほどの量があります。オーバーロードの解決や関数テンプレートの部分的な順序付けなど、すべてのルールを知っていることは、コンパイラー(または非常によく似たもの)で作業する人を雇おうとしている場合にのみ役立ちます。私はC ++を最初にかなり広く利用できるようになって以来使用しており、実際のコードで関数テンプレートの部分的な順序をまだ使用していません(または使用したくありません)。
質問に技術的に対応するわけではありませんが、求人広告にそのような要件を含む人には、ある程度のバランスを保つように助言することを急いでいます。問題解決能力や一般的なアルゴリズムなどを犠牲にして、プログラミング言語が過度に強調されることがよくあると思います。プログラミング言語をよく理解することは、ソリューションを適切に表現するのに役立ちますが、通常、ソリューション自体の設計には(せいぜい)最小限の助けになります。うまく表現されていない優れたソリューションは、どれだけうまく表現されていても、事実上常に平凡なソリューションを打ち負かします。