首頁 > 後端開發 > C++ > 標準容器模板可以用不完整的型別實例化嗎?

標準容器模板可以用不完整的型別實例化嗎?

Barbara Streisand
發布: 2024-11-04 14:59:40
原創
1023 人瀏覽過

Can Standard Container Templates be Instantiated with Incomplete Types?

標準容器範本和不完整型別

問題是標準容器範本是否可以用不完整型別實例化。雖然某些容器結構在實務上似乎可行,但 C 11 標準在 §17.6.4.8 [lib.res.on.functions] 下明確禁止這種情況。

該標準指出,「…如果不完整的類型(3.9) 在實例化模板組件時用作模板參數,除非該組件特別允許。」此限制適用於成員函數、成員類定義和簽名,但不適用於區塊作用域內的操作。

標準函式庫實作無法引發因不完整型別而失敗的範本實例化,即使其他特別需要的實例化成功。此禁令旨在防止潛在問題,例如由「小向量」等最佳化引起的自引用類型。

存在異常,例如 std::unique_ptr 類別模板,它明確支援不完整的類型參數,即使在區塊範圍內。然而,對於標準容器,使用不完整類型的限制仍然存在,確保跨實現的行為一致。

以上是標準容器模板可以用不完整的型別實例化嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板