是否可以像 -fno-implicit-templates
那样禁止隐式实例化,但只针对一个模板?
我有一个不完整模板的隐式实例化问题,导致编译失败(部分实现隐藏在源文件中,我不想在其他TU中有它)。 -fno-implicit-templates
解决了这个问题,但代价是使用 STL 和其他模板会出现问题。
最佳答案
您可以尝试使用显式模板实例化。放置显式模板实例化声明extern template class TemplateClass<ArgumentsSet>;
(其中 ArgumentsSet
是一个 TemplateClass
参数集,您希望避免在代码中对其进行隐式实例化)在头文件中(如果需要,您可以为多个参数集放置这样的指令)。也放显式模板实例化定义template class TemplateClass<ArgumentsSet>;
在您的源文件中显式实例化 TemplateClass
对于 ArgumentsSet
在这个翻译单元中。
关于c++ - 我可以只对一个模板使用 `-fno-implicit-templates` 功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768865/