如果我有一个结构
SomeStruct
{
double y;
double x;
};
我在某处初始化它
SomeStruct s{1,2}; //y=1 x=2
那么如果我将结构重新排序为
SomeStruct
{
double x;
double y;
double z;
};
因为现在SomeStruct s{1,2}
意味着 x=1, y=2, z=0
编辑:提出的一个论点是构造函数具有相同的问题,这是真的,但是您通常可以在那里看到参数名称和顺序 - 如果使用任何现代 IDE,则更清楚。
我从未见过有人提到过这一点,但似乎只有在确定永远不会更改数据布局的情况下才能安全地使用这样的聚合初始化。那将是罕见的情况,那么是否有“永远不要在非同质结构上使用聚合初始化”的潜规则?