n3526 proposes a slight relaxation of the rules for eliding braces from aggregate initialization in order to make initialization of arrays and class aggregates more uniform.
它允许编译以下代码:
struct S {
int x[2][2];
};
struct A {
S s;
};
// Then the following declarations are all equivalent
A a1 = {{{{1, 2}, {3, 4}}}};
A a2 = {{{1, 2}, {3, 4}}};
A a3 = {{1, 2}, {3, 4}};
A a4 = {1, 2, 3, 4};
然后说:
允许在具有多个成员的聚合体上进行支撑 考虑和拒绝,因为它似乎可能导致困难 解析已经格式良好的程序。
有没有人知道在使这种语法成为可能方面是否有任何进展,如果没有,那么不允许它的原因是什么?
答案 0 :(得分:3)
论文由布里斯托尔会议的进化工作组审议,结论是目前的限制是故意的。我不是这次讨论的一部分,因此对细节知之甚少。似乎还注意到,即使提出的提案也可能改变现有的有效代码,尽管没有给出任何例子。据我所知,该提案未被追究:
没有建议继续前进,被认为是NAD。