嵌套结构的值初始化无法正常工作
Value initialization of nested structs does not work properly
我有这个结构定义:
struct inner
{
int i;
std::string str;
};
struct outer
{
inner member[32];
};
现在我想创建一个值初始化的outer
实例,所以我编写
outer o = {};
对于GCC,这很好:所有inner.i
都为零,所有inner.str
都为空。但在VS2013上,只有inner.str
是空的;所有CCD_ 5都包含垃圾,即未正确初始化。
在没有std::string
成员的情况下,inner.i
的零初始化与VS2013一起工作。
标准对此有何规定?我一直假设{}
初始化所有内容,要么通过清零,要么通过调用默认构造函数。我错了吗?还是这是VS2013中一个非常糟糕的错误?
这只是聚合初始化:
如果初始化器子句的数量小于成员的数量,或者初始化器列表完全为空,则如果在类定义中提供,则剩余成员将由其默认初始化器初始化,否则(由于C++14)将由执行值初始化的空列表初始化。
值初始化意味着member
的每个元素都被值初始化,这反过来意味着i
应该为零。
是的,这是一个VS2013错误。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- C++程序已停止工作-求解常微分方程