相关疑难解决方法(0)

是什么构成了未指定的块范围静态或线程存储持续时间变量的失败初始化?

在回答了这个问题而没有在标准文件中找到令人满意的答案后,我开始疑惑.该标准规定了以下wrt初始化提到的变量:

§6.7 [stmt.dcl] p4

[...]否则这个变量在第一次控制通过其声明时被初始化; 这样的变量在初始化完成后被认为是初始化的.如果通过抛出异常退出初始化,则初始化未完成,因此下次控制进入声明时将再次尝试初始化.

没有提到可能导致初始化被重试的情况,如果除了抛出异常之外的其他任何事情都失败了(longjmp()thead退出,信号等等).

我是否忽略了标准中的任何内容?我一遍又一遍地查看初始化,声明和异常条款,甚至通过快速搜索"静态"来查询CWG缺陷表,但找不到任何相关内容.

这是标准中的一个不明确的(并且作为这样的缺陷)吗?

c++ static-initialization language-lawyer c++11

7
推荐指数
1
解决办法
268
查看次数