在模板類CConstraint 中,int 的Verify 成員函數的明確專業化是在類別的命名空間之外定義的。由於違反 C 標準,這會導致 g 中出現錯誤。
根據 C 03 §14.7.3/2,必須在模板所屬的命名空間中聲明顯式特化,或者對於成員模板,位於封閉類或封閉類模板所屬的命名空間中。
要解決此問題,必須在CConstraint 的命名空間。這可以透過使用以下修改後的程式碼來實現:
<br>template<typename t><br>class CConstraint<br>{<br>public:<p>};<br></p></typename>
此外,由於成員函數的明確特化需要包含類別的明確特化,更好的解決方案是將Verify函數移出類別並放入單獨的函數中命名空間:
<br>命名空間詳細資訊<br>{<p>}</p><p>模板<br>類CConstraint<br>{</p><p>};<br></p>
以上是為什麼在其命名空間之外對成員函數進行明確特化會導致 C 編譯錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!