首页 > 解决方案 > C++模板编译

问题描述

我想用模板类编译一个静态库。我知道这不可能对每种类型都完成,但我知道将使用这个库的程序将只需要几个模板“实例化”(我的意思是,对于一些已知类型)。

有没有办法在库本身中为这些类型手动触发模板类的编译?

标签: c++templates

解决方案


是的:您需要一个明确的模板实例化

在您的标题中:

extern template struct YourClass<Foo>;

在您的 .cpp 文件中:

template struct YourClass<Foo>;

请注意,如果您确定用户不需要任何其他专业化,您可以隐藏模板定义,因为它们只需要在显式实例化定义中可见。


推荐阅读