我们正在设计一个新的C++库,并决定采用基于模板的方法以及角落案例的一些特定部分模板专业化。特别是,这将是一个标题专用模板库。将仅头文件模板库编译为共享库?
现在,有些人担心这会导致大量的二进制文件中代码重复,因为这个模板“图书馆”将被编译成使用它(可以说是唯一的那些部分的任何其他共享库或可执行文件被使用)。我仍然认为这不是问题(特别是,编译器甚至可能会将它无法跨越共享库边界的内联内联)。
然而,由于我们知道的有限集合这将被用于类型,是有办法编译这个头到库中,并提供不同的页眉,只有声明,没有别的?请注意,该库不仅必须包含通用实现,还必须包含部分专业化。
你的意思是“有限”还是“有界”?很明显,你在计算机上或者在这个宇宙中所做的任何事情都是有限的,所以这个区别至关重要。 –
我的意思是有限的:我们将需要约8种类型的这些模板的实例化,不再需要。所以我们可以轻松写下一个列表。 – lytenyn
嗯,我不完全确定,你一定要发布实际的头文件,但你可以添加这些类型的显式实例到源文件并编译并在其他地方声明这些模板'extern'。我从来没有尝试过这个,但我认为这应该会产生预期的效果。 –