我只能为一个模板使用`-fno-implicit-templates`功能吗?

时间:2014-03-31 18:01:58

标签: c++ templates instantiation

是否可以禁止隐式实例化,例如-fno-implicit-templates,但仅限于一个模板?

我有一个隐式实例化不完整模板的问题,导致编译失败(部分实现隐藏在源文件中,我不想在其他TU中使用它)。 -fno-implicit-templates解决了这个问题,但是使用STL和其他模板时出现了问题。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用显式模板实例化。在头文件中放置显式模板实例化声明extern template class TemplateClass<ArgumentsSet>;(其中ArgumentsSet是一个TemplateClass参数集,您希望避免在代码中隐式实例化)(您可以将这样的指令放在几个参数设置如果你想)。还要在源文件中放置显式模板实例化定义template class TemplateClass<ArgumentsSet>;,以便在此翻译单元中为TemplateClass显式实例化ArgumentsSet