【发布时间】:2018-08-02 13:49:28
【问题描述】:
以下代码是否有效,例如不会带来未定义的行为?
struct S
{
int i = s.i;
static S s;
};
S S::s;
int main()
{
S a; // a.i = 0
S::s.i = 42;
S b; // b.i = 42
}
据我所知,所有具有静态存储持续时间的变量都是零初始化的。因此s.i 是0 上的S::s 创建,一切都很好。但也许我错过了什么。
【问题讨论】:
-
我认为你是对的,这段代码是正确的。
-
无论如何我都会避免有问题的代码
-
@Slava 大部分带有标签language-lawyer 的代码都是有问题的
标签: c++ initialization language-lawyer static-members in-class-initialization