首先看代码,静态数据成员分为两种情况,第一种不依赖模版类型参数,第二种依赖模版类型参数。
template <typename T> class TestTemStatic
{
public:
static int knownTypeVar;
static T unKnownTypeVar;
};
那么如何初始化呢?
对于第一种存在两种初始化方式:
template <> int TestTemStatic<int/* any other type */>::knownTypeVar=2;//具化定义,给出T类型,同时定义num,T可以是其他任意特定类型。
template <typename T> int TestTemStatic<T>::knownTypeVar=50;//范化定义,定义num时不需要知道T的类型
如果你想给特定类型T的静态成员一个特定的值,使用第一种方式。如果你希望对任意类型T的都有一份通用的值,请使用第二种方式。
两种初始化可以并存,对于特定类型T如果存在具化定义,则以具化定义为准。并且