回答
C++ 98引入了export
關鍵字它允許您在另一個翻譯單位函數模板的定義,只有其聲明編譯使用它的代碼需要。 (如果你對什麼是定義和聲明有疑問,請參閱here。基本上,你可以在另一個翻譯單元中使用函數模板實現)。這就和其他函數一樣。
但是,只有使用EDG的編譯器前端的編譯器才支持它,並不是所有的編譯器都正式支持它。事實上,我知道的唯一一個正式支持它的編譯器是Comeau C++。這就是爲什麼不幸,關鍵字被從C++ 11中刪除的原因。
我認爲可以肯定地說,一個合適的模塊系統可以治癒整個編譯模型中包含的許多缺點,但是,不幸的是,一個模塊系統不被認爲是可以解決的問題在C++ 11的合理時間內。我們將不得不希望下一個版本的標準。
單獨編譯的模板是您可以從另一個翻譯單元引入模板定義的地方,而不必在每個TU(通常在標題中)中定義它們。
基本上,他們被忽略,因爲他們幾乎不可能在複雜性方面實施,並帶來一些不幸的副作用。
我認爲任何工作實現都需要額外的永久文件寫入構建目錄,所以這真的是一個相當侵入性的功能。幸運的是,它現在消失了。 –
恩,我似乎記得Borland C++ 3有單獨的模板編譯。那大概是20年前。 – sbi
- 1. 模板,什麼是編譯
- 2. 什麼是javascript模板預編譯?
- 3. 爲什麼最簡單的模板模板不能編譯?
- 4. 什麼是編譯模板和/或編譯模板的正確過程?
- 5. 模板和獨立編譯
- 6. C++中的單獨編譯
- 7. C++ - 這個單獨的編譯代碼有什麼問題?
- 8. 是什麼::模板的意思不是讓其他TMP編譯
- 9. 爲什麼模板很慢編譯?
- 10. 編譯後的jst模板中的「this」是什麼
- 11. c + +編譯模板錯誤
- 12. 模板對象的編譯順序是什麼?
- 13. 模板代碼returntype重載不編譯。什麼是錯的
- 14. 在單獨的文件夾中將EJS模板編譯爲HTML
- 15. 這段代碼爲什麼編譯? (C++模板問題)
- 16. 爲什麼不能編譯這個C++模板代碼?
- 17. 爲什麼不會這個模板函數編譯C++
- 18. 爲什麼C++函數模板代碼不能編譯?
- 19. 爲什麼C++編譯器不能推斷模板參數?
- 20. 爲什麼不編譯這個C++模板代碼?
- 21. Jade.escape是編譯玉模板
- 22. C++函數模板編譯錯誤「'containerType'不是模板」
- 23. OCaml模塊的單獨編譯
- 24. 在GHC中編譯單獨的模塊
- 25. Handlebar.js預編譯模板;這是什麼意思?
- 26. C++模板編程爲在編譯時
- 27. 什麼是C++中的模板
- 28. 模擬Microsoft C編譯器行爲的GCC選項是什麼?
- 29. 什麼是「DNS_BLOCK_ASSERTIONS」(C編譯器標誌)?
- 30. C++模板類的編譯錯誤
爲什麼「不幸」?即使這個特徵的作者也認爲它的設計和規定很差,並且會有更好的方法來處理這個問題。 –
@Ben:儘管存在一些缺點,但它確實刪除了重新編譯整個項目的必要性,因爲一個輔助模板發生了變化,它只被一個輔助模板使用,而這個輔助模板只能被一個包含在任何地方的模板使用。至少,Daveed Vandervorde(實施它)說,它的確提供了這個功能。當時我正在爲一家剛剛爲[IncrediBuild](http://www.xoreax.com/visual_studio.htm)花費五位數的公司工作,爲了讓我們再次獲得高生產力,儘管所有幫助者幾個MLoC項目中的輔助模板。 '出口'會更便宜。 – sbi
depracated?我認爲這是平坦的刪除。其中一件事實際上不會破壞任何現有的代碼。 –