template <> template <typename t =“”>语法是什么?

时间:2018-09-25 05:19:59

标签: c++ c++11 templates c++14

有时候我会看到这样的类专业化代码:

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

对于这样的类:

template < typename T > class Foo {};

template < typename T > class Foo2 {};

我知道这段代码是什么意思,但是我的问题是:如果无需使用相同的代码就可以在类专门化中使用“ template <>”:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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