gpt4 book ai didi

c++ - 将仅 header 模板库编译为共享库?

转载 作者:可可西里 更新时间:2023-11-01 16:37:05 24 4
gpt4 key购买 nike

我们正在设计一个新的 C++ 库,并决定采用基于模板的方法以及一些针对特殊情况的特定部分模板特化。特别是,这将是一个只有标题的模板库

现在,有人担心这会导致二进制文件中出现大量代码重复,因为此模板“库”将被编译到使用它的任何其他共享库或可执行文件中(可以说只有那些被使用的部分)。我仍然认为这不是问题(特别是,编译器甚至可能内联它不能跨共享库边界的东西)。

但是,由于我们知道这将用于有限的类型集,是否有办法将此 header 编译成一个库,并提供一个仅包含声明而没有其他任何内容的不同 header ? 请注意,该库不仅必须包含通用实现,还必须包含部分特化..

最佳答案

是的。您可以做的是使用编译器的显式模板实例化语法在 CPP 文件中显式实例化模板。下面是如何在 VC++ 中使用显式实例化:http://msdn.microsoft.com/en-us/library/by56e477(v=VS.100).aspx . G++ 具有类似的功能:http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html#Template-Instantiation .

请注意,C++11 引入了用于显式实例化的标准语法,如 [14.7.2] FDIS 的显式实例化所述:

The syntax for explicit instantiation is:

explicit-instantiation:

externopt template declaration

关于c++ - 将仅 header 模板库编译为共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com