使用Extern Template 最佳化範本實例化
在C 11 中,extern template 是一個強大的關鍵字,可以用來避免冗餘餘實例化模板,特別是當多個翻譯單元(例如.cpp文件)可能包含包含模板的同一頭文件時
Extern 模板的概念
Extern 模板本質上通知編譯器當前翻譯單元不應該實例化特定模板,即使它是在包含的模板中聲明的標頭。當您知道模板將在同一專案的不同翻譯單元中實例化時,這非常有用。
函數模板的用法
對於函數模板,外部模板聲明可以如下使用:
這表示f 模板將在項目的f 模板將在項目的f 模板其他地方定義,不應該被定義在目前文件中實例化。
類模板的使用
類似地,對於類模板,外部模板聲明採用以下形式:
這確保了 foo模板類別不會在此特定翻譯中實例化
最佳化應用
考慮以下場景:
沒有extern template,兩個source1.cpp而source2.cpp會實例化f模板,導致多個定義,浪費編譯時間。透過在其中一個文件中使用extern 模板,我們可以避免這種冗餘:
要點
以上是外部模板如何優化 C 中的模板實例化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!