有时候我会看到这样的类专业化代码:
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>> {};
是否有需要这种语法的情况,不仅限于类专门化? (模板后跟另一个模板,而不是模板模板参数)
答案 0 :(得分:0)
回答我自己的问题(感谢Story Teller和Max Vollmer的提示),此代码无效:
template <>
template < typename T >
class Foo<Foo2<T>>
{
...
};
同时,关于模板<...>模板<...>语法的使用,有必要在模板化类中定义模板化方法。例如:
template < T > template < U > void Foo<T>::function() { }