【发布时间】:2017-08-23 08:52:14
【问题描述】:
有人可以请我指出 C++ 标准的相应段落,或者如果我取消注释文本 ({123}),也许可以提供一些解释为什么我的代码无法编译?
一般来说,我理解使用默认成员初始化和通过初始化列表进行初始化有什么问题,但我无法指出确切的原因。
enum class MY: int
{
A = 1
};
struct abc
{
int a;/*{123};*/ //compilation failed if uncommented
MY m;
};
abc a = {1, MY::A};
编译器错误,如果文本没有注释:
错误:无法将“{1, A}”从“
”转换为“abc”
【问题讨论】:
-
在 C++11 中,NSDMI 的使用使您的结构不是聚合。在 C++14 中,这已经改变了 iirc
-
是的,所以如果你用
-std=c++14编译,你就没事了。 -
如果是这样的话,它值得另一个答案!