1.當(dāng)template parameters和call parameters之間沒有明顯聯(lián)系,而且編譯器無法推導(dǎo)出template parameters時,必須明確地再調(diào)用時指定template arguments
2.如果template parameters作為返回類型,那么也必須顯式地指定template parameters,不過你可以把這個返回類型放在template parameters的第一個位置,只指定第一template parameters,其他的讓編譯器去推導(dǎo)。
3.就像functions一樣,function templates也可以被重載。
4.在編譯的過程中,編譯器會根據(jù)每次具體使用的函數(shù)(帶有template的function),來生成具體的函數(shù)代碼實(shí)例。
5.在自變量推導(dǎo)過程中,惟有當(dāng)參數(shù)不是一個reference類型時,array才會退化為pointer(通過稱為退化)。
6.function template或class template的implement必須放在.hw文件里。常規(guī)的編程方法是把function或class的declare放在.h的文件中,把implement放在.cpp中,對應(yīng)declare的implement已經(jīng)在編譯時生成了編譯符號,所以可以在運(yùn)行時調(diào)用。而function template或class template不同,它要針對具體的template parameters去生成不同的實(shí)例,而這個過程不會去多次解析放在cpp中的實(shí)現(xiàn)。