myTemplateTemplate期望第二個模板參數是具有一個參數的模板。 myDefaultTemplate是一個包含兩個參數的模板,第二個參數的默認類型爲int。爲什麼具有默認模板參數的模板無法在模板模板參數中用作模板參數較少的模板
在VS2008中,我得到的編譯錯誤:類模板的模板參數列表「myDefaultTemplate」不匹配模板參數「TT」
那麼,爲什麼不能使用myDefaultTemplate模板參數列表作爲只有一個參數的模板? 如果C++編譯器支持它,會有什麼負面影響嗎?
template
<typename T1, typename T2 = int>
class
myDefaultTemplate{
T1 a;
T2 b;
};
template
<typename T1, template<typename T2> class TT>
class
myTemplateTemplate{
T1 a;
TT<T1> b;
};
int main(int argc, char* argv[]){
myTemplateTemplate<int, myDefaultTemplate> bar; //error here:
return 0;
}
您應該獲得「最常使用'模板'這個詞的問題」的徽章:) :) – Praetorian