将C++标头模板编译为共享库

sor*_*h-r 4 c++ templates shared-libraries

我正在研究模板类的代码库.它只是标题(没有.cpp文件).我想隐藏实现并提供一个共享库以及一些仅包含声明的头文件.不幸的是听起来没有意义.由于没有编译代码,所以在这样的共享库中会有什么?尝试在编译后从头中删除定义,会导致未定义的引用.有没有办法强制编译器在dll或共享库中发送对象而无需显式实例化模板类?

pmr*_*pmr 5

不,在可预见的未来,没有也不会有办法做到这一点.提供模板C++代码的唯一方法是仅作为头文件.模块可能会改变这种情况,但在库完成之前不太可能发生这种情况.

您可以尝试的是分裂为实现并显式实例化所有可能的用例.然后你发布的库将不会使用任何其他类型然后实例化的库,并将显着减少模板带来的好处.