局部模板類專業化的以下基本示例中,從this wiki page採取:模板類部分特例語法
template <typename Key, typename Value>
class KeyValuePair { /* something generic */ };
template <typename Key>
class KeyValuePair<Key, bool> { /* something specific to Value=bool */ };
KeyValuePair<int> kvpi;
生成編譯器錯誤:
prog.cpp:10:17: error: wrong number of template arguments (1, should be 2) KeyValuePair<int> kvpi;
爲什麼呢?我究竟做錯了什麼 ? 應該如何聲明和實例化部分模板類專業化?
我期待變量kvpi
是KeyValuePair<int,bool>
類型的部分專用模板類實例。
你有什麼期望'Value'在'KeyValuePair'? –
TartanLlama
@TartanLlama:在'KeyValuePair'中,我期望'Value'是'bool',但我沒有明確地定義部分特殊化來正確地這樣做。 –
shrike
@shrike部分專業化並不按照您期望的方式工作。您將不得不提供密鑰和值類型。只有當值類型爲bool時,它纔會選擇專門的類實現,對於所有其他類型,它將使用第一個實現。 – Arunmu