は std::unique_ptr
C プログラミングでは、標準ライブラリ内のテンプレートの動作は、インスタンス化される型の完全性に依存することがよくあります。ほとんどのテンプレートは完全な型を必要としますが、std::unique_ptr と std::shared_ptr は例外です。
std::unique_ptr と不完全な型
std::unique_ptr では不完全な型が許可されます特定のコンテキストではタイプが異なりますが、すべてではありません。具体的には、次の場合に完全な型が必要です。
それ以外の場合は、次のような不完全な型でも機能します。 for:
std::shared_ptr および不完全型
std::shared_ptr は std::unique_ptr と同様のルールに従いますが、次の 2 つの重要な違いがあります。
次の場合に完全な型が必要です。
実装への影響
これらの完全性要件は、std::unique_ptr と std::shared_ptr の実装が異なると、不完全な型を異なる方法で処理する可能性があることを意味します。たとえば、Visual Studio 2010-SP1 の実装では、std::unique_ptr
標準要件
std::unique_ptr とstd::shared_ptr は、不完全な型を処理できないことを明示的に示していません。ただし、特定の状況下での動作に関する要件は、完全な型が必要であることを意味します。これは C 標準で説明されており、特定の操作の有効性はテンプレートでインスタンス化された型の完全性に依存すると述べられています。
結論として、std::unique_ptr と std::shared_ptr では不完全な型が許可されます。特定のコンテキストでは、特定の操作に完全な型が必要です。この要件は標準の仕様に由来しており、さまざまな実装におけるテンプレートの動作に影響を与える可能性があります。
以上が`std::unique_ptr` と `std::shared_ptr` で T の完全な定義が必要になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。