数组和类聚合类型的统一初始化

时间:2013-12-25 02:29:26

标签: c++ c++11 initialization aggregate

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};

然后说:

  

允许在具有多个成员的聚合体上进行支撑   考虑和拒绝,因为它似乎可能导致困难   解析已经格式良好的程序。

有没有人知道在使这种语法成为可能方面是否有任何进展,如果没有,那么不允许它的原因是什么?

1 个答案:

答案 0 :(得分:3)

论文由布里斯托尔会议的进化工作组审议,结论是目前的限制是故意的。我不是这次讨论的一部分,因此对细节知之甚少。似乎还注意到,即使提出的提案也可能改变现有的有效代码,尽管没有给出任何例子。据我所知,该提案未被追究:

  

没有建议继续前进,被认为是NAD。