Visual Studio 2010 是否执行零初始化?

Does Visual Studio 2010 perform zero-initialization?

C++11 允许使用表达式 T(); (http://en.cppreference.com/w/cpp/language/zero_initialization) 将值初始化为零。 Visual Studio 2010 是否支持此功能?我 运行 比较了 T x;T x = T(); 的一些实验,我得出结论,后一种情况确实将值初始化为零,但我不确定我是否可以依赖它。

VS2010 文档中有提到零初始化吗? VS2010 Initializers 页面 (https://msdn.microsoft.com/en-us/library/w7wd1177(v=vs.100).aspx) does not mention it, unlike pages for later versions, e.g., VS2013 (https://msdn.microsoft.com/en-us/library/w7wd1177(v=vs.120).aspx).

这是该语言从一开始就存在的基本行为。它没有在 C++11 中引入(在该 cppreference 页面上,请注意 "since C++11" 仅与使用 (2) 下的第三个示例对齐;当然它不是很清晰)。

如果 Tint 并且 T() 没有导致临时值 int 为零(这是 zero-initialisation via value-initialisation),编译器会有一个非常严重的错误。我确定 Visual Studio 没有这个错误。

至于证明,VS2010 文档似乎没有在标准提到它的同一位置(即在 explicit type conversion 表达式部分下)提到此行为。当然,随着时间的推移,他们的文档可能 changed/evolved/become 更加详尽,尤其是 C++ 本身添加了越来越多的初始化方法。