RHS の演算子のオーバーロードと初期化子リスト
C プログラミングでは、初期化子リストは、式のリストを使用して集合オブジェクトを初期化するための簡潔な構文です。 。イニシャライザ リストはさまざまなシナリオで便利に使用できますが、演算子の右側 (RHS) でのイニシャライザ リストの使用法が議論のポイントとなっています。
イニシャライザ リストが RHS で制限されている理由
C 11 では、二項演算子 << を含む演算子の RHS に初期化子リストを使用できません。コードで使用されます。この制限にはいくつかの理由があります:
初期化子リストの例外
に関する一般的な制限にもかかわらず、演算子の引数でイニシャライザ リストを使用する場合、C はイニシャライザ リストが存在する特定の例外を定義します。受け入れられます:
コード内では、 << 内で呼び出される bar コンストラクターへの引数として初期化子リストを使用できます。演算子:
foo baz; baz << bar{1, -2, "foo", 4, 5}; // Legal
制限の理由
演算子の RHS で初期化子リストを制限する決定は、一貫性のある明確な文法を維持したいという要望から生じています。すべてのコンテキストでイニシャライザ リストを許可すると、言語にさらなる複雑さと潜在的なあいまいさが生じます。
質問で言及されたディスカッション ペーパーに記載されているように、RHS ではイニシャライザ リストを許可するが、LHS では許可しないという代替案が検討されました。問題が多すぎる。したがって、特定のコンテキストでのみ初期化リストを許可するという保守的なアプローチが選択されました。
以上がC 演算子の右側でイニシャライザ リストを使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。