模板<>模板<类型名 T> 语法有什么用?

What is template<> template<typename T> syntax for?

本文关键字:模板 gt lt 什么 类型 语法      更新时间:2023-10-16

有时我看到这样的类专用代码:

template <>
template < typename T >
class Foo<Foo2<T>>
{
...
};

对于这样的类:

template < typename T > class Foo {};
template < typename T > class Foo2 {};

我知道这段代码是什么意思,但我的问题是:鉴于没有它可以完成同样的事情,"模板<>"在类专业化中有什么用:

template <typename T> Foo<Foo2<T>> {};

是否有任何情况,不限于类专用化,需要这种语法?(模板后跟另一个模板,而不是模板模板参数(

回答我自己的问题(感谢Story Teller和Max Vollmer的提示(,这段代码是无效的:

template <>
template < typename T >
class Foo<Foo2<T>>
{
...
};

虽然,关于模板的使用<...>模板<...>语法,在模板化类中定义模板化方法是必要的。 例如:

template < T > template < U > void Foo<T>::function() { }