Oracle Solaris Studio 12.2:C++ 用户指南

7.3.2 静态实例


注 –

-instances=static 选项已过时。没有任何理由再使用 -instances=static,因为 -instances=global 现在提供了静态的所有优点而没有其缺点。早期的编译器中提供了此选项来克服现已不存在的问题。


对于静态实例方法,所有实例都被放置在当前编译单元内。因此,模板在每个重新编译期间重新实例化;这些实例不保存到模板系统信息库。

这种方法的缺点是不遵循语言语义,并且会生成很大的对象和可执行文件。

实例接收静态链接。这些实例在当前编译单元外部是不可视的或不可用的。因此,模板可以在多个目标文件中具有相同的实例化。因为多重实例产生了不必要的大程序,所以对于不可能多重实例化模板的小程序可以使用静态链接。

静态实例的编译速度很快,因此这种方法也适用于修复并继续方式的调试。(请参见《使用 dbx 调试程序》。)


注 –

如果您的程序取决于多个编译单元间的共享模板实例(例如模板类或模板函数的静态数据成员),请勿使用静态实例方法。否则程序会工作不正常。


可使用 -instances=static 编译器选项指定静态实例链接。