【发布时间】:2019-10-02 11:49:29
【问题描述】:
我想用模板类编译一个静态库。我知道这不可能对每种类型都完成,但我知道将使用这个库的程序将只需要几个模板“实例化”(我的意思是,对于几个已知类型)。
有没有办法在库本身内为这些类型手动触发模板类的编译?
【问题讨论】:
-
看看这个link
-
不喜欢重复——它不太清楚,而且答案不能转换为 C++11,因为它是从 2010 年开始的。
我想用模板类编译一个静态库。我知道这不可能对每种类型都完成,但我知道将使用这个库的程序将只需要几个模板“实例化”(我的意思是,对于几个已知类型)。
有没有办法在库本身内为这些类型手动触发模板类的编译?
【问题讨论】:
是的:您需要explicit template instantiation。
在您的标题中:
extern template struct YourClass<Foo>;
在您的 .cpp 文件中:
template struct YourClass<Foo>;
请注意,如果您确定用户不需要任何其他专业化,您可以隐藏模板定义,因为它们只需要在显式实例化定义中可见。
【讨论】: