在声明模板函数时,是否可以指定给定的类型名也将被参数化?例如:
template <typename t1, typename t2<T>>
void SomeFunc()
{
t1 var;
t2<T> list;
std::invoke(&t2::insert,list,var)
}
int main()
{
SomeFunc<std::list<std::string>,std::string>();
return 0;
}
在声明模板函数时,是否可以指定给定的类型名也将被参数化?例如:
template <typename t1, typename t2<T>>
void SomeFunc()
{
t1 var;
t2<T> list;
std::invoke(&t2::insert,list,var)
}
int main()
{
SomeFunc<std::list<std::string>,std::string>();
return 0;
}
这称为模板模板参数。
如果模板形参的实参具有默认形参,则必须将它们考虑在内。例如,
std::vector
它实际上有两个类型参数。