如果我有一个 C++ 模板,我有两个选择(没有export关键字)来链接它们:
具有内联的包含模型 - 即在 .h 文件中包含定义和声明。这内联了所有函数并创建了一个大单元(虽然它很懒)
没有内联的包含模型 - 即包含此 .h 文件的内容:
代码:
// templateinstantiations.cpp
#include "array.cpp"
template class array <int, 50>; // explicit instantiation
每次我想使用模板时,都要小心地显式实例化我需要的每种类型(这可能很无聊且难以维护)
我的问题是:我知道过度内联函数可能会导致内存抖动和性能损失。此外,在上述两种情况下,编译时间似乎都很长。第一种和第二种方法之间的权衡是什么?是否有选择第一个而不是第二个的标准,或者我只需要尝试它们并“计时”它们?