c++ - 我可以只对一个模板使用 `-fno-implicit-templates` 功能吗?

标签 c++ templates instantiation

是否可以像 -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/

相关文章:

c++ - 链接时如何跟踪库的需求?

c++ - IDWriteFactory::GetSystemFontCollection 不会提供字体变体

c++ - 访问使用不同模板参数实例化的模板类的成员

java - 如何检查对象是否已经创建?

c++ - 如何使用 SFINAE 从 end() 方法返回 (const_)iterator

c++ - Boost 线程和 UPX 压缩 == 不是有效的 win32 应用程序?

c++ - 有条件地启用一个子类型(类似于enable_if来启用功能)

javascript - Titanium:如何获取从 .js 创建的对象或 native 对象

c++ - 在 C++ 中创建多个动态分配的对象

java - 防止其他类实例化类