在当前的C ++标准中,段落[basic.start.static] p.3表示(强调我的):
允许实现执行a的初始化 变量,静态或线程存储持续时间为静态 初始化即使不需要进行这样的初始化也是如此 静态地,只要
的动态版本 初始化不会更改静态的任何其他对象的值 或初始化之前的线程存储持续时间,
的 静态版本的初始化产生相同的值 由动态生成的初始化变量 如果不需要初始化所有变量,则初始化 静态地动态初始化。 [...]
为什么第一个条件如此具体?如果初始化的动态版本在初始化之后改变了静态或线程存储持续时间的其他对象的值,为什么会这样呢?为什么动态初始化会产生其他副作用呢?