C コンテナによる不完全型の禁止の根拠
C プログラミングの世界では、コンテナはデータの編成と操作に不可欠なデータ構造です。ただし、C コンテナーの独特な特徴の 1 つは、不完全型を嫌うことです。なぜそうなるのでしょうか?
その答えは C の歴史的な進化にあります。初期の頃、標準テンプレート ライブラリ (STL) の実装は、不完全な型を持つコンテナーの処理に苦労していました。安定性と下位互換性を維持するために、標準化委員会は C 標準でそのようなコンテナを完全に禁止することを決定しました。
この制限は、再帰的なデータ構造を防ぐのに特に効果的でした。また、既存の STL 実装が、予期せぬ問題を引き起こすことなく意図したとおりに機能し続けることが保証されました。
しかし、不完全な型の禁止は、いくつかの批判も引き起こしています。これは特定の高度なデータ構造の実装を制限するものであり、C 標準の将来のリビジョンで再検討することで恩恵を受けるでしょう。
標準コンテナは不完全な型を嫌うままですが、boost::container の背後にいるようなライブラリ設計者は、この制限を課さない独自のコンテナを作成する取り組み。この決定により、C プログラミングの多用途性と柔軟性が向上します。
更新:
C 17 の出現により、標準 C ライブラリの特定のコンテナが次のように修正されました。不完全な型を許可します。ただし、これは普遍的な変更ではなく、標準のほとんどのコンテナに対して一般的な禁止事項が引き続き適用されます。
以上がC 標準コンテナが通常、不完全な型を禁止するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。