首頁 >後端開發 >C++ >外部模板如何優化 C 中的模板實例化?

外部模板如何優化 C 中的模板實例化?

Patricia Arquette
Patricia Arquette原創
2024-12-12 21:52:14181瀏覽

How Can Extern Templates Optimize Template Instantiation in C  ?

使用Extern Template 最佳化範本實例化

在C 11 中,extern template 是一個強大的關鍵字,可以用來避免冗餘餘實例化模板,特別是當多個翻譯單元(例如.cpp文件)可能包含包含模板的同一頭文件時

Extern 模板的概念

Extern 模板本質上通知編譯器當前翻譯單元不應該實例化特定模板,即使它是在包含的模板中聲明的標頭。當您知道模板將在同一專案的不同翻譯單元中實例化時,這非常有用。

函數模板的用法

對於函數模板,外部模板聲明可以如下使用:

這表示f 模板將在項目的f 模板將在項目的f 模板其他地方定義,不應該被定義在目前文件中實例化。

類模板的使用

類似地,對於類模板,外部模板聲明採用以下形式:

這確保了 foo模板類別不會在此特定翻譯中實例化

最佳化應用

考慮以下場景:

沒有extern template,兩個source1.cpp而source2.cpp會實例化f模板,導致多個定義,浪費編譯時間。透過在其中一個文件中使用extern 模板,我們可以避免這種冗餘:

要點

  • 僅當您確定該模板將在專案的其他地方實例化。
  • 它適用於函數模板和類別模板,因為以及模板成員函數。
  • 使用 extern 範本可以顯著減少編譯時間並最佳化目標檔案大小,特別是在使用大型或頻繁使用的範本時。

以上是外部模板如何優化 C 中的模板實例化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn