#pragma do_not_instantiate(仅限 C++)

适用的调用

表 1. 接受给定编译指示的调用
编译指示 (pragma) xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
#pragma do_not_instantiate      
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

"模板" 控件

用途

阻止对指定的模板声明进行实例化。

您可以使用此编译指示来禁止对提供了定义的模板进行隐式实例化。

语法

读取语法图跳过可视语法图 # pragma do_not_instantiate template_class_name

参数

模板类名
不应实例化的模板类的名称。

使用量

如果您正在手动处理模板实例化 (即,指定了 -qnotempinc-qnotemplateregistry ) ,并且指定的模板实例化已存在于另一个编译单元中,那么使用 #pragma do_not_instantiate 可确保在链接步骤期间不会获取多个符号定义。

C++11

类模板特殊化上的 #pragma do_not_instantiate 被视为模板的显式实例化声明。 此编译指示提供了由 C++11 标准引入的显式实例化声明功能的一部分功能。 仅出于兼容性目的而提供,不建议使用。 新应用程序应改为使用显式实例化声明。

C++11

您还可以使用 -qtmplinst 选项来禁止对多个编译单元的模板声明进行隐式实例化。 请参阅 -qtmplinst (仅限 C + +)

示例

下面显示了 pragma 的用法:
#pragma do_not_instantiate Stack < int >

相关信息