C++ 为什么它不是成员变量的重复定义?

C++ 为什么它不是成员变量的重复定义?,c++,standards,C++,Standards,我实现了一个包含静态成员变量的模板,在阅读标准后,在.h文件中定义变量是正确的,但是.h文件包含在multiple.cpp中,那么为什么静态变量不是multiple definition呢 标准中有关于这方面的参考资料吗 N3376中的14.5.1.3 可以在命名空间中提供静态数据成员的定义 包含静态成员的类模板定义的范围。 [示例: 模板类X{static ts;}; 模板T X::s=0;因为它是一个模板。当实例化静态成员时,将定义它,但允许在多个翻译单元中定义隐式实例化 [basic.de

我实现了一个包含静态成员变量的模板,在阅读标准后,在.h文件中定义变量是正确的,但是.h文件包含在multiple.cpp中,那么为什么静态变量不是multiple definition呢

标准中有关于这方面的参考资料吗

N3376中的14.5.1.3

可以在命名空间中提供静态数据成员的定义 包含静态成员的类模板定义的范围。 [示例:

模板类X{static ts;};


模板T X::s=0;
因为它是一个模板。当实例化静态成员时,将定义它,但允许在多个翻译单元中定义隐式实例化

[basic.def.odr]/6

类类型(第9条)、枚举类型(7.2)、带外部链接的内联函数(7.1.2)、类模板(第14条)、非静态函数模板(14.5.6)、静态数据成员可以有多个定义 类模板的成员函数(14.5.1.1),或用于 如果每个定义 出现在不同的翻译单元中,前提是定义满足以下要求