標準コンテナ テンプレートと不完全型
標準コンテナ テンプレートを不完全型でインスタンス化できるかどうかという疑問が生じます。特定のコンテナ構造は実際には機能するように見えるかもしれませんが、C 11 標準では §17.6.4.8 [lib.res.on.functions] でこれを明示的に禁止しています。
標準では、「…不完全な型の場合」と述べられています。 (3.9) は、そのコンポーネントに対して特に許可されていない限り、テンプレート コンポーネントをインスタンス化するときにテンプレート引数として使用されます。この制限は、メンバー関数、メンバー クラス定義、およびシグネチャに適用されますが、ブロック スコープ内の操作には適用されません。
標準ライブラリの実装では、特に必要な他のインスタンス化が成功した場合でも、不完全な型に対して失敗するテンプレートのインスタンス化を誘導することはできません。 。この禁止事項は、「小さなベクトル」のような最適化から生じる自己参照型などの潜在的な問題を防ぐことを目的としています。
不完全な型引数を明示的にサポートする std::unique_ptr クラス テンプレートなどの例外が存在します。ブロックスコープ内であっても。ただし、標準コンテナの場合、不完全型の使用に関する制限はそのまま残り、実装間で一貫した動作が保証されます。
以上が標準コンテナ テンプレートを不完全な型でインスタンス化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。