根据cppref,多个翻译单元中函数的身份特征inline
如下:
...
2)它在每个翻译单元中具有相同的地址。
3)所有函数定义中的函数局部静态对象在所有翻译单元之间共享(它们都引用在一个翻译单元中定义的同一个对象)
...
简单地说,隐含了单例身份。
我想知道这是否同样适用于没有说明符的函数模板实例化inline
。
根据cppref,多个翻译单元中函数的身份特征inline
如下:
...
2)它在每个翻译单元中具有相同的地址。
3)所有函数定义中的函数局部静态对象在所有翻译单元之间共享(它们都引用在一个翻译单元中定义的同一个对象)
...
简单地说,隐含了单例身份。
我想知道这是否同样适用于没有说明符的函数模板实例化inline
。
我想知道这是否同样适用于没有 inline 说明符的函数模板实例化。
这同样适用于模板。见§3.2 一个定义规则:
- 类类型(第 9 条)、枚举类型(7.2)、带有外部链接的内联函数(7.1.2)、类模板(第 14 条)、非静态函数模板(14.5.6)可以有多个定义、类模板的静态数据成员 (14.5.1.3)、类模板的成员函数 (14.5.1.1) 或在程序中未指定某些模板参数的模板特化 (14.7, 14.5.5),前提是每个定义出现在不同的翻译单元中,并且定义满足以下要求。...如果 D 是一个模板并且在多个翻译单元中定义,那么前面的要求既适用于模板定义(14.6.3)中使用的模板封闭范围的名称,也适用于实例化点的依赖名称(14.6.2)。如果 D 的定义满足所有这些要求,那么程序的行为就好像有一个 D的定义。如果 D 的定义不满足这些要求,那么行为是未定义的。