对象初始化中是否允许指向此成员的指针?

Are pointer to a member of this allowed in object initialization?

本文关键字:成员 指针 许指 初始化 是否 对象      更新时间:2023-10-16

从聚合初始化,设置指向结构成员的指针,是以下代码合法的:

struct S 
{
int a;
int* aptr;
};
S s = { 3, &s.a };

引用最新的标准草案:

[basic.scope.pdecl]

名称的声明点紧接在其完整声明符 ([dcl.decl]( 之后和初始值设定项(如果有(之前,除非下面另有说明。

所以,是的。标识符s已声明,因此可以在其初始化器中使用。

请注意,s的值在初始化之前不能使用。示例中未使用该值,因此这不是问题。

我也很好奇当 S 的两个成员顺序相反时,类似的代码是否有效

成员的顺序无关紧要。