A. 模板實例化失敗可能得原因
編譯出錯,鏈接出錯,或程序實例化。程序員在使用模板類時最常犯的錯誤是將模板類視為某種數據類型。
所謂類型參量化(parameterized types)這樣的術語導致了這種誤解。模板當然不是數據類型,模板就是模板,恰如其名:編譯器
使用模板,通過更換模板參數來創建數據類型。這個過程就是模板實例化(Instantiation)。
從模板類創建得到的類型稱之為特例(specialization)。模板實例化取決於編譯器能夠找到可用代碼來創建特例(稱之為實例化要素,
point of instantiation)。
要創建特例,編譯器不但要看到模板的聲明,還要看到模板的定義。模板實例化過程是遲鈍的,即只能用函數的定義來實現實例化。
編譯器可以解析模板定義並檢查語法,但不能生成成員函數的代碼。它無法生成代碼,因為要生成代碼,需要知道模板參數,即需要
一個類型,而不是模板本身。