在哪里定义模板类的静态const成员变量

Sam*_*rsa 3 c++ templates

根据这个问题的 答案:

According to the standards you must define i (这是一个静态const成员) outside of the class definition

...但是如果我为模板类的静态const成员变量执行此操作本身是通用的,那么我会得到链接错误(类似于在模板代码位于单独的编译单元中时获取链接错误).如果我在标题中定义它们,链接错误就会消失(我问是否可以generic这个问题的第一个位置定义它们).

我在做什么,安全吗?下面是标头中的静态const成员变量的定义之一.

  template<typename T, unsigned int T_Size> 
  const Vector<T, T_Size> Vector<T, T_Size>::Zero = Vector<T, T_Size>(0);
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 6

必须在头文件中定义类模板的静态数据成员.只有在定义显式专用模板的静态成员时,才必须在实现文件中定义它们.

换句话说,该规则与类模板的成员函数相同.