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

7.2.2 整个类实例化

编译器通常是分别实例化各个模板类成员,因此,编译器仅实例化程序中使用的成员。仅用于调试器的方法会因此而不正常地实例化。

有两种方法确保调试成员可用于调试器。

ISO C++ 标准允许开发人员编写模板类,因为并不是所有成员都可以使用模板参数。只要非法成员未被实例化,程序就仍然完好。ISO C++ 标准库使用了这种技术。但是,-template=wholeclass 选项会实例化所有成员,因此不能用于此类使用有问题的模板参数实例化的模板类。