非命名空間範圍中的顯式專業化
儘管在Clang 中成功編譯,但給定的程式碼無法在GCC 中編譯。根據 C 標準 ([temp.expl.spec]),可以在可以定義對應主模板的任何範圍內聲音明顯式特化。
此行為似乎是 GCC 中的一個錯誤。根據 CWG 727,[temp.expl.spec] 中有關明確專業化的規則已被修改,以允許在任何相關範圍內進行此類聲明。
明確專業化的範圍
原始標準規定,顯式專業化應該在包含專業模板的命名空間中聲明。但是,目前標準允許在可以定義主模板的任何範圍內明確專業化:
GCC的不遵守此更新規則將構成錯誤。該問題已被識別為 Bug 85282,目前由 GCC 開發團隊追蹤。
以上是為什麼 GCC 無法在非命名空間範圍內編譯顯式專業化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!