您可以在普通类中前向声明一个模板内部类,并将定义的类型用作任何其他前向声明的类型。
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语法是否正确?