MSVC 2010 是符合 C++11 标准的编译器吗

Is MSVC 2010 a C++11-standard-compliant compiler

我正要使用 google test 对我们基于 MSVC 2010 的项目进行单元测试,但是 gtest v1.10.x 的 README.md 文件 分支(当前最新)在 Build Requirements 部分提到了 C++11 标准兼容的编译器

MSVC 2010 也是一个符合 C++11 标准的编译器,或者我应该使用 gtest v1.7.0,其中提到 Microsoft Windows 要求 部分中的 Visual C++ 7.1 或更高版本?

不,MSVC 2010 不完全符合 C++11。但是,它确实提供了许多 C++11 功能。您可以尝试用它编译最新的 google_test,或者只使用旧版本。

2017 年左右,我们遇到了太多使用 MSVC10 和 MSVC11 编译器构建的应用程序的随机崩溃。经过分析,我们确定标准 C++ 库调用是导致崩溃的原因,但我们没有做错任何事情,并且代码编写得非常完美。

经过一番努力调试和研究,我们发现 Microsoft 的 C++11 实现是非标准的且存在错误,并导致了不必要的崩溃。对我们来说,即使是对 condition_variable 的基本 wait_for 调用也会随机崩溃。 Here 是您的此类 MSDN 参考。

我们就此事联系了微软,他们的回复是,

"I'm sorry, but no hotfixes for this bug are available. I strongly recommend upgrading to the latest released version of VS (currently VS 2017 15.4), as we have fixed many bugs in the STL's multithreading machinery over the years."

我们不得不将所有项目移至 VS2017(当时最新的一个)以消除崩溃。我也不建议您使用那些有问题的编译器。

最好坚持使用旧编译器 (VC8/VC9) 或移至最新编译器 (VS2019)。迁移到 VS2017 后我们没有遇到任何问题。