是 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 類似的規則,但有兩個關鍵區別:
在以下情況下需要完整類型:
實現的影響
這些完整性要求意味著std::unique_ptr 和 std::shared_ptr 的不同實作可能會以不同的方式處理不完整型別。例如,Visual Studio 2010-SP1 實作可能需要類型 T 的完整定義來實例化 std::unique_ptr
標準要求
std::unique_ptr 和 std::shared_ptr 的標準沒有明確聲明它們不能使用不完整的類型。然而,在某些情況下對其行為的要求意味著完整的類型是必要的。 C 標準對此進行了解釋,其中規定某些操作的有效性取決於模板實例化類型的完整性。
總而言之,而 std::unique_ptr 和 std::shared_ptr 允許不完整類型在特定的上下文中,它們需要完整的類型來執行某些操作。此要求源自於標準的規範,可能會影響不同實作中模板的行為。
以上是`std::unique_ptr` 和 `std::shared_ptr` 何時需要 T 的完整定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!