这受此post的启发, 不支持非平凡的指定初始值设定项。
我已经读过this post,并且有一些答案声称已经支持此功能。
但是,使用C ++ 17和以下代码:
struct s {
int a[2];
s (int b): a{[1]=b} {} // error
};
s foo(1);
我仍然收到错误:
抱歉,未实现:非平凡指定 不支持初始化程序
s (int b): a{[1]=b} {}
我认为此功能确实很有帮助。
所以我的问题:
是否有计划为将来的C ++版本(在C ++ 17之后)提供支持?
COMPILER
GNU C ++ 17-选中wandbox
答案 0 :(得分:4)
为将指定的初始值设定项添加到C ++ 20(p0329r0)而采取的建议是有意限制的(请注意,作为一种官方语言功能,它特别是C ++ 20功能-但是gcc和clang支持基本上已经有很长一段时间了)
C ++是比C更复杂的语言,我们还有很多事情要担心。因此,我们得到的规则是您不能混合使用指示符和值,指示符按声明顺序出现,是唯一的,并且既不是嵌套索引也不是数组索引。就这样,这已经是一个非常有用的语言功能。
如果不,为什么不支持它的最大障碍是什么
可能是动机。我们真的需要那种语法吗?这是需要解决的问题吗?不利的一面可能是解析模棱两可-您也许能够构造看起来很像lambda的数组索引初始化器。但是,如果您认为这是完全值得的,则可以编写建议。