c 為什麼存在顯式例項化 顯式具體化兩種顯式宣告模板方法?

時間 2021-06-01 18:40:34

1樓:noname

設A:explicit instantiation這是說,我已經有個模具了,你可以往裡面灌料了,任何料,塑料,鐵水,等等,灌完了,就是explicit instantiation。

B:explicit specialization這是說,我發現A模具似乎在灌「塑料」這方面還不夠專業,我希望在灌「塑料」這種東西的時候,灌到自己的A2模具裡,至於其他的料還灌A模具。那麼A2就是explicit specialization 。

而使用者看起來還是只有乙個A模具,其實當灌塑料的時候已經被匯入到A2模具裡面了。

乙個典型例子具體可以參考VS自帶STL的vector和vector

2樓:陳碩

explicit instantiation 是為了具現化模板,不可以提供新的函式體。

explicit specialization 是為了提供乙份特殊的實現,通常應該提供新的函式體。

你的後一種寫法不會具現化模板,因此「實現的功能一樣」說法不成立。

C 中能顯式定義乙個匿名變數嗎?

lichray 我應該來推銷一下自己的 proposal 嗎?算了,還是不挖坑了。類似前面某個回答,如果不在意多一層 scope 的話,這個問題可以有不用巨集的選項 ProgressLog 解釋見 冒泡 的回答,只是這裡用了 lambda,可以跨編譯器使用。 可以參考劉未鵬大神的這篇文章 C 11 ...

深思 Ruby中為什麼不能顯式的呼叫私有方法

xiaodengzi 我認為安檢根本沒用,哈爾濱沒有安檢做的非常正確。首先,安檢為什麼沒用。北京上海的安檢,完全是走形式,有的地方查包不查人,有的地方查了也是糊弄,根本起不到檢查危險品的目的。如果真是有心要搞點事出來,這個安檢根本沒有用。但是,你如果像機場那麼安檢可行嗎?同樣不可行。因為太影響效率。...

c 為什麼不隱式地定義類靜態成員?

靈劍 跟編譯鏈結過程有關係,像靜態成員這種會在靜態區分配空間的,編譯的時候必須要建立乙個符號,鏈結的時候把不同檔案裡的符號指向同乙個位置,以前必須有乙個檔案是實際分配空間,其它檔案只引用不分配,所以有宣告和定義的區別。現在有弱符號的功能了,就可以實現inline也就是宣告的同時定義了。 因為編譯和鏈...