我们可以为属于 class 模板的 class 模板定义超出 class 的定义吗?
Can we have an out of class definition for a class template that is a member of a class template
我知道以下代码段有效:
template<typename T>
struct Custom
{
template<typename V> void func();
};
//valid
template<typename T>
template<typename V>
void Custom<T>::func()
{
}
但是我们可以对 class 模板 而不是 成员函数模板 做同样的事情吗?举个例子,
template<typename T>
struct Custom
{ //declaration here
template<typename V> struct InnerCustom;
};
//can we define the class template `InnerCustom` outside?
template<typename T>
template<typename V>
Custom<T>::InnerCustom
{
};
我的问题是,我们可以为 class 模板成员 InnerCustom
提供一个超出 class 的定义,就像我们为成员函数模板 func
所做的那样吗?如果是这样,我该怎么做。另外,if 不就是造成这种差异的原因吗
是的,您可以根据 class 定义 InnerCustom
:
template <typename T>
template <typename V>
struct Custom<T>::InnerCustom { // note: `struct` added
// ...
};
我知道以下代码段有效:
template<typename T>
struct Custom
{
template<typename V> void func();
};
//valid
template<typename T>
template<typename V>
void Custom<T>::func()
{
}
但是我们可以对 class 模板 而不是 成员函数模板 做同样的事情吗?举个例子,
template<typename T>
struct Custom
{ //declaration here
template<typename V> struct InnerCustom;
};
//can we define the class template `InnerCustom` outside?
template<typename T>
template<typename V>
Custom<T>::InnerCustom
{
};
我的问题是,我们可以为 class 模板成员 InnerCustom
提供一个超出 class 的定义,就像我们为成员函数模板 func
所做的那样吗?如果是这样,我该怎么做。另外,if 不就是造成这种差异的原因吗
是的,您可以根据 class 定义 InnerCustom
:
template <typename T>
template <typename V>
struct Custom<T>::InnerCustom { // note: `struct` added
// ...
};