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;
}