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