「弱い型付け」はかなり主観的な用語です。私は、 「厳密に型付けされた」および「静的に型付けされた」という用語よりも、 「緩やかに型付けされた」および「動的に型付けされた」という用語を好みます。それらはより客観的で正確な言葉だからです。
私が知る限り、人々は一般的に「弱い型付け」を軽蔑的な用語として使用します。これは、「この言語の型の概念が好きではない」という意味です。これは、特定の言語に対して専門的または技術的な議論を持ち出すことができない人のための一種の論争です。
「厳密に型指定された」という用語にも、わずかに異なる解釈があります。私の経験では、一般的に受け入れられている意味は、「型が一致しない場合、コンパイラはエラーを生成する」です。別の解釈は、「暗黙の変換がまったくないか、ほとんどない」というものです。これに基づいて、C++ は実際には厳密に型付けされた言語と見なすことができ、ほとんどの場合、そのように見なされます。C++ に関する一般的なコンセンサスは、厳密に型指定された言語であるということです。
もちろん、質問に対してより微妙なアプローチを試みて、言語の一部は厳密に型付けされている (これがほとんどの場合)、他の部分は緩く型付けされている (算術変換や 4 つの型などのいくつかの暗黙の変換) と言うことができます。明示的な変換の)。
さらに、一部のプログラマー、特にいくつかの言語に精通していない初心者は、「厳密」と「静的」、「緩い」と「動的」を区別するつもりがないか、区別できません。そして、限られた経験に基づいて、この 2 つの概念 (そうでなければ直交する概念) を混同します (通常、一般的なスクリプト言語におけるダイナミズムとルーズ タイピングの相関関係など)。
実際には、C++ の一部 (仮想呼び出し) では、型システムが部分的に動的であるという要件が課されていますが、標準の他の部分では厳密である必要があります。繰り返しますが、これらは直交する概念であるため、これは問題ではありません。
要約すると、おそらくどの言語も1 つのカテゴリまたは別のカテゴリに完全に完全に適合することはありませんが、特定の言語の特定の特性が支配的であると言えます。C++ では、厳格さが間違いなく支配的です。