2012-06-04 40 views
0

使用XCode 4.2編譯crypto ++時,我收到多個警告,「extern模板的所有實例都是C++ 11擴展」。這是什麼意思,並會影響輸出可執行文件的兼容性?extern模板是一個c + + 11擴展是什麼意思?

+0

是否有一些類模板成員函數定義位於單獨的實現文件中(即不在類模板定義的頭文件中)? – dirkgently

回答

5

聲明模板「外部」指的是編譯器應該實例化一個給定的模板這個翻譯單元,因爲它會在另一個編譯單元已經被實例化。這是爲了減少編譯時間。

此功能已經與C++ 11一起添加,因此編譯器沒有實際指示在C++ 11模式下運行但知道該問題可能會生成類似於您所看到的警告。

Ref。 Wikipedia

+8

等待,所以「extern模板是一個c + + 11擴展」意味着extern模板是一個c + + 11擴展? –

+0

@ ta.speot.is:是的,有時編譯器的錯誤信息意味着它說的是什麼。 ;-) – DevSolar