Lou*_*uen 5 c++ templates nested
您可以在普通类中转发声明模板内部类,并将定义的类型用作任何其他前向声明的类型.
class Outer {
    template <int N> class Inner;
    typedef Inner<0> Inner0;
    Inner0* f();
};
template<int N>
class Outer::Inner {};
现在如果Outer本身就是一个模板类,有没有办法将Inner的声明保持在Outer声明之外?就像是 :
template<typename T>
class Outer {
    template <int N> class Inner;
    typedef Inner<0> Inner0;
    Inner0* f();
};
template<typename T, int N> //This won't work
class Outer<T>::Inner {};
是否有正确的语法来使用正确的模板参数声明Outer?
请尝试以下方法
template<typename T>
template <int N>
class Outer<T>::Inner {};
根据C++标准(14.5.2会员模板)
1可以在类或类模板中声明模板; 这样的模板称为成员模板.可以在其类定义或类模板定义之内或之外定义成员模板.应使用类模板的模板参数和成员模板的模板参数指定在其类模板定义之外定义的类模板的成员模板.
| 归档时间: | 
 | 
| 查看次数: | 1139 次 | 
| 最近记录: |