对于局部静态变量的初始化,处理起来相对简单。但如果是全局变量内部模板类的初始化,就会遇到编译不通过的问题。

例如,下面的写法:

这样会导致编译错误。改为以下写法:

虽然能够编译通过,但构造函数(ctor)仍然没有被初始化,之后对该引用的访问依然会引发编译错误——提示"未找到符号 XXX"。

由于全局变量的析构顺序在不同编译器下存在差异,使用局部静态变量更为安全。其唯一的缺陷是第一次调用时会有少量的额外开销。