繁体   English   中英

C ++ 11标准中实例化单元的含义是什么?

[英]What's the meaning of instantiation unit in C++11 standard?

C ++11§2.2翻译阶段,第8个短语。 翻译的翻译单元和实例化单元如下组合。 “实例化单元”的确切含义是什么?

实例化单元是模板实例化(隐式和显式)。

例如,对于此模板:

template < typename T >
struct A
{
};

这个 :

template class A<int>;

添加上面的模板声明和定义,是一个实例化单元。

自C ++ 98标准以来,其含义没有改变,因为这是原始的C ++编译模型 - 实例化单元是单独的文件,其中存储了TU中编译器遇到的模板实例化,因此每个模板实例化仅编译一次每个节目。

要在他们的-qtemplateregistry选项上引用IBM编译器文档

当编译单元第一次实例化新实例时,编译器会创建此实例并将记录保存在注册表文件中。 [...]当另一个编译单元引用相同的实例化并使用与先前编译单元中相同的注册表文件时,将不再实例化此实例。 因此,仅为整个程序生成一个副本。

Oracle有关C ++模板编译模型的更广泛的文档

GCC没有自动存储库,但文档似乎暗示通过使用-frepo进行编译并运行collect2 可以获得类似的结果

暂无
暂无

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

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