GCC 錯誤:非命名空間範圍中的顯式專業化
問題:
為什麼當在a 中明確專門化成員函數模板時,以下程式碼無法在GCC 中編譯類別?
template<typename T> struct Widget { template<typename U> void foo(U) { } template<> void foo(int*) { } };
答案:
根據C 標準([temp.expl.spec],第2 段),明確特化可以在任何可以定義相應的主模板的範圍。因此,程式碼也應該在 GCC 中編譯。
GCC 錯誤和報告:
在 GCC 中編譯失敗可能是錯誤。要回報問題,請按照以下步驟操作:
標準參考:
C 標準部分[temp.expl.spec] 第2 段指出:
An明確專業化可以在定義相應主模板的任何範圍內聲明。
以上是為什麼 GCC 無法編譯類別中成員函數模板的明確特化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!