【发布时间】:2017-05-03 22:09:42
【问题描述】:
已定义
struct A {
int a,b;
};
struct B {
A a;
int b;
};
以下初始化是显而易见的:
B b1 = { { 1 } }; // initializes b1.a.a
B b2 = { { 1, 2 } }; // initializes b1.a.a, b1.a.b
B b3 = { { 1 }, 2 }; // initializes b1.a.a, b1.b
但令我惊讶的是 VC++ 2013 也允许这些初始化而没有任何警告:
B b4 = { 1 }; // initializes b4.a.a
B b5 = { 1, 2 }; // initializes b5.a.a, b5.a.b
B b6 = { 1, 2, 3 }; // initializes b6.a.a, b6.a.b, b6.b
嵌套结构/类的平面初始化列表是标准 C++ 吗?
【问题讨论】:
-
仅供参考:在您的所有示例中,所有元素都已初始化。未指定的初始化为 0。
-
是的,这来自 C.
标签: c++ c++11 visual-c++ visual-studio-2013