繁体   English   中英

多个翻译单元中函数模板实例化的标识

[英]Identity of function template instantiation in multiple translation units

根据cppref ,多个翻译单元中inline函数的身份特征如下:

...

2)它在每个翻译单元中具有相同的地址。

3) 所有函数定义中的函数局部静态对象在所有翻译单元之间共享(它们都指在一个翻译单元中定义的同一个对象)

...

简单地说,隐含了单例身份。

我想知道这是否同样适用于没有inline说明符的函数模板实例化。

我想知道这是否同样适用于没有内联说明符的函数模板实例化。

这同样适用于模板。 参见 §3.2 一个定义规则:

  1. 类类型(第 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 的定义不满足这些要求,则该行为是未定义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM