我正在研究一个我需要保证在各种翻译单元中的某些静态对象之前初始化(构造)的全局静态 std::vector 的情况。
当我查找如何处理这个问题时,我遇到了两个建议的解决方案:
- 在全局函数中有一个静态对象,用于代替全局静态对象。
- 施瓦茨计数器
我对使用 Schwarz 计数器的担忧是 std::vector 将被初始化两次。从此链接中,我得到“确保全局对象仅在首次使用之前初始化一次的有用技术是保持对使用它的翻译单元数量的计数。”
全局只初始化一次是如何工作的?根据我的推理,它将被初始化两次。一次是在静态初始化的正常过程中,一次是在初始化 Schwarz 计数器的第一个实例时。
在相关说明中,初始化代码在 Schwarz 计数器构造函数中会是什么样子?我只能想到使用新的展示位置。